8.7 KiB
Milestone 5 baseline
Status and method
This baseline records the frozen DocForge 1.4.0 release candidate. It is release-candidate
evidence, not a claim that the tag or Forgejo release already exists.
The executable implementation freeze is
d2bb95fe6190e659cf66ba57c78be53b63b53240. Fresh-clone legacy-tag verification was added in
97f3b6b1ae303c972387508557a3d54ea621a702, and the maintained aggregate recovery proofs were
completed in
2b98059b44f4d46b4d4cce776f163e893c647c76. The final tag must point to the later
documentation-bearing commit after its clean fresh-clone gate.
The clean executable candidate used:
- Linux 7.1.3-200.nobara.fc44.x86_64 with glibc 2.43.
- CPython 3.14.6 on x86_64.
- The repository lockfile and offline wheel inputs.
- Maintained repository-native gates rather than a self-hosted DocForge development loop.
No WorldForge, ScrapeStation, legacy repository, production binding, or production MCP configuration was changed.
Quality and compatibility gates
The clean executable candidate passed:
- Ruff formatting and lint, web lint, strict Pyright with zero diagnostics, and compilation.
- 142 contract tests plus 272 subtests.
- 371 complete tests plus 419 subtests.
- Three Playwright and axe accessibility flows covering the manual, portable graph, and live viewer.
- Lockfile, dependency-tree, wheel, source-distribution, generated-reference, and documentation checks.
- 116 compatibility tests plus 263 subtests.
- 29 concurrency tests plus 2 subtests.
- Offline fresh-wheel adoption, exact version identity, reproducible artifact, and secret-scan gates.
- The complete maintained Milestone 0 through Milestone 4 benchmark sequence.
The later maintained recovery proof adds four tests without changing executable product code. Its aggregate recovery gate passes 72 tests plus 62 subtests. A final clean clone must rerun the complete totals from the documentation-bearing commit before tagging.
Compatibility remains additive:
- The
docforgedistribution and imports, CLI, generic MCP executable, MCP tool names, generic project descriptor, result envelopes, legacy one-method adapter, and no-AST behavior remain. - Effective policy version 1, projection policy version 2, descriptor schema version 1, and index schema version 3 remain the current authorities.
- Complete and incremental maintained adapters produce exact primary-graph and Logic equivalence.
Version and artifact identity
One source file owns version 1.4.0. The following executable surfaces reported that exact
version:
docforgedocforge-mcpdocforge-viewer-managerpython -m docforge.reference_mcp
The package metadata also reported docforge 1.4.0, Python 3.12 or newer, the MIT license
expression, the public Forgejo repository, and its issues URL. Generated client bindings include
the version in their validated, hash-bound identity.
Two independent builds from the executable candidate and the same source-date epoch produced identical artifacts:
| Artifact | Bytes | Executable-candidate SHA-256 |
|---|---|---|
| Wheel | 315,811 | c3b9bfa320d00d827154e0f858a6b970459ae0eba6ab14e1cd4f6ba470e33b6a |
| Source distribution | 685,891 | bb5f9333e5fa2365cf0f8ac12d7920122315b4835c9f81b7aa457eb05f1702f5 |
Both contained the license and version authority. These identify the executable freeze only. Documentation changes alter the final release artifacts, so final checksums must be generated from the exact tagged documentation-bearing commit.
The release channel is Forgejo only. PyPI is excluded because the docforge name is occupied by an
unrelated project.
Exact migration evidence
The migration gate archives and executes the real annotated v1.0.0 lineage:
- Tag object:
2d7d306a37da89f1c860c7f0be161c45386acf61. - Peeled commit:
593c173b453236a6872d0a4e88e7a51a67a21cde. - Canonical byte hash before and after:
9fde91b6b08669177d690cdf9f91b162120baee1f7e24b05fec67f56617f286a. - Snapshot hash before and after:
45bef8b0e1a4dac976e096dcf8f9048e1268211cd7f7638cdf99951428ec0500. - Active proposal hash:
2c055dfae45443b4a4d9d4087ef70959e7293beae8d27acb14ffffe52eca7111. - Active proposal file hash:
4658d494b43bd7c6cc3e3f5933a2c878c817b52bc4566e9e8429e7b8e43ca007.
The version-1 disposable index rebuilt from schema 1 to schema 3. Canonical bytes, graph meaning, and the active proposal remained exact. The current CLI is a 28-command superset of the version-1 20-command surface. The current generic MCP surface is a 36-tool superset of the version-1 25-tool surface.
The proof also preserves a real inherited version-1 inconsistency: package metadata reports
1.0.0, while its Python module and server report 0.15.0. Migration evidence records that fact;
it does not rewrite history to make the old identities agree.
Recovery and concurrency evidence
The maintained gates prove:
- Concurrent canonical-source changes fail closed without publishing or serving mixed generations.
- Exact-hash canonical application uses project-owned serialization and compare-and-swap publication, rejects stale proposals, and preserves raced source data.
- Extraction caches and SQLite indexes rebuild from canonical sources or complete adapter projections.
- Corrupt index attestations, manual render receipts, generation-diff receipts, and portable-graph manifests recover through their normal synchronize, rebuild, or render entry points.
- Recovery preserves exact canonical bytes, the canonical collection hash, the complete snapshot hash, and primary-graph-plus-Logic index identity.
- Derived publication uses durable atomic replacement and directory synchronization.
The release does not claim that a multi-file canonical application is process-death atomic. A malicious same-UID process deliberately modifying the private mode-0700 transaction directory is also outside the application race contract. Those limits do not weaken the maintained concurrent-canonical-source compare-and-swap proof.
Representative real-task evidence
The real-package track uses installed, lock-pinned markdown-it-py 4.2.0:
- 66 Python files.
- 225,945 source bytes.
- Source-tree SHA-256:
bd57c9f332fcf6507282ec2023e6804fce0cf844631696336ee17cbe46e63aad. - No network, production binding, installed-source mutation, or self-hosting.
- Python reference-adapter local-import projection for graph-assisted work.
- Independent standard-library AST import inspection for source-only work.
Both workflows returned the exact reviewed answer for all three tasks:
| Task | Graph inspected | Source inspected | Graph median | Source median |
|---|---|---|---|---|
| Renderer direct dependencies | 349 B | 10,628 B | 0.008 ms | 1.341 ms |
| Three-level HTML-block impact | 419 B | 225,945 B | 0.009 ms | 32.108 ms |
| CLI-to-core-state path | 212 B | 225,945 B | 0.013 ms | 32.142 ms |
Per-task latency excludes the separately reported one-time graph preparation. Graph-assisted answers inspected substantially fewer agent-visible bytes and carried generation-bound provenance. The source-only answers were smaller on the final response-size metric. The comparison therefore records the measured tradeoff rather than claiming that every metric favors the graph.
The real-package semantic evidence SHA-256 is
c8c19b2900fa47abdaff94f5b13fd9ca537241089edc97b30d32d9db8809a2c1.
The combined real and generated-track evidence SHA-256 is
45952883b47449eb4fd862b51854aa2001749928e0d37c5a6e58c2d3292fbee4.
Machine-readable evidence
The maintained evidence generators emit canonical compact JSON and can write it atomically with
their --output option:
.venv/bin/python tools/milestone5_migration.py --output /tmp/docforge-m5-migration.json
.venv/bin/python tools/milestone5_task_evidence.py \
--mode full --output /tmp/docforge-m5-task-evidence.json
.venv/bin/python tools/check_release_identity.py \
--mode full --require-clean --tag-state absent \
--output /tmp/docforge-m5-release-identity.json
.venv/bin/python tools/milestone5_fresh_clone.py \
--commit "$(git rev-parse HEAD)" \
--output /tmp/docforge-m5-fresh-clone.json
Migration, task, release identity, artifact hashes, and the final anonymous-clone result therefore remain reproducible machine evidence rather than prose-only claims. The final Forgejo release attaches the release-identity JSON beside the wheel and source distribution.
Remaining release gate
The baseline is complete for the release candidate. Milestone 5 remains active until:
- The documentation closeout is committed.
mainanddevare synchronized and pushed.- The exact final commit passes the maintained fresh anonymous clone gate.
- Final artifacts and checksums are generated from that commit.
- The annotated
v1.4.0tag and Forgejo release are created and verified.