docs(review): close the wave-5 release gate — verdict green (review-wave-5)

This commit is contained in:
glm-5.3-flash committed 2026-10-30 21:53:26 +00:00
1 parent ab5236ebbb
commit 9383e9517a
1 file changed
+183 -11
+183 -11
View File
@@ -1,7 +1,7 @@
---
id: review-wave-5
name: Wave 5 gate — the release review
status: pending
status: completed
depends_on: [w5-decline-matrix, w5-e2e-server, w5-e2e-client, w5-fuzz-harness, w5-release-readiness]
scope: narrow
risk: low
@@ -52,20 +52,20 @@ Verdict: green (`w5-publish` unblocked) or findings booked
## Acceptance Criteria
- [ ] The matrix audit table verified cell by cell against
- [x] The matrix audit table verified cell by cell against
`mapping.md`; the runner in the verification list
- [ ] Both e2e postures verified (nothing silently green; findings
- [x] Both e2e postures verified (nothing silently green; findings
discharged or booked)
- [ ] The fuzz corpus gate + campaign logs read clean; the sidecar
- [x] The fuzz corpus gate + campaign logs read clean; the sidecar
convention held
- [ ] Release readiness verified (docs × builds, README/CHANGELOG,
- [x] Release readiness verified (docs × builds, README/CHANGELOG,
package policy, manifest, dry-run)
- [ ] The freeze inventory verified accurate against the landed code
- [ ] Full verification set green (`cargo test` per build +
- [x] The freeze inventory verified accurate against the landed code
- [x] Full verification set green (`cargo test` per build +
`--all-features`, clippy ×2 `-D warnings`, fmt,
`cargo doc --no-deps`, the fuzz corpus gate)
- [ ] `taskgraph validate` clean
- [ ] Verdict recorded; `w5-publish` unblocked or findings booked
- [x] `taskgraph validate` clean
- [x] Verdict recorded; `w5-publish` unblocked or findings booked
## References
@@ -79,8 +79,180 @@ Verdict: green (`w5-publish` unblocked) or findings booked
## Notes
> To be filled by the reviewing agent
**Verdict: green.** `w5-publish` is unblocked. Every gate read was
re-executed live at this commit (2026-10-30, post-`ab5236e`) — nothing
was taken solely from the task records. No blocking issues; no code
findings; nothing rose to booked-remediation level. Notes below.
### The matrix suite ✓
Every test name the coverage audit pins resolves in its binary (the
full inventory grep-verified this session — all 26 `dispatch_core`
rows / all 8 `tunnel_mapping` + `git_mapping` + client-side rows
named in the audit table exist), and `mapping.md` §Decline matrix
traces cell by cell onto audit rows: the none build declines
everything (`every_channel_open_declines_in_a_default_build` + the
shared x11/agent/cancel/listen rows); the git build's declines
(pty/shell — the gap-closed pty row, plain exec, tunnel opens,
unreachable session requests, subsystems, unknown services) and its
one serve (git-parseable exec); the session build's symmetric shape
(git-parseable exec declines, wrapper-unset declines, seam-unset
pty/shell); the tunnel build's serve/decline split incl. the seam-unset
listen forms and the `ConnectFailed` fabric reject; the sftp slot's
unchanged-underlying-build row (the subsystem row can't appear where
session channels decline at open — the audit row 8's reasoning holds;
the client-side placeholder pins every build); the never-features
pinned in every build both directions, with the `auth-agent` open's
pin-bound-unreachable record read and accepted (the russh-0.65
pre-handler decline is part of the pin per ADR-002). The runner
(`scripts/matrix.sh`, the script vehicle decided + recorded) is in
AGENTS.md's verification list.
### Both e2e postures ✓ — nothing silently green
`tests/e2e_server.rs` (12 rows) and `tests/e2e_client.rs` (7 rows)
both read: every real-tool row is check-gated with
`support::skip(row, reason)` prints — tool absent/short, spawn
refusal, and (client fixture) never-listening with the server's `-e`
log tail — never a silent pass; every row is deadline-bounded end to
end; every decline row additionally pins the door-side decline
event (the e2e_server rows). The task records' findings are all
e2e-graph-local flake hardening (per-row workdirs, the monotonic
port allocator, the fabric settle, the event poll) — corroborated by
the 10-consecutive-run claims and this session's full-matrix run.
The e2e_client fixture/gating decisions (tunnel+session gating for
the stays-usable row, every-build rows for the feature-free ops) are
recorded in the task and read honest. On this host every row ran
(OpenSSH 9.6p1, git 2.43, curl 8.5, sftp present) — the matrix log
carries the real-tool rows green, no skip prints fired.
### The fuzz sidecar ✓ — convention held, logs clean
Layout matches the alkgit convention (`fuzz/README.md`: thin
`fuzz_target!` wrappers, the stable-clean `shared/` library, the
detached runner, the nightly pin inside `fuzz/`, committed seeds +
the deterministic generator, grown corpora/artifacts/coverage
gitignored). `gen_fuzz_seeds.py` re-run this session was a no-op
diff on the committed set. The corpus gate re-ran green (11/11,
exit 0). The four final campaign logs read clean — `oom/timeout/
crash: 0/0/0`, `exiting: 0` (exec_parse 43M+ execs / fingerprint
12M+ / key_decode 5M+ / terminal_params 9M+); the two first-campaign
crash logs (exec_parse exit 77, key_decode exit 77) are exactly the
recorded in-task findings — the harness oracle's double-`/` strip
(harness-side, fixed) and the ssh-key PPK header echo (the real
finding: `decode_key_arm` now carries a crate-owned fixed message;
re-ran clean). The exposure shape matches the record: one
no-exposure target (fingerprint — fully public ingress) + three
`#[doc(hidden)]` production-surface re-exports; the root crate's
package excludes the sidecar (verified in the package list) and the
root workspace excludes it (workspace + package excludes in
`Cargo.toml`).
### Release readiness ✓
`cargo doc --no-deps` warning-free on the default build (matrix run)
**and** `--all-features` — re-run this session, exit 0, zero
warnings. README (feature graph + fail-closed posture + custody
summary + the doctest-mirrored examples) and the CHANGELOG 0.1.0
founding entry both read honest and match the landed surface. The
publish dry-run re-ran clean (76 files packaged, verification
compile passed, upload aborted by dry run); `cargo package --list`
re-verified against the package policy — exactly `src/` (20),
`tests/` (+common +vectors), `docs/architecture/` (the full
contract: the four spec docs + ADRs 001–006 + README + the tracker),
`README`, `CHANGELOG`, both licenses, the manifests, and
`scripts/matrix.sh`; none of the excluded surface (AGENTS.md,
`.opencode/`, plans/research/reviews/sdd_process, tasks/, `fuzz/`)
appears. Manifest sanity: version 0.1.0 (the manifest value —
`w5-publish` verifies, no bump), edition 2024, `rust-version` 1.89,
license + both files, the pins exactly as ADR-002 records them
(russh 0.65 `default-features = false` + `aws-lc-rs`; alkcall 0.10;
alkvault 0.1; the optional siblings 0.8.1 / 0.1.0 / 0.4.1), the
feature graph exactly ADR-003's flat shape, `default = []`.
### The freeze inventory ✓ — accurate against the landed code
Item by item: (1) the mapping contracts — the route-1 bridge,
exec-only grammar + verdicts, parse-only dispatch +
decline-before-alloc, translation bridge + exit rules 1–6, the client
planes — as executed in `dispatch.rs`/`tty_map.rs`/`git_map.rs`/
`tunnel_map.rs`/`client_ops.rs` and line-by-line read green at the
wave-3/4 gates; (2) the honest-advertisement posture — `MethodSet`
exactly `{PublicKey}` at the adapter's `Config` construction
(`adapter.rs:135`), verified by its own unit row; (3) the
decline-matrix behavior — the `OpenDeclineReason` vocabulary and
decline shapes as pinned by the matrix suite; (4) the fingerprint
format — `SHA256:` + unpadded base64 via `HashAlg::Sha256`
(`fingerprint.rs:29`), the single path both the auth bridge and the
policy pin consume; (5) the russh pin's wire posture — 0.65.0 +
`aws-lc-rs`, `des`/`dsa` never, per `Cargo.toml`. The inventory as
recorded in `w5-release-readiness.md` matches the landed code; the
publish freezes exactly those surfaces.
### The plan's closure conditions ✓
The complete two-direction door shipped (server stack + all four
mapping rows + the decline placeholder; dial + op rows + the `-R`
leg + lifecycle primitives); the assembly stays out (no
identity/ACL/fabric policy owned by the crate — seams only); no
binary (no `[[bin]]` target; the package ships one lib); single
crate (single-member workspace, no tracks); nothing absorbed
silently — the upstream-ask inventory verified still booked with its
owners:
- wave-3 gate item 5 (two asks): the alktunnels/alkcall
non-detaching post-construction identity seam (the door keeps the
no-detach posture — no `set_identity`-style surface appeared in
`src/` through the release), and mapping.md's correlation-miss
event-vocabulary nuance.
- The wave-5 fuzz finding's `ssh-key` PPK parse-echo ask — recorded
in `w5-fuzz-harness.md` as booked with the russh/ssh-key owners;
the actual tracker filing is owner-territory and stays listed
here so it cannot be absorbed at the publish.
### Observations (non-blocking, no action required)
- The packaged file list includes `tests/vectors/alpha.key` — the
committed ed25519 test-fixture private key. Intentional (wave 1's
fixtures, public test material, no custody posture applies) and
consistent across the family's sibling crates; noted here so the
published package's content is consciously accounted for.
- `w5-publish`'s tag + plan-closure steps are the only remaining
work; the ssh-key ask filing may ride with it if the owners want
it in-flight before the release notes name the fix's provenance.
### Verification (re-run at this commit, all green, 2026-10-30)
`scripts/matrix.sh`: `cargo test` × 6 builds (none / git / session /
tunnel / sftp-only / --all-features — 151 / 195 / 210 / 201 / 151 /
281 tests passed, 0 failed; all integration binaries + doctests
included) · clippy (--all-targets -D warnings) ✓ · clippy
(--all-features --all-targets -D warnings) ✓ · `cargo fmt --check`
✓ · `cargo doc --no-deps` ✓ (plus `--all-features` re-run ✓) · the
fuzz corpus gate `cargo test --manifest-path fuzz/shared/Cargo.toml`
✓ (11/11) · `cargo publish --dry-run --allow-dirty` ✓ ·
`taskgraph validate` ✓ (42 tasks, no orphan tasks after the wave-5
completion statuses).
## Summary
> To be filled on completion
**Verdict: green — `w5-publish` unblocked.** The wave-5 release gate
re-executed every read live at the gate commit: the coverage audit
traced cell by cell onto `mapping.md`'s decline-matrix table with
every pinned test resolving in its binary and the `sftp`
no-op-feature fact + never-features verified in every build both
directions; both e2e binaries read with nothing silently green (the
whole suite ran on this host — no skips fired); the fuzz sidecar
held the alkgit convention with the seeds no-op, the corpus gate
green, and all four final campaigns clean (the two first-campaign
crashes exactly the recorded fixed findings); release readiness
verified (docs warning-free × builds, README/CHANGELOG honest, the
package list against policy, the dry-run clean, manifest sanity);
the freeze inventory confirmed accurate against the landed code, to
become one-way at the publish; the plan's closure conditions
verified (two-direction door, assembly out, no binary, single
crate, upstream asks still booked). One real code fix was already
discharged in-task (the `ssh-key` PPK echo → crate-owned decode
message). No blocking issues and no findings — this is the plan's
last review; `w5-publish` (tag `alkssh-v0.1.0`, the verification
set, the publish, the plan closure) closes it.