1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Compare commits

..

No commits in common. "main" and "codex/cross-identity-acceptance" have entirely different histories.

12 changed files with 37 additions and 86 deletions

View file

@ -2,20 +2,16 @@
```text ```text
Last completed milestone: 5 - stabilization and first DocForge2 release. Last completed milestone: 5 - stabilization and first DocForge2 release.
Release: 2.0.0. Release: 1.4.0.
Active milestone: none. Active milestone: none.
Maintenance: DocForge2 version identity and cross-identity proposal acceptance released. Maintenance: Current product documentation boundary cleanup complete.
Status: Complete. Status: Complete.
``` ```
## Current state ## Current state
DocForge2 `2.0.0` is the released product baseline. Current behavior is defined by the contracts DocForge2 `1.4.0` is the released product baseline. Current behavior is defined by the contracts and
and guides under `docs/`. `SLICE_HISTORY.md` contains DocForge2 milestone summaries only. 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.
The live documentation set contains current product contracts, current operating guidance, and The live documentation set contains current product contracts, current operating guidance, and
current successor milestone evidence. Superseded product plans and policy notes remain available 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. graph passed.
- Focused adapter and changeset verification passed 45 tests plus 2 subtests. - 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 ## Next gate
No implementation milestone is active. Any additional product behavior, version identity change, No implementation milestone is active. Create one explicit bounded contract before changing
release, or public integration requires its own bounded contract. product behavior, version identity, release state, or public integration.

View file

@ -5,16 +5,10 @@ remains in `docs/MILESTONE_*_BASELINE.md` and `docs/MILESTONE_*_CLOSEOUT.md`.
## Unreleased ## 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 - 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 changesets from additional configured proposal writers. The default remains same-identity
application, contributor processes receive no application tool, and application receipts record application, contributor processes receive no application tool, and application receipts record
both the proposal creator and applier. 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 ## 1.4.0 - 2026-07-29

View file

@ -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 compilers, Git operations, deployments, or arbitrary renderers, and it does not select projects
globally. globally.
DocForge 2.0.0 is the current stable DocForge2 release. It gives the successor product an DocForge 1.4.0 is the first stable DocForge2 successor release. It contains the complete adapter
unambiguous major-version identity, preserves the complete 1.4 adapter and recovery platform, and platform, stabilization and recovery evidence, representative real-task proof, and reproducible
adds explicit cross-identity proposal acceptance for project-owned canonical appliers. Annotated release artifacts. Annotated tag `v1.4.0` identifies the synchronized release commit.
tag `v2.0.0` identifies the synchronized release commit.
## Start here ## Start here

View file

@ -3,25 +3,6 @@
This file records DocForge2 milestones only. Product behavior is defined by the current contracts This file records DocForge2 milestones only. Product behavior is defined by the current contracts
under `docs/`, not by milestone notes. 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 ## 2026-07-31 - live-documentation boundary cleanup
- Replaced the historical application-decision memo with the current canonical-application - Replaced the historical application-decision memo with the current canonical-application

View file

@ -2,8 +2,8 @@
Milestone 0 establishes DocForge2 as the successor repository without renaming or replacing the 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 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 update, and migration guidance. DocForge 1.4.0 preserves that baseline and adds the adapter,
adapter, rendering, recovery, and release surfaces recorded below. rendering, recovery, and release surfaces recorded below.
The compatibility gate is: 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 Removing or changing an existing name, required argument, stable error code, or safety boundary
requires an explicit compatibility decision. requires an explicit compatibility decision.
Version `2.0.0` comes from one `docforge._version` authority. The four maintained executable Version `1.4.0` comes from one `docforge._version` authority. The four maintained executable
surfaces report `docforge 2.0.0`, `docforge-mcp 2.0.0`, surfaces report `docforge 1.4.0`, `docforge-mcp 1.4.0`,
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0` for `--version`. `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 Generated generic and adapter client configurations include and hash-bind the same
`docforge_version`. `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. 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 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 migration proof and resolves current identity through one authority. See
[migrating from v1](MIGRATING_FROM_V1.md). [migrating from v1](MIGRATING_FROM_V1.md).

View file

@ -1,4 +1,4 @@
# DocForge 2.0 contract # DocForge 1.4 contract
## Authority boundary ## 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. - Reference adapter configuration: `schemas/reference-adapter.schema.json`, version 1.
- Index schema: version 3, disposable and reproducible. - Index schema: version 3, disposable and reproducible.
- Index attestation: schema version 1, 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. - Incremental extraction cache: version 1, disposable and reproducible.
Schema files describe the generic interchange contract. Runtime validation remains responsible for 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. 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 `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`, surfaces report exactly `docforge 1.4.0`, `docforge-mcp 1.4.0`,
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0` for `--version`. `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 Generated generic and adapter client configurations bind `docforge_version` into their validated
hashes. hashes.

View file

@ -22,13 +22,13 @@ Disposable index and cache schemas may change. Rebuild them rather than copying
## Maintained v1.0.0 migration evidence ## Maintained v1.0.0 migration evidence
`make migration-m5` archives and executes the actual annotated `v1.0.0` release, then opens its `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 `2d7d306a37da89f1c860c7f0be161c45386acf61`; it identifies commit
`593c173b453236a6872d0a4e88e7a51a67a21cde`. `593c173b453236a6872d0a4e88e7a51a67a21cde`.
The tagged release contains an inherited identity mismatch that the migration proof records 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 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. version and requires its package and server values to agree.
The maintained fixture evidence is exact: The maintained fixture evidence is exact:

