From 6e196885e47487ee70a90a82c7c0d9753143e15f Mon Sep 17 00:00:00 2001 From: pingqiu Date: Wed, 22 Apr 2026 22:14:08 -0700 Subject: [PATCH] =?UTF-8?q?T3=20closure:=20reconcile=20=C2=A78C.3=20trigge?= =?UTF-8?q?r=20narrative=20+=20C5=20pin=20strength?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- sw-block/design/v2-v3-contract-bridge-catalogue.md | 4 ++-- sw-block/design/v3-phase-15-t3-closure-report.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sw-block/design/v2-v3-contract-bridge-catalogue.md b/sw-block/design/v2-v3-contract-bridge-catalogue.md index 04f761887..8353e6abe 100644 --- a/sw-block/design/v2-v3-contract-bridge-catalogue.md +++ b/sw-block/design/v2-v3-contract-bridge-catalogue.md @@ -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) diff --git a/sw-block/design/v3-phase-15-t3-closure-report.md b/sw-block/design/v3-phase-15-t3-closure-report.md index 1f23ecba7..f5e60870d 100644 --- a/sw-block/design/v3-phase-15-t3-closure-report.md +++ b/sw-block/design/v3-phase-15-t3-closure-report.md @@ -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. ---