review 002: the protocol core reviewed — readiness-contract hardening + two convention fixes
The batch-1 gate review (tasks/implementation/review-protocol-core.md): all eight criteria examined (seam contracts, wire fidelity, access control, teardown/lifecycle, conventions, wasm, POC fidelity, docs sync); the gate to batch 2 opens. Findings R-1/R-2 were corrected in the review change; R-3..R-5 are doc residues fixed in the same change; R-6 is accepted with rationale. - R-1 (major): the datagram stage's Ok(None) re-park is unsafe against a zero-yield egress — a next_reply that is a pure instantly-ready Ok(None) with no await wins every select! poll and livelocks the stage on a current-thread runtime (empirically reproduced; the landed unit test's mutex masked the hazard at its lock's yield boundary; multi-thread survives). Fix: the Ok(None) handler yields before re-parking; a pinning unit test drives the strictest zero-yield violator. - R-2: the two into_inner expect()s (consumer sessions) become typed Result<_, SpentSessionError> — convention 2's no-panic rule; spent- session unit tests pin the shape; test call sites updated. - R-3/R-4/R-5: doc residues — stale task-time phrasings in egress.rs/producer.rs, producer.md's register() sketch reconciled to the landed signature, the establishment-bound test doc reworded to what the substrate-free probe actually pins. - R-6 (accepted): the wasm gate rides a transitive getrandom/wasm_js feature unification (alkcall -> jsonschema/referencing -> ahash) — verified compiling clean today; noted for OQ-SK2-06. Verified: cargo test 348 green; --all-features green; clippy --all-targets -D warnings clean; fmt --check clean; both wasm checks clean (from a clean wasm target dir); cargo doc --no-deps clean. The bind-only-identity reconciliation from the integration session was independently verified as correct (ADR-006 as landed; the suite pins it). Batch boundary holds: no local/composed code exists.
This commit is contained in:
1 parent
1ad8d9d489
commit
16b21e3447
7 files changed
+466
-46
No files matched your search
@@ -140,7 +140,9 @@ let producer = Socks5Producer::builder()
|
||||
.egress(egress_factory) // EgressFactory — required for ASSOCIATE
|
||||
.accept(bind_accept_factory) // BindAcceptFactory — required for BIND
|
||||
.build();
|
||||
producer.register(&mut channel_core)?; // register_openable_with_establisher
|
||||
// register(&core, ®istry, auth, witness) — the establisher rides
|
||||
// the registration (the optional witness is the CF-006 test probe).
|
||||
producer.register(&core, ®istry, auth, None)?;
|
||||
```
|
||||
|
||||
Missing callbacks = those commands refuse RFC-faithfully
|
||||
|
||||
Reference in new issue
Block a user