← back to Secrets Manager
TK-11683: document ENOENT-exclusion tradeoff (codex-check/Grok) — single-cycle self-healing vs chronic-WARN masking
b0935a9a484e14ddb280bd71cd1b4d861b4101b4 · 2026-09-16 12:34:12 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qf3DHSrZSGBXkNENgsYdM8
Files touched
Diff
commit b0935a9a484e14ddb280bd71cd1b4d861b4101b4
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Sep 16 12:34:12 2026 -0700
TK-11683: document ENOENT-exclusion tradeoff (codex-check/Grok) — single-cycle self-healing vs chronic-WARN masking
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qf3DHSrZSGBXkNENgsYdM8
---
scan-transcripts.mjs | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/scan-transcripts.mjs b/scan-transcripts.mjs
index e5f9ff8..34f5aea 100644
--- a/scan-transcripts.mjs
+++ b/scan-transcripts.mjs
@@ -72,6 +72,18 @@ function runScan(projectsDir) {
// NOT a measurement gap (nothing to certify), so it does NOT flip to WARN.
// A genuinely-unreadable file (a real, non-ENOENT error surviving the
// retry) still counts as unreadable → WARN (fail-safe, cannot certify clean).
+ //
+ // RECORDED TRADEOFF (codex-check via Grok, 2026-09-16): ENOENT could in theory
+ // be an atomic-rename to a DIFFERENT .jsonl not in this run's enumeration, which
+ // would let a persistent secret go unscanned this cycle. Accepted deliberately
+ // because: (a) Claude Code appends to a stable <uuid>.jsonl and does NOT rename
+ // transcripts between .jsonl names — the observed vanish is pure delete/rotate;
+ // (b) this is a SCHEDULED durable-state canary, so any file that truly persists
+ // is caught on the NEXT run once it is stable in the enumeration (a miss is
+ // single-cycle, self-healing); (c) the strict alternative (WARN on every ENOENT)
+ // reintroduces the chronic-WARN noise that masks a real FAIL as "just the flaky
+ // canary" (TK-11795) — the worse failure. Flip to strict WARN only if Claude
+ // Code's transcript write model ever changes to cross-name renames.
for (const f of files) {
let text;
try { text = fs.readFileSync(f, 'utf8'); scanned++; }
← 11e21a4 TK-11683: harden transcript scanner read loop (mid-write rac
·
back to Secrets Manager
·
auto-data-snapshot: 2026-09-17T09:53:49 (2 data files) — reg af8153b →