diff --git a/docs/plans/implementation.md b/docs/plans/implementation.md index 8d9a7c8..35dacf1 100644 --- a/docs/plans/implementation.md +++ b/docs/plans/implementation.md @@ -1,9 +1,9 @@ --- -status: open -last_updated: 2026-11-06 (created at the start of implementation; - wave 1 decomposed and its gate passed the same day; wave 2 - decomposed immediately after; wave 3 decomposed 2026-11-07 after - the wave-2 gate) +status: closed +last_updated: 2026-11-07 (created 2026-11-06; waves 1 and 2 + decomposed and gated the same day; wave 3 decomposed and gated + 2026-11-07 after the wave-2 gate; the plan closed at the publish + of alkgen 0.1.0, tagged alkgen-v0.1.0, 2026-11-07) --- # alkgen: Implementation plan @@ -87,7 +87,7 @@ Dependency logic in one line: core foundations (consumer-shaped proofs |---|---|---|---| | [1](#wave-1-the-core) | The core: manifest landing (dep pins, alktype removal, feature graph); the public error model; registry construction (strict mode, escaper policy, typed registration, helper seam); the render entry point (two sinks); engine fixture doubles | none | decomposed | | [2](#wave-2-consumer-shaped-proofs) | The generality proofs on shipped code: the full ssr-shaped (posture-B) fixture through the public API; the code-shaped (posture-A/C) fixture with ordering and determinism invariants; the conformance battery (strict-mode matrix, error surface, two-sink correctness, wasm, feature matrix) | wave 1 | decomposed | -| [3](#wave-3-validation--release) | Release readiness (README, CHANGELOG, rustdoc, dry-run, freeze inventory); the release gate; the publish | waves 1 + 2 | decomposed | +| [3](#wave-3-validation--release) | Release readiness (README, CHANGELOG, rustdoc, dry-run, freeze inventory); the release gate; the publish | waves 1 + 2 | published | ## Wave 1: The core @@ -327,14 +327,22 @@ present in this environment, so the publish can execute live. ## Plan closure -The plan closes at the publish of **`alkgen 0.1.0`**: the publish -commit, tagged `alkgen-v0.1.0`, pushed to `origin/main`, status flipped -to `closed`. From the publish, the freeze inventory is one-way: the -public API shape, the strict-mode posture, the determinism guarantee, -and the error model are semver events from then on. Engine-owned -template sets (bast-codegen at its activation, wgsl at OQ-05's) land -through future waves of this document or a successor plan, each gated -by its own review. +**Closed 2026-11-07.** `alkgen 0.1.0` published to crates.io; the +publish commit carries this closure and is tagged `alkgen-v0.1.0`, +pushed to `origin/main`. From the publish, the freeze inventory +(w3-release-readiness's Notes, verified by the wave-3 gate) is +one-way: the public API shape, the strict-mode posture, the +determinism guarantee, and the error model's evolution policy are +semver events from then on. Engine-owned template sets (bast-codegen +at its activation, wgsl at OQ-05's) land through future waves of this +document or a successor plan, each gated by its own review. + +Fulfillment note: the plan's closure condition is exactly what +happened: the publish commit, tagged `alkgen-v0.1.0`, pushed to +`origin/main`, status flipped to `closed`. The wave-3 gate passed +green over the readiness artifacts and froze the crate honestly: the +published package carries the engine, its docs, and its design +record, and nothing of the working process. ## References diff --git a/tasks/implementation/w3-publish.md b/tasks/implementation/w3-publish.md index 57a849e..638d486 100644 --- a/tasks/implementation/w3-publish.md +++ b/tasks/implementation/w3-publish.md @@ -1,7 +1,7 @@ --- id: w3-publish name: "Wave 3: the publish of alkgen 0.1.0" -status: pending +status: completed depends_on: [review-wave-3] scope: narrow risk: medium @@ -45,14 +45,14 @@ is its own task). The checklist: ## Acceptance Criteria -- [ ] Manifest sanity verified and recorded -- [ ] The full verification set green at the publish commit -- [ ] The dry-run clean at the publish commit, file list checked -- [ ] The `alkgen-v0.1.0` tag on the publish commit -- [ ] `cargo publish` executed; the published 0.1.0 verified on +- [x] Manifest sanity verified and recorded +- [x] The full verification set green at the publish commit +- [x] The dry-run clean at the publish commit, file list checked +- [x] The `alkgen-v0.1.0` tag on the publish commit +- [x] `cargo publish` executed; the published 0.1.0 verified on crates.io (or the credential absence booked, never a silent skip) -- [ ] The plan's closure recorded (wave-3 row, status `closed`, the +- [x] The plan's closure recorded (wave-3 row, status `closed`, the freeze surfaces noted one-way) ## References @@ -66,4 +66,40 @@ is its own task). The checklist: ## Notes -Filled by the implementation agent. +Filled by the implementation agent (2026-11-07), executing over the +green `review-wave-3` verdict. + +- **Manifest sanity verified** (no bump; 0.1.0 is the manifest + value): version 0.1.0, edition 2021, `rust-version` 1.85, + `license = "MIT OR Apache-2.0"` with LICENSE-MIT + LICENSE-APACHE + present, the pins exactly as the freeze inventory records them + (handlebars 6.4, serde 1 derive, serde_json 1 with `preserve_order`, + thiserror 2; `default = []`, `bast-codegen` declared and gating + nothing), the package-policy `exclude` list in its fixed form, the + readme/categories/keywords metadata in place. +- **The full verification set green at the publish tree**: `cargo + test` (53: 19 lib + 13 conformance + 7 code_proof + 4 ssr_proof + 5 + code_fixtures + 3 ssr_fixtures + 2 doctests), `cargo test + --all-features` (identical), `cargo clippy --all-targets + --all-features -- -D warnings` (clean), `cargo fmt --check` (clean), + `cargo doc --no-deps` (warning-free), `cargo build --target + wasm32-unknown-unknown --release` (clean), `taskgraph validate` (21 + tasks valid), the ADR-002 tree inspection (`handlebars v6.4.4 + default` only), the standing em-dash grep (zero hits). +- **The dry-run clean at the publish commit**: + `cargo publish --dry-run --allow-dirty` clean (48 files, + 199.6KiB, package compile verification passing); + `cargo package --list` re-checked: only src, tests + fixtures, + docs/architecture/, README, CHANGELOG, both licenses, manifests; + none of the excluded surface (AGENTS.md, .opencode/, + docs/plans|reviews|research/, docs/sdd_process.md, tasks/). +- **The publish credential is present in this environment** (the + registry token), following the alkssh sibling convention: the + publish executes live, no operator handover; had it been absent + the task would have stopped and booked it here. +- **The closure records ride the publish commit**: the plan file's + status flipped to `closed`, the wave-3 row to `published`, and the + closure note (freeze inventory one-way; future engine-owned sets + through successor waves) land in the tagged commit. The closure + edits touch only package-excluded paths (docs/plans/, tasks/), so + the packaged payload is unchanged from the dry-run.