# Milestone 5 release-candidate closeout ## Outcome DocForge `1.4.0` has reached its documentation closeout candidate. Compatibility, migration, determinism, concurrency, recovery, policy, projection isolation, accessibility, performance, adoption, artifact reproducibility, and representative real-task evidence are maintained and passing. This is not the final publication record. Milestone 5 remains active, and DocForge `1.0.0` remains the latest published stable release, until the documentation-bearing commit passes its final fresh-clone gate and the annotated `v1.4.0` tag and Forgejo release are verified. ## Candidate lineage - Merged Milestone 4 baseline: `6d06195950d33bcd2d712f8819bbfb3d6652ad03`. - Frozen executable implementation: `d2bb95fe6190e659cf66ba57c78be53b63b53240`. - Fresh-clone legacy-tag verification: `97f3b6b1ae303c972387508557a3d54ea621a702`. - Maintained aggregate recovery proof: `2b98059b44f4d46b4d4cce776f163e893c647c76`. - Intended release version and tag: `1.4.0` and `v1.4.0`. - Publication channel: public Forgejo release only. The tag does not exist yet. It must resolve to the final documentation-bearing descendant of this lineage, never to the earlier executable-only commit. ## Closed release evidence The clean executable release gate passed: - Formatting, Python and web lint, strict types, compilation, lock, dependency, package-build, generated-reference, and documentation checks. - 142 contract tests plus 272 subtests. - 371 complete tests plus 419 subtests. - Three interactive accessibility flows. - 116 compatibility tests plus 263 subtests. - 29 concurrency tests plus 2 subtests. - Offline fresh-wheel adoption. - Reproducible wheel and source-distribution builds with exact version and MIT license identity. - Gitleaks scans of reachable history and the candidate directory with no findings. - Full maintained Milestone 0, 1, 2, 3, and 4 benchmarks. The later proof-only recovery commit adds four maintained tests. The aggregate recovery gate now passes 72 tests plus 62 subtests. The final fresh clone owns the final complete-suite total. Detailed migration identities, artifact evidence, recovery boundaries, and task measurements are in the [Milestone 5 baseline](MILESTONE_5_BASELINE.md). ## Compatibility and migration result Version `1.4.0` preserves the established distribution, imports, CLI, MCP, schema-1 descriptor, generic-project, one-method adapter, exact-hash changeset, rendering, result-envelope, and no-AST surfaces. New adapter, retrieval, projection, and release capabilities are additive. The real annotated `v1.0.0` archive migrates without canonical or proposal changes. Its schema-1 index rebuilds as schema 3, and its graph identity remains exact. The current CLI and MCP registrations are supersets of the version-1 surfaces. The proof reports the inherited version-1 metadata/runtime mismatch instead of hiding it. ## Representative task result The pinned real-package comparison uses `markdown-it-py 4.2.0`, 66 Python files, and 225,945 bytes. Graph-assisted and source-only workflows both return exact reviewed answers for direct dependencies, bounded reverse impact, and a dependency path. Graph-assisted medians were 0.008, 0.009, and 0.013 ms after one-time preparation, versus 1.341, 32.108, and 32.142 ms for source-only inspection. Graph-assisted work also reduced inspected bytes from 10,628 to 349, from 225,945 to 419, and from 225,945 to 212. Source-only final responses were smaller, so no universal response-size advantage is claimed. ## Preserved boundaries - Canonical project files remain authoritative. Indexes, caches, receipts, render output, graph output, client fragments, and viewer state remain disposable. - Full rebuild remains the recovery and equivalence oracle. - Derived publication is durable and atomic. Multi-file canonical application does not claim process-death atomicity. - `--no-ast` remains a restrictive binding policy, not a parser detector or filesystem sandbox. - Reference adapters publish narrow static evidence and do not claim resolved calls, types, inheritance, runtime behavior, compiler semantics, or semantic ownership. - Reference MCP remains read-only. - No WorldForge, ScrapeStation, legacy repository, production binding, storage, or self-hosting change belongs to this release. - No PyPI publication belongs to this release. ## Publication still pending The remaining sequence is exact: 1. Commit this coherent documentation closeout on the verified candidate lineage. 2. Run documentation-only checks and confirm the final worktree contains no unrelated changes. 3. Merge and push the final candidate so `main`, `dev`, `origin/main`, and `origin/dev` agree. 4. Run the complete fresh-clone release rehearsal at that exact remote commit. 5. Build the final artifacts and checksum manifest from the verified commit. 6. Create and push one annotated `v1.4.0` tag at that commit. 7. Publish and verify the Forgejo release and attached artifacts. Until all seven steps succeed, the milestone status is release candidate rather than complete.