Repository navigation
docs: move evidence out of the tree, prune orphan dev docs, give ADRs a lifecycle (#1625) - #1628
Conversation
… a lifecycle (#1625) Method and hashes live in the repo; results live on the issue. Remove docs/development/evidence (2,525 files, 342,843 lines) and the four docs/development/*-evidence.json files, linking every file with its SHA-256 from its originating issue at the base-commit permalink. Move the three schemas CI validates against beside their validators and the rung receipts three harness tests analyse into benchmarks/tests/fixtures. Dispose of the 41 unreferenced development docs (10 deleted, 28 folded, 6 linked), collapse the seven bazel-migration pages into one, add a revisit_when trigger to all 47 ADRs and make adr-index.py require and render it, merge docs/guides into docs/guide with a site redirect, and add scripts/ci/docs-tree-policy.py to the Repository Policy job so evidence-shaped or oversize files under docs/ and unreferenced development docs fail CI. State the rule in AGENTS.md, CONTRIBUTING.md, and the contributor page. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: CurateLabs/graphforge/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
#1628 moved g500-ladder-qualification.schema.json from docs/ into benchmarks/schemas/, beside its only validator. Every other document there carries a top-level graphforge-*-schema/N identity, and discover_fixtures requires one, so the benchmark smoke and test_smoke have failed since the move. Nothing ran them. Add the identity rather than relax the rule; JSON Schema 2020-12 treats the extra keyword as an annotation, so validation is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…abs#1679) (CurateLabs#1681) * test(bench): run the measurement tool tests under unittest (CurateLabs#1679) test_measurement_tools imported pytest, which the benchmark project's locked environment does not provide, so it could not run beside the other harness modules. Express the same 16 cases as unittest subtests. Close stdin for every tool invocation: the stub sudo reads stdin, and the fio case hung whenever the runner inherited an open one. pytest had been masking that by closing stdin itself. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(bench): give the G500 ladder schema its fixture identity (CurateLabs#1679) CurateLabs#1628 moved g500-ladder-qualification.schema.json from docs/ into benchmarks/schemas/, beside its only validator. Every other document there carries a top-level graphforge-*-schema/N identity, and discover_fixtures requires one, so the benchmark smoke and test_smoke have failed since the move. Nothing ran them. Add the identity rather than relax the rule; JSON Schema 2020-12 treats the extra keyword as an annotation, so validation is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci(bench): run every benchmark harness module in the CI Gate (CurateLabs#1679) Only eight of the 41 benchmarks/tests modules ran in CI, from an explicit list in the Rust Tests job. Make benchmarks/tests a package and run the whole tree with unittest discovery in a Benchmark Harness Tests job, so a new module runs without being wired anywhere. The GDC suites build Rust runners against graphforge-api, so the job follows the Rust test gate. It runs beside Rust Tests instead of lengthening the CI Gate's critical path. The CI storage policy now requires that lane to run discovery from benchmarks/, follow the Rust test gate, and feed CI Gate, and it requires every test_*.py to be reachable through packages. Negative fixtures cover each of these. The benchmark smoke target uses the same package discovery, which stops loading modules twice under two names. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(ci): pin benchmark edits to the harness lane's gate (CurateLabs#1679) Harness, test and schema edits under benchmarks/ enable rust_tests, which the Benchmark Harness Tests lane follows. Now that benchmarks/tests is a package, ruff sorts its imports as first-party, so regroup them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(bench): take the host-run scratch root from the temporary root (CurateLabs#1679) test_progressive_host_run defaulted its scratch parent to /home/ubuntu/graphforge-ladder-test, a path on one development host. On a CI runner, setUpModule and 13 native ladder controller tests failed with PermissionError the first time the suite ran there. Default to a directory under the temporary root instead. scripts/test_environment.py checks that root is native storage and exports it in CI. GF_LADDER_TEST_ROOT still overrides, and the retained evidence root stays untouched. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(bench): let the native ladder controller tests create their scratch root (CurateLabs#1679) test_native_ladder_controller imported WORK_PARENT from test_progressive_host_run but not the setUpModule that creates it, so it passed only when that module ran first or a previous run had left the directory behind. Discovery runs it first, and on a fresh CI runner 13 tests failed with FileNotFoundError. Share both module fixtures, which also extends the top-level leak check to this module. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Closes #1625.
What changed
Method and hashes stay in the repo; results live on the issue. Every evidence file under
docs/development/is removed from the tree and linked, with its SHA-256, from the issue that produced it (permalinks on29a7b34ebe44, the base of this PR). Schema files that CI validates against move beside their validators, and the receipts three harness tests read as inputs become test fixtures.29a7b34e)docs/tracked files / linesdocs/development/files / linesdocs/development/evidence/files / linesdocs/development/*.mddocs/development/*.mdrevisit_whendocs/development/shrinks 24x. The issue was measured on an older main (231 evidence files); seven spike dispositions since (#1448, #1506, #1509, #1585, #1600, #1607, #1584) had added ~2,300 more files, which is the growth the new check stops.1. Evidence out of the tree
docs/development/evidence/**(2,525 files) and the fourdocs/development/*-evidence.jsonfiles are deleted. A comment on each of the 54 originating issues lists every removed file with its permalink and SHA-256 (table below).g500-certification.schema.json,fly-filesystem-qualification.schema.json→scripts/ci/schemas/;g500-ladder-qualification.schema.json→benchmarks/schemas/. All six readers updated; their tests pass.s*.jsonreceipts, the two research(storage): attribute remaining ingestion cost after shaping repair #1282 reports and the perf(storage): diagnose and resolve lifecycle runtime scaling threatening S25/S26 #1279 baseline thattest_lifecycle_runtime,test_ingestion_attributionandtest_parquet_root_1286analyse move tobenchmarks/tests/fixtures/rungs/; the receiptinclude_str!'d by the certify runner's snapshot-contract test moves tobenchmarks/runners/certify/fixtures/. Those tests pass unchanged.test_repository_archives_contain_every_manifest_payloadis removed: its subject, ladder archives staged inside the repo, no longer exists by policy. Ladder retention (make -C benchmarks retain-ladder-evidence) now targets an out-of-tree archive whose path and manifest digest go on the citing issue;benchmarks/README.md,perf-g500-ladder.md, the Makefile and the module docstring say so. The.gitignoreexception forcontroller-summary.logis dropped.bazel-migration-evidence/{perf-sample,ci-gate-ruleset-19988544}.jsonare CI inputs, not evidence; they move totools/bazel/migration-evidence/(test.yml, both scripts, classifier updated).docs/, two Rust doc comments andbenchmarks/README.mdnow points at the permalink (73 references, 16 files).make bench-adjacency-200m/bench-file-backed-128mwrite their evidence tobuild/instead ofdocs/development/.2. The 41 unreferenced development docs
QUICKSTART_V0.2.md,documentation-update-summary.md,phase-1a-completion-report.md,testing-setup-complete.md,v0.4-revised-plan.md,tck_baseline_analysis_v0.3.md,perf-v038-to-v039-delta.md,perf-baseline-findings-v0.3.9.md(referenced only by the previous),parser-performance-analysis.md,executor-kernel-audit.md(audit table for the long-finished issue 1026)m4-disposition-*.md→m4-algorithm-dispositions.md, linked fromm4-exit-evidence.mdperf-delta-stepping-539.md→execution-resource-policy.md(new #539 section);ir-identity-wire.md→book/architecture/ast-and-planning.md(IR 1.0.0 identity wire contract)stage-error-contract.md← ADR 0035 andast-and-planning.md;parser-api-boundary.md←ast-and-planning.md;fly-filesystem-qualification.md←g500-certification.md;ingest-region-diagnostics.md←benchmarking.md;v0.5.0-release-operator-runbook.md←release-process.md(historical);codecov-integration.md←testing.md3. Bazel migration
Seven
bazel-migration-*.mdpages collapse intodocs/development/bazel-migration.md(sections: orchestration, ledger, baseline, parity, cache gates, cutover, AC evidence map).bazel-migration-ledger-check.pyandbazel-cache-perf.pyread the new page; the change classifier and its test are updated; all inbound links repointed. #1618 decides whether the page survives.4. ADR lifecycle
Every one of the 47 ADRs carries
status,superseded_byand a newrevisit_whentrigger in frontmatter.scripts/ci/adr-index.pyrefuses a record without one and renders it as a Revisit when column in the generateddocs/engineering/adrs/README.mdlog (two new mutation tests). ADR 0046 already carried per-row triggers; its frontmatter trigger summarises them.Deprecations: none. The six ADRs with zero inbound references (0027 native runtime boundary, 0028 shared mutation transaction, 0029 lowering snapshot, 0030 portable OCI crate, 0041 branch publication, 0042 contextual research claims) each still govern live code (
graphforge-portable-oci,LoweringSnapshot,MutationTransaction, research branches and claims ingraphforge-api, the native-only binding contract), so none is deprecated. The rule and the Deprecated status are documented indocs/adr/README.mdand the engineering log.5. One guide tree, one publishing surface
docs/guides/{repository-integration,infrastructure-validation}.mdmove todocs/guide/. The site keeps the old URL via an Astro redirect (/guides/repository-integration/→/guide/repository-integration/); the CLI and Python READMEs use the new URL;durability-isolation-gate.pyreads the new path; the previously unpublished infrastructure-validation guide is now allowlisted and in the sidebar. Book/site:docs/was already the only hand-maintained source (the site syncs an allowlist at build time). That is now stated indocs/README.mdand the contributing page; no copy existed to delete.pnpm docs:build(134 pages) andpnpm docs:check-links(20,115 hrefs, 0 broken) pass locally.6. CI
scripts/ci/docs-tree-policy.py checkruns unconditionally in the Repository Policy job: it fails on any non-prose/non-image file underdocs/outsidedocs/contracts/,docs/reference/discovery/,docs/releases/records/and the two generated schema inventories; on any file over 300,000 bytes; and on anydocs/development/*.mdno other tracked text file names.reportprints the census.test-docs-tree-policy.pyproves each rule against a known positive and then checks the real tree.7. Policy text
One paragraph each in
AGENTS.md(Evidence),CONTRIBUTING.md,docs/development/contributing.md, plus two conventions indocs/README.md. Issues #1616, #1617, #1620 and #1623 are amended to say "on the issue" instead of "committed underdocs/development/"; #1618 only referenceddocs/development/bazel*.md(documentation, not evidence) and needed no change.Evidence ledger (by originating issue)
Each issue carries a comment with every file, its permalink and SHA-256.
Verification
🤖 Generated with Claude Code