View file

@ -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 Canonical project files remain authoritative. The SQLite graph, previews, rendered manuals, and
viewer processes are derived and can be rebuilt. 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 This manual describes the DocForge 1.4.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 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 surfaces, hash-approved proposal application, generic and project-owned adapters, declared
rendering, and Nodes/Flow/Web model while adding the maintained incremental, projection, adapter rendering, and Nodes/Flow/Web model while adding the maintained incremental, projection, adapter
SDK, recovery, and release proofs documented below. SDK, recovery, and release proofs documented below.
@ -132,8 +132,8 @@ python -m docforge.reference_mcp --version
python -m docforge.viewer_manager --version python -m docforge.viewer_manager --version
``` ```
For version 2.0.0 these report `docforge 2.0.0`, `docforge-mcp 2.0.0`, For version 1.4.0 these report `docforge 1.4.0`, `docforge-mcp 1.4.0`,
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.0`. Package metadata, `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 Python imports, generated generic and adapter configurations, and these commands share the same
version authority. version authority.
@ -1310,7 +1310,7 @@ make fresh-clone-m5
recovery, task-evidence, fresh-wheel, version, artifact, secret-scan, and benchmark suite. 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 `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 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. points to the exact release commit.
Project-specific vocabulary, extraction rules, and serialization belong in the project adapter. Project-specific vocabulary, extraction rules, and serialization belong in the project adapter.

View file

@ -1,3 +1,3 @@
"""Single authoritative DocForge distribution and runtime version.""" """Single authoritative DocForge distribution and runtime version."""
__version__ = "2.0.0" __version__ = "1.4.0"

View file

@ -10,7 +10,7 @@ class Milestone5MigrationTests(unittest.TestCase):
evidence = build_migration_evidence() evidence = build_migration_evidence()
self.assertEqual("v1.0.0", evidence["tag"]) 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(1, evidence["current"]["index_schema_before"])
self.assertEqual(3, evidence["current"]["index_schema_after"]) self.assertEqual(3, evidence["current"]["index_schema_after"])
self.assertEqual( self.assertEqual(

View file

@ -282,10 +282,10 @@ class PublicContractTests(unittest.TestCase):
self.assertTrue(hasattr(module, name)) self.assertTrue(hasattr(module, name))
version_surfaces = { version_surfaces = {
"docforge.cli": "docforge 2.0.0\n", "docforge.cli": "docforge 1.4.0\n",
"docforge.mcp_server": "docforge-mcp 2.0.0\n", "docforge.mcp_server": "docforge-mcp 1.4.0\n",
"docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0\n", "docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0\n",
"docforge.viewer_manager": "docforge-viewer-manager 2.0.0\n", "docforge.viewer_manager": "docforge-viewer-manager 1.4.0\n",
} }
for module_name, expected in version_surfaces.items(): for module_name, expected in version_surfaces.items():
with self.subTest(module=module_name): with self.subTest(module=module_name):

View file

@ -14,13 +14,13 @@ class ReleaseIdentityTests(unittest.TestCase):
) )
self.assertEqual(1, evidence["schema_version"]) self.assertEqual(1, evidence["schema_version"])
self.assertEqual("2.0.0", evidence["version"]) self.assertEqual("1.4.0", evidence["version"])
self.assertEqual( self.assertEqual(
{ {
"docforge.cli": "docforge 2.0.0", "docforge.cli": "docforge 1.4.0",
"docforge.mcp_server": "docforge-mcp 2.0.0", "docforge.mcp_server": "docforge-mcp 1.4.0",
"docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0", "docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0",
"docforge.viewer_manager": "docforge-viewer-manager 2.0.0", "docforge.viewer_manager": "docforge-viewer-manager 1.4.0",
}, },
evidence["surfaces"], evidence["surfaces"],
) )