review: the fix-round gate closed — every review-002 finding verified, batch 2 opens

The closing checkpoint (tasks/implementation/review-fix-round-002.md):
each review-002 finding verified closed against the landed tree, the
full verification sweep green, conventions re-swept, and the gate
condition (ADR-014 accepted, no major finding) holds.

Per-finding verification (all nine checklist points):
- C-1: the take-guard verified — a second await_inbound returns the
  spent shape Ok(None), the re-read structurally impossible (the plane
  owns the stream); pinned by the double-read + reply1-twice tests.
  D-1's one-reader decision recorded (option (a), BindReply1 cut).
- C-3 closed: the builder's explicit bind_policy is the substrate-free
  gate; the presence reading is only the backward-compat default; the
  pump handler's identity-derived gate byte-identical.
- D-2 closed: the full builder chain through .register(...) serves all
  three commands end to end (RegisterMode::ProducerBuilder + the
  integration test, identity witness asserted).
- N-1/N-4 coherent: the cut list gone (zero references), keep-notes
  current, the Refused vocabulary honest at all five sites + the
  harness's minimal producer, wire untouched, provenance extended.
- D-3 resolved (declare side): the channel:open_failed ErrorDefinition
  declared, schema pinned drift-free against the typed parse table.
- N-8 re-run: 96.30% regions / 97.28% lines; every named line covered;
  the residual attributed (accept_bi log arm, fork accepted-uncovered,
  test panic-guards) — no new load-bearing gaps.
- N-5/N-6 verified: the shared module compiles into both crates via
  the crate-root mount + extern-crate-self alias; open_and_negotiate
  single-sources the teardown-at-birth prologue.
- C-2 decided: ADR-014 accepted (option 1 — teardown-governed phases),
  the spec lines carry the posture.
- Cross-cutting sweep green: test 375 green (+ all-features, local,
  composed), clippy -D warnings clean, fmt clean, doc clean, both wasm
  checks clean, publish dry-run completes; no unwrap/expect/panic in
  non-test code (mechanically attributed across src/); no local/
  composed code exists (the batch boundary holds).

One gate-round finding, F-1 (minor), fixed in this change: the
review-numbering collision — "review 002 R-1/R-2/R-4" cited the
batch-1 gate review's findings (tasks/implementation/
review-protocol-core.md) under a name that now means the general
review; reworded to "the gate review's R-N" at all six sites
(producer.rs, consumer.rs, egress.rs, the review doc). Review 002
marked resolved; the next general review doc is 003-*.

Verification: cargo test (375 green), --all-features + --features
local/composed green, clippy --all-targets -D warnings clean, fmt
--check clean, doc clean, both wasm checks clean, publish dry-run
completes, llvm-cov 96.30% regions / 97.28% lines attributed.
This commit is contained in:
glm-5.3-flash committed 2026-09-25 04:02:16 +00:00
1 parent 07b8a74241
commit 431920ddef
5 files changed
+222 -20

No files matched your search

+2 -1
View File
@@ -107,7 +107,8 @@ where
}
}
/// The spent-session marker (review 002 R-2): [`Socks5ChannelSession
/// The spent-session marker (the gate review's R-2,
/// tasks/implementation/review-protocol-core.md): [`Socks5ChannelSession
/// ::into_inner`] / [`AssociateSession::into_inner`] return it when
/// the pipe/stream was already taken — reachable only by calling
/// twice on a session whose inner is gone. Carries nothing: a spent
+4 -3
View File
@@ -41,9 +41,10 @@
//!
//! The readiness-contract behavioral tests (an instant-`Ok(None)`
//! egress must not starve the datagram stage — including the
//! zero-yield shape, review 002 R-1) live in the producer module's
//! test suite, next to the stage they pin. This module carries the
//! error→reply-code mapping tables, the sync-lift factory
//! zero-yield shape, the gate review's R-1,
//! tasks/implementation/review-protocol-core.md) live in the producer
//! module's test suite, next to the stage they pin. This module
//! carries the error→reply-code mapping tables, the sync-lift factory
//! constructor, and the compile-shape assertions.
use std::future::Future;
+4 -2
View File
@@ -383,7 +383,8 @@ where
// and the runtime's other tasks on a current-thread
// scheduler (an instantly-ready branch that yields
// nothing wins every poll — the readiness contract's POC
// #2 finding, hardened by review 002 R-1).
// #2 finding, hardened by the gate review's R-1
// (tasks/implementation/review-protocol-core.md)).
reply = egress.next_reply() => {
match reply {
Ok(Some(frame)) => {
@@ -1242,7 +1243,8 @@ mod tests {
.expect("clean");
}
/// The readiness contract's zero-yield bound (review 002 R-1): an
/// The readiness contract's zero-yield bound (the gate review's
/// R-1, tasks/implementation/review-protocol-core.md): an
/// egress whose `next_reply` is a pure `async { Ok(None) }` —
/// instantly ready AND yielding no poll boundary — must still not
/// starve the stage's channel branch. The stage's `Ok(None)`