docs(review): close the wave-5 release gate — verdict green (review-wave-5)
This commit is contained in:
1 parent
ab5236ebbb
commit
9383e9517a
1 file changed
+183
-11
@@ -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.
|
||||
Reference in new issue
Block a user