Compare commits
1 commit
codex/cros
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 3d5fa4e9e8 |
12 changed files with 86 additions and 37 deletions
|
|
@ -2,16 +2,20 @@
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Last completed milestone: 5 - stabilization and first DocForge2 release.
|
Last completed milestone: 5 - stabilization and first DocForge2 release.
|
||||||
Release: 1.4.0.
|
Release: 2.0.0.
|
||||||
Active milestone: none.
|
Active milestone: none.
|
||||||
Maintenance: Current product documentation boundary cleanup complete.
|
Maintenance: DocForge2 version identity and cross-identity proposal acceptance released.
|
||||||
Status: Complete.
|
Status: Complete.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Current state
|
## Current state
|
||||||
|
|
||||||
DocForge2 `1.4.0` is the released product baseline. Current behavior is defined by the contracts and
|
DocForge2 `2.0.0` is the released product baseline. Current behavior is defined by the contracts
|
||||||
guides under `docs/`. `SLICE_HISTORY.md` contains DocForge2 milestone summaries only.
|
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.
|
||||||
|
|
||||||
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
|
||||||
|
|
@ -28,7 +32,26 @@ 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. Create one explicit bounded contract before changing
|
No implementation milestone is active. Any additional product behavior, version identity change,
|
||||||
product behavior, version identity, release state, or public integration.
|
release, or public integration requires its own bounded contract.
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,16 @@ 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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,10 @@ 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 1.4.0 is the first stable DocForge2 successor release. It contains the complete adapter
|
DocForge 2.0.0 is the current stable DocForge2 release. It gives the successor product an
|
||||||
platform, stabilization and recovery evidence, representative real-task proof, and reproducible
|
unambiguous major-version identity, preserves the complete 1.4 adapter and recovery platform, and
|
||||||
release artifacts. Annotated tag `v1.4.0` identifies the synchronized release commit.
|
adds explicit cross-identity proposal acceptance for project-owned canonical appliers. Annotated
|
||||||
|
tag `v2.0.0` identifies the synchronized release commit.
|
||||||
|
|
||||||
## Start here
|
## Start here
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,25 @@
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -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 1.4.0 preserves that baseline and adds the adapter,
|
update, and migration guidance. DocForge 2.0.0 preserves that baseline and the complete 1.4
|
||||||
rendering, recovery, and release surfaces recorded below.
|
adapter, 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 `1.4.0` comes from one `docforge._version` authority. The four maintained executable
|
Version `2.0.0` comes from one `docforge._version` authority. The four maintained executable
|
||||||
surfaces report `docforge 1.4.0`, `docforge-mcp 1.4.0`,
|
surfaces report `docforge 2.0.0`, `docforge-mcp 2.0.0`,
|
||||||
`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0` for `--version`.
|
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.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 1.4.0 records that inherited mismatch in its maintained
|
runtime reported `0.15.0`. Version 2.0.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).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# DocForge 1.4 contract
|
# DocForge 2.0 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 1.4.0.
|
- Distribution, Python package, CLI, generic MCP, reference MCP, and viewer manager: version 2.0.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 1.4.0`, `docforge-mcp 1.4.0`,
|
surfaces report exactly `docforge 2.0.0`, `docforge-mcp 2.0.0`,
|
||||||
`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0` for `--version`.
|
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 1.4.0. The frozen tag object is
|
fixture, index, and active proposal through DocForge 2.0.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 1.4.0 replaces that duplicated state with one authoritative
|
server report `0.15.0`. DocForge 2.0.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:
|
||||||
|
|
|
||||||
|
|
@ -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 1.4.0 release. The tagged `v1.0.0` baseline was the first stable
|
This manual describes the DocForge 2.0.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
|
product release. Version 2.0.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 1.4.0 these report `docforge 1.4.0`, `docforge-mcp 1.4.0`,
|
For version 2.0.0 these report `docforge 2.0.0`, `docforge-mcp 2.0.0`,
|
||||||
`python -m docforge.reference_mcp 1.4.0`, and `docforge-viewer-manager 1.4.0`. Package metadata,
|
`python -m docforge.reference_mcp 2.0.0`, and `docforge-viewer-manager 2.0.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 `v1.4.0` and `make release-posttag` after the annotated tag
|
`make release-pretag` before creating `v2.0.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.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
"""Single authoritative DocForge distribution and runtime version."""
|
"""Single authoritative DocForge distribution and runtime version."""
|
||||||
|
|
||||||
__version__ = "1.4.0"
|
__version__ = "2.0.0"
|
||||||
|
|
|
||||||
|
|
@ -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("1.4.0", evidence["current"]["version"])
|
self.assertEqual("2.0.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(
|
||||||
|
|
|
||||||
|
|
@ -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 1.4.0\n",
|
"docforge.cli": "docforge 2.0.0\n",
|
||||||
"docforge.mcp_server": "docforge-mcp 1.4.0\n",
|
"docforge.mcp_server": "docforge-mcp 2.0.0\n",
|
||||||
"docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0\n",
|
"docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0\n",
|
||||||
"docforge.viewer_manager": "docforge-viewer-manager 1.4.0\n",
|
"docforge.viewer_manager": "docforge-viewer-manager 2.0.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):
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,13 @@ class ReleaseIdentityTests(unittest.TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(1, evidence["schema_version"])
|
self.assertEqual(1, evidence["schema_version"])
|
||||||
self.assertEqual("1.4.0", evidence["version"])
|
self.assertEqual("2.0.0", evidence["version"])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
{
|
{
|
||||||
"docforge.cli": "docforge 1.4.0",
|
"docforge.cli": "docforge 2.0.0",
|
||||||
"docforge.mcp_server": "docforge-mcp 1.4.0",
|
"docforge.mcp_server": "docforge-mcp 2.0.0",
|
||||||
"docforge.reference_mcp": "python -m docforge.reference_mcp 1.4.0",
|
"docforge.reference_mcp": "python -m docforge.reference_mcp 2.0.0",
|
||||||
"docforge.viewer_manager": "docforge-viewer-manager 1.4.0",
|
"docforge.viewer_manager": "docforge-viewer-manager 2.0.0",
|
||||||
},
|
},
|
||||||
evidence["surfaces"],
|
evidence["surfaces"],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue