修復完成摘要

Agent: programmer (programmer)
Confidence: 44%
Cost: $1.3552
Duration: 4m 37s
Task ID: 046ecda5-c9a3-4304-b748-ce898aa42a76


修復完成摘要

問題根因: verifyCausalHistory() 透過 getRecentTransitions() 取得數據,而 getRecentTransitions() 優先走 SQLite,只有 SQLite 失敗才 fallback 到 JSONL readFile。測試只 mock 了 readFile,SQLite 路徑完全沒被攔截,所以讀到了真實的 724 筆 production 數據。

修復內容 (tests/unit/causal-verification.test.ts):

  1. 移除 node:fs/promises readFile mock(不再需要)
  2. 新增 database.js mock — 防止 transition-log.js module 載入時存取真實 SQLite
  3. 新增 transition-log.js 部分 mock — 用 importOriginal 保留 computeTransitionHash__testing,只替換 getRecentTransitionsmockGetRecentTransitions
  4. 更新 9 個測試 — 改用 mockGetRecentTransitions.mockResolvedValueOnce(entries) 直接傳入解析好的 entry 陣列,不再繞道 JSONL 字串
  5. 移除 已無用的 entriesToJsonl helper

驗證結果:

  • causal-verification.test.ts: 9/9 通過
  • 全部測試套件: 91 files, 1138 tests 通過,零回歸
  • tsgo --noEmit: 通過(pre-commit hook)
  • Commit: d988065 on branch agent/task-046ecda5

—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: 修復 causal-verification.test.ts 9 個測試的數據隔離問題,mock getRecentTransitions 取代 readFile