fix: resolve review #004 findings W1-W4 + close review gate
W1 (call/protocol/abort-cascade-wiring): wire AbortCascade into CallAdapter handle_stream for EVENT_ABORTED. Cascades with AbortPolicy::AbortDependents, aborts root, no descendant frames on wire (ADR-016 Decision 2). Two integration tests added. W2 (core/endpoint-client-fingerprint): extract TLS client cert fingerprint in dispatch_quinn (SHA256:<hex> of leaf cert DER via peer_identity) and dispatch_iroh (ed25519:<hex> of peer NodeId). Fingerprint format documented in auth.md. Server config change (with_no_client_auth → request-but-don't-require) deferred to new follow-up task core/endpoint-request-client-cert. W3 (vault/mnemonic-debug-redaction): replace Mnemonic derive(Debug) with manual redacting impl (phrase: "[REDACTED]"). Seed confirmed no Debug impl. Redaction test added. W4 (core/auth-apikey-resources): Option B — drop entry.resources from spec. External identities (token/fingerprint) grant scopes only; resource-scoped ACLs are composition-internal (ADR-015/022). auth.md corrected + limitation documented. Two tests confirm empty resources. review-post-impl-fixes: all 4 verified, workspace green (326 tests, 0 failures, 0 clippy warnings). Review #004 status → resolved. Graph: 34 tasks, 12 gens.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: call/protocol/abort-cascade-wiring
|
||||
name: Wire AbortCascade into CallAdapter inbound event path (ADR-016)
|
||||
status: pending
|
||||
status: completed
|
||||
depends_on: [call/protocol/abort-cascade]
|
||||
scope: narrow
|
||||
risk: medium
|
||||
@@ -127,4 +127,14 @@ frame actually reaches `cascade_abort`.
|
||||
> criteria likewise omitted "inbound `call.aborted` triggers cascade."
|
||||
> This task closes that integration gap — all the hard logic already
|
||||
> exists and is tested; this task adds the ~30-line bolt and the one
|
||||
> integration test that would have caught the gap.
|
||||
> integration test that would have caught the gap.
|
||||
|
||||
## Summary
|
||||
|
||||
`handle_stream` now matches `EVENT_ABORTED` → invokes
|
||||
`AbortCascade::cascade_abort` with `AbortPolicy::AbortDependents`, then
|
||||
aborts the root. Non-requested/non-aborted events still log at `debug!`.
|
||||
No descendant `call.aborted` frames sent on the wire. Two integration
|
||||
tests: cascade removes parent + child from `PendingRequestMap`; unknown
|
||||
request_id is a no-op. `cargo test -p alknet-call` (161 tests) and
|
||||
clippy clean.
|
||||
Reference in New Issue
Block a user