Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.1.0: initial official release

The first versioned release uses the accepted Phase 6B implementation.
Phase 4, 5, 6A and 6B PRs are merged into `main`, preserving their commit history.
Only the package-version tokens change in product files. Numerical behavior,
input and privacy contracts, report schema 1.3, canonical examples and dependency
requirements retain the dev6 candidate's bytes. Golden metadata and installed
version assertions advance to 0.1.0 without changing expected scientific values.

Release notes, validation, accepted handoff and both consolidated role approvals
are recorded in `RELEASE_0_1_0.md`. The official tag is `v0.1.0`; its exact target
and download checksums are recorded in the GitHub Release. Package-registry
publication is not included. Experimental simulation remains experimental under
the same declared assumptions and limitations.

## 0.1.0.dev6: Phase 6B experimental simulation candidate

Added explicitly supplied constant-source external reopening alongside the
Expand Down
327 changes: 327 additions & 0 deletions HANDOFF_REHEARSAL.md

Large diffs are not rendered by default.

16 changes: 15 additions & 1 deletion MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,21 @@
| Role | Person | Scope | Status |
|---|---|---|---|
| Theory Owner | Xiangyu Guo | Theory meaning, public claims, official release identity | Active |
| Technical Maintainer | Unassigned or acting maintainer | Repository, packaging, CI, implementation | Open |
| Technical Maintainer | Xiangyu Guo | Repository, packaging, CI, implementation | Active (acting; appointed 2026-10-06) |
| Mathematical Reviewer | Unassigned | Formulas, units, expected values | Open |
| Security Reviewer | Unassigned | Privacy, mapping, paths, dependencies | Open |
| Domain Validator | Unassigned | Workflow usefulness and domain limits | Open |

Xiangyu Guo also serves as Theory Owner. This temporary role consolidation is
disclosed under GOVERNANCE_AND_HANDOFF.md section 2. The Theory Owner confirmed
the acting Technical Maintainer appointment on 2026-10-06.

