diff --git a/ACTIVE_SLICE.md b/ACTIVE_SLICE.md index 35434e3..00a01a5 100644 --- a/ACTIVE_SLICE.md +++ b/ACTIVE_SLICE.md @@ -1,4 +1,4 @@ -# Active milestone +# Milestone status ```text Milestone: 0 — successor foundation and measured baseline @@ -6,7 +6,8 @@ Goal: Seed DocForge2 from the most advanced local lineage without breaking DocFo In scope: Complete Git lineage; verified no-AST work; adapter lifecycle safeguards; compatibility guarantees; repository-native contract and quality gates; cold/warm, memory, rendering, and response-size baselines; public successor migration; fresh-clone verification. Out of scope: Storage redesign; compiler or renderer redesign; portable render plans; self-hosting; production MCP repointing; WorldForge or ScrapeStation changes; tags and releases. Done when: administrator/DocForge2 is public and seeded from the advanced clean tree; administrator/DocForge remains intact; origin and legacy identify the successor and v1 remotes; all gates and a fresh-clone proof pass; the recorded baseline identifies measured bottlenecks without speculative optimization. -Status: Candidate. Source integration, contracts, gates, and measurements are complete. Public repository creation, remote migration, and fresh-clone verification remain. +Status: Complete. DocForge2 is public and seeded from the complete advanced lineage. Compatibility and quality gates pass locally and from an anonymous fresh clone. The legacy repository and production MCP bindings remain unchanged. ``` -No later milestone is active. +No later milestone is active. `main` is the verified Milestone 0 state. `dev` begins at the same +commit and remains inactive until the next milestone is explicitly opened. diff --git a/README.md b/README.md index d4feb46..d55ce3e 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,8 @@ DocForge describes them as a source graph. schema, changeset, rendering, and no-AST guarantees. - [Milestone 0 baseline](docs/MILESTONE_0_BASELINE.md) — validation evidence, cold and warm performance, memory, rendering and response sizes, bottlenecks, and missing coverage. +- [Milestone 0 closeout](docs/MILESTONE_0_CLOSEOUT.md) — lineage, migration, security scan, + repository state, and fresh-clone proof. - [MCP contract](docs/MCP_CONTRACT.md) — exact tool and process boundary. - [Viewer manager](docs/VIEWER_MANAGER.md) — native service setup and lifecycle. - [Adapter decision](docs/APPLICATION_DECISION.md) — why custom adapters own canonical diff --git a/SLICE_HISTORY.md b/SLICE_HISTORY.md index aae15cd..fa7bf77 100644 --- a/SLICE_HISTORY.md +++ b/SLICE_HISTORY.md @@ -1,5 +1,39 @@ # Completed slices +## DocForge2 Milestone 0 successor foundation + +### Changed + +- Preserved the complete advanced DocForge lineage in the public + `administrator/DocForge2` successor. +- Committed the verified no-AST work and merged the original local-only adapter-lifecycle commit + without rewriting either line of history. +- Hardened no-AST enforcement for pre-existing indexes, live visualization, and + canonical-application refresh. +- Added explicit package, CLI, MCP, adapter, schema, changeset, rendering, safety, and no-AST + compatibility guarantees. +- Added repository-native aggregate, contract, build, and benchmark gates. +- Recorded cold and warm latency, startup, memory, rendering, response-size, incremental, and + pinned-SQLite baselines. +- Configured `origin` for DocForge2 and `legacy` for the intact DocForge v1 repository. +- Kept only `main` and `dev` as successor development branches. Historical legacy branches remain + unchanged in the legacy repository. + +### Verification + +- Gitleaks 8.30.1 found no secrets in reachable history or the candidate tree. +- The aggregate gate passed formatting, Python and web lint, strict types, compilation, public + contract and schema checks, 95 tests and 44 subtests, lock and dependency validation, package + builds, and benchmark smoke. +- The 1,000-node maintained baseline completed from a clean tree. +- Every successor ref was compared with its local source before redundant public development + branches were removed. +- Every recorded legacy head and the annotated `v1.0.0` tag remained byte-for-byte unchanged. +- An anonymous HTTPS clone selected `main`, passed `git fsck --full` and the complete aggregate + gate, and remained clean. +- No tag, release, release announcement, production MCP repointing, WorldForge change, + ScrapeStation change, storage rewrite, or self-hosting dependency was introduced. + ## DFG-23 process-stable adapter implementation boundary ### Changed diff --git a/docs/MILESTONE_0_CLOSEOUT.md b/docs/MILESTONE_0_CLOSEOUT.md new file mode 100644 index 0000000..68cfd6a --- /dev/null +++ b/docs/MILESTONE_0_CLOSEOUT.md @@ -0,0 +1,133 @@ +# DocForge2 Milestone 0 closeout + +Milestone 0 establishes the public DocForge2 successor without changing the supported `docforge` +product identity or the legacy DocForge repository. + +## Repository state + +- Public successor: +- Successor default branch: `main` +- Successor development branches: `main` and `dev` +- Local `origin`: `forgejo@repo.andraxion.net:administrator/DocForge2.git` +- Local `legacy`: `forgejo@repo.andraxion.net:administrator/DocForge.git` +- Legacy repository: private, nonempty, unarchived, and defaulted to `main` +- Existing annotated tag: `v1.0.0` + +`main` is the last completely verified milestone. `dev` is the integration branch for the next +explicitly activated milestone and begins at the same commit. Historical development branch names +remain in the legacy repository as v1 evidence; they are not replicated as active DocForge2 +branches. + +No tag, release, release announcement, or production integration change was made. + +## Preserved lineage + +The migration began from the advanced +`codex/language-agnostic-onboarding` tip +`bb13258861175aafd0e6c03c1a5235cbaddf6db2`, nine linear commits beyond the legacy `main`. + +The original seven-file no-AST working patch had SHA-256: + +```text +8cd10759c232cd4cf8c5eb024e31bbfed355e0be31fc3e732e1567c1a19a887e +``` + +It was preserved in commit `6c05607` before other integration. The independent local-only adapter +lifecycle commit `1ef76f0271bb339bc0d7eeb62f996d6d680548cb` was retained unchanged and merged by +`15a9130`. The resulting successor `main` contains every commit that was reachable from any local +ref before migration. No rebase, reset, squash, shallow seed, or older-remote seed was used. + +A verified pre-migration bundle was written outside the repository: + +```text +/tmp/DocForge2-milestone0-candidate-20260729.bundle +SHA-256 6cccd4ae2a65fa2d81e324e4592bee488b111942a496fb85f7ac6b8bd319ea2d +``` + +## Legacy integrity + +Before and after the successor push, the legacy repository advertised these exact heads: + +```text +Dev-Rewrite 73165c9f511485ea397aaa00c5e0047bd3e635e2 +DocForge-Dev 82b3b905212e7949c0a440879f3bf866197c3927 +codex/adapter-authoring-docs 7bc2ac1e3f7f9cf23ec4dcad108f9bb59978ca73 +codex/language-agnostic-onboarding bb13258861175aafd0e6c03c1a5235cbaddf6db2 +main 9fcafc290c5b5ee9cb83c4c3b2ff600f75210c8e +``` + +The annotated `v1.0.0` tag object remained +`2d7d306a37da89f1c860c7f0be161c45386acf61`, pointing to +`593c173b453236a6872d0a4e88e7a51a67a21cde`. + +No push, deletion, visibility change, archive operation, or default-branch change was performed +against `legacy`. + +## Compatibility and correctness + +The stable guarantees are recorded in +[`COMPATIBILITY.md`](COMPATIBILITY.md). The dedicated contract gate verifies: + +- Distribution, package, imports, and three executable names. +- CLI command and MCP tool names. +- Published JSON schemas and representative runtime envelopes. +- One-method `load_projection()` adapters. +- Optional incremental behavior and full-projection equivalence. +- Canonical JSON changeset hashing. +- Complete no-AST behavior, including pre-existing Logic, viewer, and application-refresh paths. + +The no-AST policy does not claim to inspect arbitrary adapter internals. It enforces the owner-bound +policy at Logic publication and retrieval surfaces while preserving complete-projection and +genuinely non-AST incremental adapters. + +## Security and publication checks + +Gitleaks 8.30.1 scanned reachable Git history and an exact archive of the candidate tree with full +redaction. Both scans reported zero findings. `git fsck --full` passed. A broader filename and +credential-pattern audit also found no high-confidence matches. + +Forgejo repository creation used one timestamped short-lived administrator token. Forgejo accepted +it for repository creation but returned HTTP 401 when it attempted self-deletion. The exact +task-created token row was then validated by ID, owner, and unique name, deleted in one SQLite +transaction, and rechecked. Zero matching temporary token rows remain. + +The package metadata declares MIT, but the repository has no tracked standalone `LICENSE`, +`COPYING`, or `NOTICE` file. Milestone 0 records that publication weakness without inventing or +changing legal terms. + +## Validation and fresh-clone proof + +The repository-native aggregate gate is: + +```bash +make gate +``` + +It passed in the working tree and in an anonymous HTTPS clone of the public successor. The +fresh-clone proof: + +- Selected the expected `main` commit through the public default branch. +- Passed `git fsck --full`. +- Recreated the Python virtual environment from `uv.lock`. +- Recreated JavaScript dependencies with `npm ci`, with zero reported vulnerabilities. +- Passed Ruff formatting and lint. +- Passed HTML, rendered-manual HTML, CSS, and JavaScript lint. +- Passed Pyright with zero diagnostics. +- Passed Python compilation. +- Passed 8 public-contract tests and 42 schema subtests. +- Passed the complete 95-test and 44-subtest warning-strict suite. +- Passed lock and dependency-tree checks. +- Built the wheel and source distribution. +- Passed the disposable benchmark smoke run. +- Remained clean after validation. + +The maintained performance evidence and known gaps are recorded in +[`MILESTONE_0_BASELINE.md`](MILESTONE_0_BASELINE.md) and +[`benchmarks/milestone0-2026-07-29.json`](../benchmarks/milestone0-2026-07-29.json). + +## Scope confirmation + +Milestone 0 made no speculative storage rewrite and introduced no self-hosting dependency. +WorldForge and ScrapeStation were not read as benchmark fixtures or changed. No production MCP +integration was repointed. `ManualRenderPlan`, `GraphViewPlan`, and a portable graph renderer remain +later-milestone direction, not claimed implementation.