diff --git a/ACTIVE_SLICE.md b/ACTIVE_SLICE.md index bdb6724..5766314 100644 --- a/ACTIVE_SLICE.md +++ b/ACTIVE_SLICE.md @@ -2,20 +2,16 @@ ```text Last completed milestone: 5 - stabilization and first DocForge2 release. -Release: 2.0.0. +Release: 1.4.0. Active milestone: none. -Maintenance: DocForge2 version identity and cross-identity proposal acceptance released. +Maintenance: Current product documentation boundary cleanup complete. Status: Complete. ``` ## Current state -DocForge2 `2.0.0` is the released product baseline. Current behavior is defined by the contracts -and guides under `docs/`. `SLICE_HISTORY.md` contains DocForge2 milestone summaries only. - -The release adds an explicit accepted-writer allowlist for project-owned canonical appliers. -Same-identity application remains the default. Contributor processes receive no application tool, -and successful receipts record both the proposal creator and applier. +DocForge2 `1.4.0` is the released product baseline. Current behavior is defined by the contracts and +guides under `docs/`. `SLICE_HISTORY.md` contains DocForge2 milestone summaries only. The live documentation set contains current product contracts, current operating guidance, and current successor milestone evidence. Superseded product plans and policy notes remain available @@ -32,26 +28,7 @@ only through repository history and are not part of normal documentation validat graph passed. - Focused adapter and changeset verification passed 45 tests plus 2 subtests. -## Maintenance proof - 2026-08-02 - -- Compared exact released commit `f9a05f868eec6c35e2b74a69467459e6ff2190bf` with exact development - commit `7b21541ab37c35dc9f3d47f631fef0c1884f9525` in isolated locked environments. -- The development repository gate passed formatting, Ruff, web lint, strict Pyright, compilation, - 142 contract tests plus 272 subtests, 381 complete tests plus 422 subtests, three accessibility - flows, dependency, build, documentation, and five smoke benchmark gates. -- Compatibility passed 116 tests plus 263 subtests, concurrency and application passed 31 tests - plus 2 subtests, recovery passed 72 tests plus 62 subtests, offline fresh-wheel adoption passed, - reproducible artifact checks passed, and Git plus directory secret scans found no leaks. -- All six full maintained benchmark tracks passed. Across 66 multi-sample operations, the median - absolute development-versus-release difference was 0.71%; 65 remained within 5%, and the only - larger difference was 0.062 ms on a 1.156 ms viewer-overview operation. -- Reference-adapter graph and Logic evidence and representative-task semantic evidence matched the - release exactly. All six representative tasks retained exact answers. -- Anonymous exact-commit fresh clones of both revisions completed the full release gate offline and - remained clean. The development rehearsal completed in 283.490 seconds versus 282.091 seconds for - the release. - ## Next gate -No implementation milestone is active. Any additional product behavior, version identity change, -release, or public integration requires its own bounded contract. +No implementation milestone is active. Create one explicit bounded contract before changing +product behavior, version identity, release state, or public integration. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cfcc9d..d6a7db4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,16 +5,10 @@ remains in `docs/MILESTONE_*_BASELINE.md` and `docs/MILESTONE_*_CLOSEOUT.md`. ## Unreleased -## 2.0.0 - 2026-08-02 - -- Established `2.0.0` as the unambiguous package, Python, CLI, MCP, viewer-manager, and generated - client identity for DocForge2 without changing descriptor, result, adapter, or index schemas. - Project-owned MCP servers can explicitly authorize a canonical applier to accept exact-hash changesets from additional configured proposal writers. The default remains same-identity application, contributor processes receive no application tool, and application receipts record both the proposal creator and applier. -- Retained the full DocForge 1.4 compatibility, recovery, migration, benchmark, and reproducible - artifact gates. ## 1.4.0 - 2026-07-29 diff --git a/README.md b/README.md index 14d1e90..414a195 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,9 @@ DocForge never treats indexed text as instructions. It does not run project buil compilers, Git operations, deployments, or arbitrary renderers, and it does not select projects globally. -DocForge 2.0.0 is the current stable DocForge2 release. It gives the successor product an -unambiguous major-version identity, preserves the complete 1.4 adapter and recovery platform, and -adds explicit cross-identity proposal acceptance for project-owned canonical appliers. Annotated -tag `v2.0.0` identifies the synchronized release commit. +DocForge 1.4.0 is the first stable DocForge2 successor release. It contains the complete adapter +platform, stabilization and recovery evidence, representative real-task proof, and reproducible +release artifacts. Annotated tag `v1.4.0` identifies the synchronized release commit. ## Start here diff --git a/SLICE_HISTORY.md b/SLICE_HISTORY.md index e63a397..21389ec 100644 --- a/SLICE_HISTORY.md +++ b/SLICE_HISTORY.md @@ -3,25 +3,6 @@ This file records DocForge2 milestones only. Product behavior is defined by the current contracts under `docs/`, not by milestone notes. -## 2026-08-02 - DocForge 2.0 release - -- Verified the unreleased explicit accepted-writer policy at development commit - `7b21541ab37c35dc9f3d47f631fef0c1884f9525` against released `v1.4.0` commit - `f9a05f868eec6c35e2b74a69467459e6ff2190bf` in isolated locked environments. -- Preserved same-identity application as the default, kept contributor processes without an - application tool, and proved explicit allowlisted application with creator and applier receipts. -- The development repository gate passed 142 contract tests plus 272 subtests, 381 complete tests - plus 422 subtests, three accessibility flows, and all static, build, documentation, and smoke - benchmark checks. -- Compatibility passed 116 tests plus 263 subtests, concurrency and application passed 31 tests - plus 2 subtests, recovery passed 72 tests plus 62 subtests, and adoption, reproducible-artifact, - migration, secret-scan, and anonymous fresh-clone release gates passed. -- All full maintained benchmark tracks passed. The median absolute difference across 66 - multi-sample operations was 0.71%, exact adapter graph and Logic evidence matched, and all six - representative task answers remained exact. -- Released the verified candidate as `2.0.0`, giving DocForge2 an unambiguous distribution and - executable identity while preserving its versioned schemas and compatibility contracts. - ## 2026-07-31 - live-documentation boundary cleanup - Replaced the historical application-decision memo with the current canonical-application diff --git a/docs/COMPATIBILITY.md b/docs/COMPATIBILITY.md index 01e0cbc..4907d41 100644 --- a/docs/COMPATIBILITY.md +++ b/docs/COMPATIBILITY.md @@ -2,8 +2,8 @@ Milestone 0 establishes DocForge2 as the successor repository without renaming or replacing the working DocForge interfaces. Compatibility changes require an explicit decision, a contract-test -update, and migration guidance. DocForge 2.0.0 preserves that baseline and the complete 1.4 -adapter, rendering, recovery, and release surfaces recorded below. +update, and migration guidance. DocForge 1.4.0 preserves that baseline and adds the adapter, +rendering, recovery, and release surfaces recorded below. The compatibility gate is: @@ -69,9 +69,9 @@ names and arguments remain supported. Additive commands, tools, and response fie Removing or changing an existing name, required argument, stable error code, or safety boundary requires an explicit compatibility decision. -Version `2.0.0` comes from one `docforge._version` authority. The four maintained executable -surfaces report `docforge 2.0.0`, `docforge-mcp 2.0.0`, -`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0` for `--version`. +Version `1.4.0` comes from one `docforge._version` authority. The four maintained executable +surfaces report `docforge 1.4.0`, `docforge-mcp 1.4.0`, +`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0` for `--version`. Generated generic and adapter client configurations include and hash-bind the same `docforge_version`. @@ -285,7 +285,7 @@ other users and ordinary path access; deliberate arbitrary tampering by another same operating-system UID is outside the compatibility boundary. The historical `v1.0.0` release carried distribution metadata `1.0.0` while its module and MCP -runtime reported `0.15.0`. Version 2.0.0 records that inherited mismatch in its maintained +runtime reported `0.15.0`. Version 1.4.0 records that inherited mismatch in its maintained migration proof and resolves current identity through one authority. See [migrating from v1](MIGRATING_FROM_V1.md). diff --git a/docs/CONTRACT.md b/docs/CONTRACT.md index a7554f1..780f15d 100644 --- a/docs/CONTRACT.md +++ b/docs/CONTRACT.md @@ -1,4 +1,4 @@ -# DocForge 2.0 contract +# DocForge 1.4 contract ## Authority boundary @@ -34,7 +34,7 @@ commit when Git is available; it cannot change repository state. - Reference adapter configuration: `schemas/reference-adapter.schema.json`, version 1. - Index schema: version 3, disposable and reproducible. - Index attestation: schema version 1, disposable and reproducible. -- Distribution, Python package, CLI, generic MCP, reference MCP, and viewer manager: version 2.0.0. +- Distribution, Python package, CLI, generic MCP, reference MCP, and viewer manager: version 1.4.0. - Incremental extraction cache: version 1, disposable and reproducible. Schema files describe the generic interchange contract. Runtime validation remains responsible for @@ -42,8 +42,8 @@ path confinement, source hashing, relationship resolution, dependency cycles, pr state, and adapter-specific rules that JSON Schema cannot prove by itself. `src/docforge/_version.py` is the sole package-version authority. The maintained executable -surfaces report exactly `docforge 2.0.0`, `docforge-mcp 2.0.0`, -`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0` for `--version`. +surfaces report exactly `docforge 1.4.0`, `docforge-mcp 1.4.0`, +`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0` for `--version`. Generated generic and adapter client configurations bind `docforge_version` into their validated hashes. diff --git a/docs/MIGRATING_FROM_V1.md b/docs/MIGRATING_FROM_V1.md index 16a527c..eb24fbe 100644 --- a/docs/MIGRATING_FROM_V1.md +++ b/docs/MIGRATING_FROM_V1.md @@ -22,13 +22,13 @@ Disposable index and cache schemas may change. Rebuild them rather than copying ## Maintained v1.0.0 migration evidence `make migration-m5` archives and executes the actual annotated `v1.0.0` release, then opens its -fixture, index, and active proposal through DocForge 2.0.0. The frozen tag object is +fixture, index, and active proposal through DocForge 1.4.0. The frozen tag object is `2d7d306a37da89f1c860c7f0be161c45386acf61`; it identifies commit `593c173b453236a6872d0a4e88e7a51a67a21cde`. The tagged release contains an inherited identity mismatch that the migration proof records rather than hiding: distribution metadata says `1.0.0`, while `docforge.__version__` and the MCP -server report `0.15.0`. DocForge 2.0.0 replaces that duplicated state with one authoritative +server report `0.15.0`. DocForge 1.4.0 replaces that duplicated state with one authoritative version and requires its package and server values to agree. The maintained fixture evidence is exact: diff --git a/docs/USER_MANUAL.md b/docs/USER_MANUAL.md index df33899..25a6043 100644 --- a/docs/USER_MANUAL.md +++ b/docs/USER_MANUAL.md @@ -5,8 +5,8 @@ people and AI agents can search, inspect, visualize, and change through reviewab Canonical project files remain authoritative. The SQLite graph, previews, rendered manuals, and viewer processes are derived and can be rebuilt. -This manual describes the DocForge 2.0.0 release. The tagged `v1.0.0` baseline was the first stable -product release. Version 2.0.0 preserves its project-scoped graph, CLI and MCP query +This manual describes the DocForge 1.4.0 release. The tagged `v1.0.0` baseline was the first stable +product release. Version 1.4.0 preserves its project-scoped graph, CLI and MCP query surfaces, hash-approved proposal application, generic and project-owned adapters, declared rendering, and Nodes/Flow/Web model while adding the maintained incremental, projection, adapter SDK, recovery, and release proofs documented below. @@ -132,8 +132,8 @@ python -m docforge.reference_mcp --version python -m docforge.viewer_manager --version ``` -For version 2.0.0 these report `docforge 2.0.0`, `docforge-mcp 2.0.0`, -`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0`. Package metadata, +For version 1.4.0 these report `docforge 1.4.0`, `docforge-mcp 1.4.0`, +`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0`. Package metadata, Python imports, generated generic and adapter configurations, and these commands share the same version authority. @@ -1310,7 +1310,7 @@ make fresh-clone-m5 recovery, task-evidence, fresh-wheel, version, artifact, secret-scan, and benchmark suite. `fresh-clone-m5` anonymously clones the exact published candidate over HTTPS, fetches and verifies the frozen annotated `v1.0.0` migration tag, and repeats `release-gate`. Release operators use -`make release-pretag` before creating `v2.0.0` and `make release-posttag` after the annotated tag +`make release-pretag` before creating `v1.4.0` and `make release-posttag` after the annotated tag points to the exact release commit. Project-specific vocabulary, extraction rules, and serialization belong in the project adapter. diff --git a/src/docforge/_version.py b/src/docforge/_version.py index 9b5e0c8..c0e966c 100644 --- a/src/docforge/_version.py +++ b/src/docforge/_version.py @@ -1,3 +1,3 @@ """Single authoritative DocForge distribution and runtime version.""" -__version__ = "2.0.0" +__version__ = "1.4.0" diff --git a/tests/test_milestone5_migration.py b/tests/test_milestone5_migration.py index ebc2d8f..04c41d0 100644 --- a/tests/test_milestone5_migration.py +++ b/tests/test_milestone5_migration.py @@ -10,7 +10,7 @@ class Milestone5MigrationTests(unittest.TestCase): evidence = build_migration_evidence() self.assertEqual("v1.0.0", evidence["tag"]) - self.assertEqual("2.0.0", evidence["current"]["version"]) + self.assertEqual("1.4.0", evidence["current"]["version"]) self.assertEqual(1, evidence["current"]["index_schema_before"]) self.assertEqual(3, evidence["current"]["index_schema_after"]) self.assertEqual( diff --git a/tests/test_public_contract.py b/tests/test_public_contract.py index dc60a76..901b355 100644 --- a/tests/test_public_contract.py +++ b/tests/test_public_contract.py @@ -282,10 +282,10 @@ class PublicContractTests(unittest.TestCase): self.assertTrue(hasattr(module, name)) version_surfaces = { - "docforge.cli": "docforge 2.0.0\n", - "docforge.mcp_server": "docforge-mcp 2.0.0\n", - "docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0\n", - "docforge.viewer_manager": "docforge-viewer-manager 2.0.0\n", + "docforge.cli": "docforge 1.4.0\n", + "docforge.mcp_server": "docforge-mcp 1.4.0\n", + "docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0\n", + "docforge.viewer_manager": "docforge-viewer-manager 1.4.0\n", } for module_name, expected in version_surfaces.items(): with self.subTest(module=module_name): diff --git a/tests/test_release_identity.py b/tests/test_release_identity.py index d264b0d..734eb18 100644 --- a/tests/test_release_identity.py +++ b/tests/test_release_identity.py @@ -14,13 +14,13 @@ class ReleaseIdentityTests(unittest.TestCase): ) self.assertEqual(1, evidence["schema_version"]) - self.assertEqual("2.0.0", evidence["version"]) + self.assertEqual("1.4.0", evidence["version"]) self.assertEqual( { - "docforge.cli": "docforge 2.0.0", - "docforge.mcp_server": "docforge-mcp 2.0.0", - "docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0", - "docforge.viewer_manager": "docforge-viewer-manager 2.0.0", + "docforge.cli": "docforge 1.4.0", + "docforge.mcp_server": "docforge-mcp 1.4.0", + "docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0", + "docforge.viewer_manager": "docforge-viewer-manager 1.4.0", }, evidence["surfaces"], )