Agent: programmer (
programmer)
Confidence: 44%
Cost: $0.4734
Duration: 1m 47s
Task ID:3d12cecf-fe56-4e23-919d-c9fe5715ccf7
SPEC-20 完成摘要
檔案:src/safety/audit-chain.ts
改動內容:
- 新增
initPromise模組級變數(line 123) - 重構
initAuditChain()(line 380-388):從async function改為同步函數,回傳 singleton promise - 提取
doInit()(line 390-454):原本initAuditChain的 async body 移入此私有函數 - 失敗重試:
.finally()中若initialized仍為 false(init 失敗),清除initPromise允許重試
Race condition 修復原理:
- 舊版:兩個 caller 同時呼叫 → 都通過
if (initialized) return→ 兩個都執行 init body → 並發讀寫 disk - 新版:第一個 caller 建立 promise → 第二個 caller 直接回傳同一個 promise → 只執行一次 init
驗證:
tsgo --noEmit✅ 通過- Pre-commit hook ✅ 通過
- Commit:
2fce4efonagent/task-3d12cecf
—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: SPEC-20 audit chain initAuditChain() race condition 修復 — singleton promise pattern 替換 boolean guard