Public GitHub contact: [@DavidWallstructurallaw](https://github.com/DavidWallstructurallaw).
Routine project questions may be raised through
[repository issues](https://github.com/DavidWallstructurallaw/recursive-integrity-toolkit/issues).

On 2026-10-06, Xiangyu Guo accepted HANDOFF_REHEARSAL.md and approved merging
PR #5 and publishing v0.1.0 in both consolidated roles. The release scope is the
reviewed PR head `97ebb1a0323b4daeed7c7cbb465373f7ad34b07b`, its publication
documentation successors, and the resulting merge commit on main. Exact build
and tag identities are retained in RELEASE_0_1_0.md and the GitHub Release.
249 changes: 112 additions & 137 deletions README.md

Large diffs are not rendered by default.

499 changes: 499 additions & 0 deletions RELEASE_0_1_0.md

Large diffs are not rendered by default.

110 changes: 110 additions & 0 deletions SEO_AND_ENTRY_REVIEW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Discovery and entry review

Reviewed: 2026-10-06. Scope: repository entry copy and existing documentation.
No capability, scientific definition, dependency or runtime behavior is added.
This is a task-fit assessment from current primary sources. Search volume,
conversion rates, ranking gains and commercial demand were not measured.

## Recommended position

Audit synthetic training data for missing categories, provenance gaps, and
concentrated ancestry. Lead with the user's dataset question, show a real report
result, and offer one local command before linking detailed contracts.

The strongest audience is a research or data engineer who already exports
synthetic or mixed training data after generation, filtering or reuse. Inputs
need declared representations and, for lineage results, supplied provenance.

## Current demand signals

| Primary source | Observed problem | Existing capability and limit |
| --- | --- | --- |
| [NVIDIA, July 9, 2026](https://developer.nvidia.com/blog/synthetic-data-generation-for-financial-ai-research-with-nvidia-nemo/) | An iterative synthetic-data workflow adjusts category weights and checks duplication across repeated rounds. | Audit category support, frequency and diversity before/after curation. The toolkit's exact-duplicate analysis does not implement NVIDIA's semantic deduplication. |
| [Synthetic Eggs in Many Baskets, ACL Findings, July 2026](https://aclanthology.org/2026.findings-acl.360/) | Experiments investigate how synthetic-source diversity changes fine-tuned model behavior. | Record declared source-type composition and representation-bound diversity. Declared human/synthetic shares do not measure generator diversity or prove model robustness. |
| [RLVR Datasets and Where to Find Them, May 26, 2026 preprint](https://arxiv.org/html/2605.26971v1) | The authors trace many training datasets to shared upstream sources. | Calculate concentration and coverage from supplied parent graphs. This toolkit does not reconstruct missing lineage or implement the paper's semantic matching, leakage detection or performance scoring. |
| [When Sample Selection Bias Precipitates Model Collapse, ICML 2026](https://proceedings.mlr.press/v306/qiao26c.html) | The paper examines tail loss under biased selection in recursive synthetic-data pipelines. | Compare observed category loss and declared-tail diagnostics across ordered exports. Observed loss alone does not identify a cause or predict model failure. |

These sources establish active engineering and research problems. They do not
validate this toolkit, endorse it, or demonstrate its results on those datasets.
The keyword priorities below are an inference from capability fit.

## Search intent and entry placement

| Priority | Search family | Entry that answers it |
| --- | --- | --- |
| Primary | synthetic data audit; synthetic training data audit | README opening, purpose table and installed local demo |
| Primary | dataset diversity; topic coverage; rare-category coverage | Concrete support 8 to 5 example and declared representation explanation |
| Primary | training data provenance; dataset lineage analysis | Missing-row coverage and supplied-root concentration explanation |
| Secondary | compare dataset versions; synthetic dataset comparison | Three-version example, disappearance/reappearance and chronology requirements |
| Supporting | recursive training; model collapse research | Bounded research-use paragraph with explicit unavailable predictions |
| Supporting | exact duplicate diagnostics; local Python data audit | Content-hash boundary, offline runtime and CLI/API links |

Avoid using AI text detection, collapse detector/prevention, semantic quality,
automatic provenance verification, compliance certification or synthetic-data
generation as product promises. Broad data-quality terms require the specific
coverage/provenance/lineage qualifier. Category coverage and exact duplicates
are useful features but do not establish a unique market position.

## Adjacent tools

| Tool and official reference | Documented task | Complementary toolkit use |
| --- | --- | --- |
| [NeMo Curator](https://docs.nvidia.com/nemo/curator/latest/curate-text/process-data/deduplication) | Exact, fuzzy and semantic deduplication | Compare declared category coverage and supplied ancestry around curation steps. No built-in adapter or semantic-deduplication claim. |
| [SDMetrics](https://docs.sdv.dev/sdmetrics/data-metrics/quality) | Statistical synthetic-tabular quality comparisons | Audit ordered dataset snapshots together with supplied lineage. No claim that category coverage is unique. |
| [Evidently](https://docs.evidentlyai.com/metrics/preset_data_drift) | Current/reference data-drift metrics | Inspect explicit snapshots and ancestry without claiming production monitoring or significance testing. |

## Implemented entry changes

- README opens with the concrete audit job and common questions.
- The first example shows inspectable results and links the independent oracle.
- A workflow table routes users to version comparison, shared ancestry or simulation.
- Own-data guidance names canonical inputs and links sample records/configuration.
- Detailed commands, Python examples, historical timings and caveats are retained
in `docs/getting_started.md` with corrected relative links.
- Active CLI/data/report guides are corrected where they still described dev5,
schema 1.2, single-pair-only CLI behavior or unopened simulation fields.
Historical evidence and schema-family introduction dates remain unchanged.

The README is also the package long description. Its change requires refreshed
wheel/sdist metadata and scoped installed checks before those new bytes can be
used for publication. Existing full runtime evidence retains its original source
identity; see `RELEASE_0_1_0.md` for the recorded verification scope.

## Repository metadata applied, 2026-10-06

Before this update, GitHub About read:

> An auditable, local-first research toolkit for analyzing recursive closure risk in synthetic-data training pipelines.

The repository previously had no topics. On 2026-10-06, the user authorized
browser editing and confirmed the acting Technical Maintainer role. The following
description and eleven topics were saved through the repository About editor;
the saved UI and the GitHub repository API both confirm the exact values.
Website and other repository settings were left unchanged.

Applied About description:

> Audit synthetic training data for category loss, provenance gaps and shared ancestry. Local Python CLI with dataset comparisons and JSON/Markdown reports.

Applied topics:

```text
synthetic-data
training-data
data-provenance
data-lineage
dataset-audit
data-quality
dataset-comparison
reproducible-research
machine-learning
python
cli
```

README changes were prepared on `release-0.1.0` in PR #5. They become the default
repository landing page when that PR is merged. Xiangyu Guo is now the acting
Technical Maintainer. On 2026-10-06 the user accepted the handoff and authorized
merging PR #5 and publishing v0.1.0. The release entry now uses the immutable
v0.1.0 tag; refreshed package descriptions and final artifact identities are
recorded in RELEASE_0_1_0.md and the GitHub Release.
4 changes: 2 additions & 2 deletions docs/cli.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CLI

Development version `0.1.0.dev5`, with Phase 6B Step 6 additions, supports `audit`, `validate`, `example`, `version`, `--version` and `--help`. Reports use schema `1.3`. The `recursive-integrity` alias and `python -m recursive_integrity_toolkit` use the same entry point. Help and version do not load analytical dependencies or user inputs.
Version `0.1.0` supports `audit`, `validate`, `example`, `version`, `--version` and `--help`. Reports use schema `1.3`. The `recursive-integrity` alias and `python -m recursive_integrity_toolkit` use the same entry point. Help and version do not load analytical dependencies or user inputs.

## Packaged local example

Expand Down Expand Up @@ -262,4 +262,4 @@ The output directory's existing ancestors must be stable and trusted. Ordinary a

The Python helper `utils.paths.publish_reports(safe_view, output_directory, input_paths=...)` consumes a validated `SafeReportView`; supply every input path, including declared missing inputs. A `complete` result means both exact reports were verified and private staging removed. `E_OUTPUT_PATH_INVALID` maps to exit 2; collision, existing/unsafe target, I/O or cleanup failure maps to 1; rendering/invariant failure maps to 4.

Handled partial failures clean only files still identified as belonging to the attempt. An `incomplete` result discloses remaining or uncertain cleanup. Pair publication is not a filesystem transaction: another reader or process crash may observe one report before the other. See [privacy and filesystem limits](privacy.md) for platform permissions and race/crash boundaries. HTML and simulation orchestration remain deferred. [Step 8](../PHASE_6A_STEP_8.md) records bounded scale preparation; [Phase 6A completion](../PHASE_6A_COMPLETION.md) identifies the exact candidate and actual verification status.
Handled partial failures clean only files still identified as belonging to the attempt. An `incomplete` result discloses remaining or uncertain cleanup. Pair publication is not a filesystem transaction: another reader or process crash may observe one report before the other. See [privacy and filesystem limits](privacy.md) for platform permissions and race/crash boundaries. HTML remains deferred. [Step 8](../PHASE_6A_STEP_8.md) records bounded scale preparation; [Phase 6A completion](../PHASE_6A_COMPLETION.md) identifies the exact candidate and actual verification status.
26 changes: 15 additions & 11 deletions docs/data_schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ Content is read only by explicit LOCAL_REF requests through PR-017 containment a

The bundle returns inventory, records, optional provenance, join evidence, chronology, generation when available, capability classification, mapping evidence, resolved-content identities and diagnostics. It writes no report. Check has_errors independently of maximum level. Content/parent-family failures can coexist with independent valid metadata; fatal structural input errors raise.

Hero input validation qualifies as Level 4 without metric calculation. Model longitudinal remains unavailable. Scenario declarations may establish experimental eligibility without execution. The separately invoked calculation calls below provide approved fields. CLI audit orchestrates these calls and renders reports through the separate report contract. Explicit lineage/ancestry dispatch supports dedicated context inputs; Phase 6A adds ordered selected snapshots, pair schedules and optional shared lineage through the [longitudinal contract](longitudinal_contract.md). `report.schema.json` defines the current schema 1.2 public report. Configuration remains inert during input validation.
Hero input validation qualifies as Level 4 without metric calculation. Model longitudinal remains unavailable. Scenario declarations may establish experimental eligibility without execution. The separately invoked calculation calls below provide approved fields. CLI audit orchestrates these calls and renders reports through the separate report contract. Explicit lineage/ancestry dispatch supports dedicated context inputs; Phase 6A adds ordered selected snapshots, pair schedules and optional shared lineage through the [longitudinal contract](longitudinal_contract.md). `report.schema.json` defines the current schema 1.3 public report. Configuration remains inert during input validation.


## Literal field representations
Expand Down Expand Up @@ -221,19 +221,23 @@ The pair context revalidates chronology and representation declarations. Both si

## CLI and report handoff

The installed `audit` command accepts one primary records file and at most one
`--compare` file. Each audit side must contain exactly one dataset version. The
comparison side is earlier and the primary side later; explicit chronology and
`--state-semantics` must establish the declared pair. The broader `AuditBundle`
input API can validate more comparison sources without automatically analyzing
them. Neither interface infers chronology from filenames or lexical version order.
Ordinary pair `audit` accepts one primary records file and at most one `--compare`
file. Each side contains exactly one dataset version: comparison is earlier and
primary is later, with explicit chronology and compatible declared state meaning.
Series `audit --longitudinal` accepts repeated `--compare` files and requires the
primary version to be latest in the explicitly supplied order. The broader
`AuditBundle` input API validates comparison sources without automatically
analyzing them. No interface infers chronology from filenames or lexical order.

CLI field/content-hash representations use the accepted representation config.
CLI output calculations are unweighted, even if row weights exist. Tail selection
accepts `singleton_count`, `count_at_or_below` and `frequency_at_or_below`; the
Python-only `state_list` and directed state-mapping capabilities are not exposed
through CLI flags. Closed-resampling Python functions require explicit invocation,
and the CLI leaves simulations empty. No CLI command enables `LOCAL_REF` reading.
Python-only `state_list` is not exposed through CLI flags. Directed per-version
state mappings are available through longitudinal configuration, with no dedicated
mapping flag. Closed-resampling Python functions require explicit invocation.
CLI scenarios execute through `audit --simulate --config PATH` or a complete
configuration with `simulation.enabled: true`; ordinary audits leave simulations
empty, and `validate` never samples. No CLI command enables `LOCAL_REF` reading.

`validate` publishes input-only reports. `audit` passes accepted result objects to
`reports.assembly.assemble_report`, selects `privacy_view`, and publishes the
Expand All @@ -243,6 +247,6 @@ separately retained full selected scope. Missing, null, declared unknown, false,
zero and unavailable conclusions remain distinct throughout this handoff.

See [CLI options](cli.md), [public field registry](report_schema.md) and
[privacy limits](privacy.md). The Phase 4 report schema is available both at
[privacy limits](privacy.md). The current report schema is available both at
`schemas/report.schema.json` in the checkout and
`recursive_integrity_toolkit/data/report.schema.json` in installed resources.
Loading