T3 closure: reconcile §8C.3 trigger narrative + C5 pin strength

Two document-truthfulness mismatches flagged by architect review:

§B Governance transition (closure report): previously claimed "no
§8C.3 triggers fired during T3"; §H Phase 3's own BUG-005 description
matches trigger #1 (unknown-unknown architectural bug, V2/V3 shape-
level mismatch). Corrected to say trigger #1 fired once (BUG-005)
and was handled per §8C.3, with log entry, architect+PM notification,
catalogue §2.3 drift-event row, and porting-discipline citation.

C5-NVME-SESSION-STATE-CLEANUP-ON-CLOSE (contract bridge catalogue
§2.2.14): previously stated "PASSES today" / "pinned explicitly".
Closure §H Phase 4 correctly narrows landed tests to "smoke +
goroutine-leak guard" with Target.ctrls/AER/KATO-stored-ms
introspection not exercised. Catalogue row now matches that
strength: "pin strength today: smoke + goroutine-leak guard only;
full state-release introspection NOT exercised; queued as
follow-up".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
pingqiu
2026-04-22 22:14:08 -07:00
co-authored by Claude Opus 4.7
parent 4127e5136c
commit 6e196885e4
2 changed files with 3 additions and 3 deletions
@@ -403,9 +403,9 @@ If the entity is `new` (§1.0), contracts are fresh and subject to §8C.5 semant
| C2-NVME-SESSION-AER-PARK-ONLY | AER request parked in single slot; never emits events; slot cleared on session close | REBUILD (V2 full-event-source → V3 park-only) | `session.go` tryParkAER + clearPendingAER | `TestT3b_NVMe_AER_Parks` + OAES advertised=0 pin |
| C3-NVME-SESSION-CNTLID-ECHO | IO Connect must echo admin CNTLID; mismatch rejected | NEW (V3 strict; V2 was looser) | `session.go` handleIOConnect + Target.ctrls lookup | `PCDD-NVME-FABRIC-CNTLID-ECHO-001` |
| C4-NVME-SESSION-SERIAL-PDU-LOOP | rxLoop single-threaded; same C3-CONTROLLER-RXLOOP-SERIAL but session-scope view | PRESERVE | same as §2.2.2 C3 | BUG-001 test family |
| C5-NVME-SESSION-STATE-CLEANUP-ON-CLOSE | All session-scope state (KATO, AER slot, CNTLID reservation, pendingCapsules) MUST be released by Session.Close; leaks across sessions forbidden | NEW-explicit (T3-DEF-6 retrofit) — PASSES today | `session.go` Close path releases each; now pinned explicitly rather than via implicit goroutine-leak count | `TestT3_NVMe_Session_CleanupOnClose_NoLeaksAcrossCycles` + `TestT3_NVMe_Session_CleanupOnClose_CNTLIDAllocator` (`t3_qa_session_cleanup_addendum_test.go`) |
| C5-NVME-SESSION-STATE-CLEANUP-ON-CLOSE | Contract: all session-scope state (KATO, AER slot, CNTLID reservation, pendingCapsules) MUST be released by Session.Close; leaks across sessions forbidden | NEW-explicit (T3-DEF-6 retrofit) — **pin strength today: smoke + goroutine-leak guard only**; full state-release introspection NOT exercised | `session.go` Close path releases each; behavior today confirmed via indirect observation (no goroutine leak across 20 open/close cycles; CNTLID allocator strictly monotonic across 8 cycles with no zero-sentinel / no wedge). Test-only introspection of Target.ctrls map size, AER slot occupancy, and stored KATO ms is **not** exercised — queued as follow-up if/when BUG-006 timer work touches this area or a test-only introspection surface is added | `TestT3_NVMe_Session_CleanupOnClose_NoLeaksAcrossCycles` + `TestT3_NVMe_Session_CleanupOnClose_CNTLIDAllocator` (`t3_qa_session_cleanup_addendum_test.go` at `seaweed_block@313dd52`) |
**Latent-gap audit note (closed 2026-04-22)**: C5 (cleanup-on-close) was formerly an implicit contract tested only via goroutine leak count. Now explicit with dedicated L1 QA addendum tests (T3-DEF-6). C1 (KATO enforcement) was previously tagged PRESERVE-partial assuming revisit later; Matrix D m01 evidence proves the contract is already **violated** — reclassified with BUG-006 anchor (T3-DEF-7).
**Latent-gap audit note (closed 2026-04-22)**: C5 (cleanup-on-close) was formerly an implicit contract tested only via goroutine leak count. Now explicit as a catalogue row with smoke + leak-guard pinning via T3-DEF-6 addendum; the full contract (state-release introspection) is documented but not strongly pinned — queued for post-BUG-006 follow-up. C1 (KATO enforcement) was previously tagged PRESERVE-partial assuming revisit later; Matrix D m01 evidence proves the contract is already **violated** — reclassified with BUG-006 anchor (T3-DEF-7).
### §2.3 Known drift events mapped to this catalogue (audit trail)
@@ -66,7 +66,7 @@
- Mid-T batches (T3a, T3b, T3c) used QA single-sign per §8C.2 — accelerated cadence.
- T3-end requires three-sign per §8C.1 (architect + PM + QA) — this report is the artifact.
- Discovery Bridge: no §8C.3 triggers fired during T3; all scope changes (Addendum A additions to T3.0 audit) went through QA single-sign.
- Discovery Bridge: §8C.3 trigger #1 (unknown-unknown architectural bug — V2/V3 shape-level mismatch, BUG-001 class) **fired once** during T3, on BUG-005 discovery in Path B (session-layer `Backend.Close` cleared Provider-cached Backend across sessions — V3 introduced `frontend.Backend.Close()` abstraction without carrying V2's implicit Subsystem.Dev registry-ownership contract into interface godoc). Handled per §8C.3: architect + PM notified same-day; bug log entry at `bugs/005_backend_close_cross_session.md`; fix `42b045a`; catalogue §2.3 drift-event row added; `feedback_porting_discipline.md` updated with "new-abstraction ownership drift" as third citation. No other §8C.3 triggers fired. All remaining scope changes (Addendum A additions to T3.0 audit) went through mid-T QA single-sign per §8C.2.
---