Your Name
f1362fcc8d
Code Review / ai-code-review (push) Successful in 49s
CD Pipeline / tests (push) Successful in 2m9s
CD Pipeline / build-and-deploy (push) Failing after 31m11s
CD Pipeline / post-deploy-checks (push) Has been skipped
fix(governance): 修治理告警 4 個 silent failure + Prom sentinel 連鎖
【全景檢測:12-agent 並行掃描定位 4 大 bug 與 1 個 P0 連鎖回歸】
Bug 1(P0 silent failure)— governance_agent.check_trust_drift
原 `await db.commit()` 縮排錯在 async with 區塊外(8 空格 vs 12),
session 已 auto-commit 關閉,二次 commit 拋 InvalidRequestError 被吞,
governance_trust_drift_auto_deprecated log 從不出現。修:commit/log 移回 with 內。
附 AST regression guard test 擋退化。
Bug 2 — flywheel_stats_service / W-3 fresh deploy 假告警
Redis 空時 total_exec=0 → rate=0.0 → watchdog `< 0.30` 立即觸發
「飛輪成功率 0%」假告警。修:total_exec < FLYWHEEL_MIN_SAMPLE(10) 回 None,
watchdog 判 None 跳過 W-3。Prometheus sentinel 用 NaN(非 -1.0)
避免觸發 ops/monitoring/alerts.yml:775 等 3 份 prom rule 的 `< 0.1`
條件造成 2h 後假告警連鎖。前端 type 同步 number | null。
Bug 3 — failover_alerter dedup key
原 key 只看 event_type 不看 payload,trust_drift 4→25 IDs 變動全被
1h dedup 吞掉。修:dedup key 加 sha256(impact subdict)[:8],event_type
sanitize 防特殊字元污染 Redis key。
Bug 4 — ai_slo_watchdog_job W-4 evolver 全封存初始化誤報
原邏輯 approved==0 即告警,未排除「playbooks 表初始化中」場景。
修:_count_approved_playbooks 回 (approved, total),total==0 → skip。
【執行結果】
- 39 個相關 unit test 全過(test_failover_alerter / test_governance_agent /
test_trust_drift_watchdog / test_check_trust_drift_commit_outside_context_poc)
- 6 個關鍵路徑實測:NaN sentinel / float 渲染 / hash 區分性 / dedup 同 impact
相同 hash / datetime 容錯 / 4 檔 py_compile 全過
【調度教訓 — 留作未來改進】
- 12-agent 並行調度時,vuln-verifier 與 fullstack-engineer 競態
導致 vuln-verifier 讀到已修代碼誤判 NOT REPRODUCIBLE。
未來:vuln-verifier 應在 fullstack 之前執行,或用 git show HEAD~1 對比修復前。
- fullstack-engineer 引入 P0 regression(f-string 內嵌 ternary 非法 format spec),
critic 抓到 + Prom sentinel 連鎖 — 證明 critic 審查必要不可省。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 00:18:57 +08:00
..
2026-04-25 03:29:38 +08:00
2026-05-01 11:03:03 +08:00
2026-03-26 16:06:20 +08:00
2026-04-25 02:33:43 +08:00
2026-04-05 14:45:02 +08:00
2026-03-31 16:25:00 +08:00
2026-04-10 11:22:57 +08:00
2026-05-01 16:53:02 +08:00
2026-05-01 16:53:02 +08:00
2026-05-01 15:09:57 +08:00
2026-04-27 08:15:53 +08:00
2026-04-29 11:39:36 +08:00
2026-04-29 21:51:18 +08:00
2026-04-22 01:33:30 +08:00
2026-04-29 10:44:39 +08:00
2026-04-20 04:13:02 +08:00
2026-04-22 01:41:34 +08:00
2026-04-20 19:40:01 +08:00
2026-04-20 19:40:01 +08:00
2026-04-14 14:39:14 +08:00
2026-04-30 14:06:09 +08:00
2026-05-01 13:02:07 +08:00
2026-03-29 15:27:49 +08:00
2026-04-29 19:44:04 +08:00
2026-04-14 14:39:14 +08:00
2026-03-29 15:27:49 +08:00
2026-05-01 10:47:42 +08:00
2026-04-27 15:22:31 +08:00
2026-05-01 20:34:33 +08:00
2026-05-03 00:18:57 +08:00
2026-03-29 15:48:03 +08:00
2026-04-12 22:50:20 +08:00
2026-04-27 08:11:40 +08:00
2026-04-27 08:11:40 +08:00
2026-04-30 14:06:09 +08:00
2026-04-30 14:06:09 +08:00
2026-04-27 08:11:40 +08:00
2026-05-02 17:41:28 +08:00
2026-05-02 12:31:37 +08:00
2026-04-30 14:06:09 +08:00
2026-04-27 14:42:29 +08:00
2026-05-01 20:34:33 +08:00
2026-04-30 15:01:23 +08:00
2026-04-26 20:56:19 +08:00
2026-03-31 12:16:54 +08:00
2026-04-15 12:44:53 +08:00
2026-04-14 18:43:29 +08:00
2026-04-29 22:56:12 +08:00
2026-04-11 21:33:19 +08:00
2026-04-26 20:17:17 +08:00
2026-04-01 11:11:50 +08:00
2026-04-28 15:27:33 +08:00
2026-05-03 00:05:04 +08:00
2026-04-07 11:17:40 +08:00
2026-04-29 23:38:30 +08:00
2026-03-31 16:16:16 +08:00
2026-04-27 14:54:19 +08:00
2026-04-29 19:44:04 +08:00
2026-04-29 10:44:39 +08:00
2026-04-29 10:44:39 +08:00
2026-04-29 10:44:39 +08:00
2026-04-26 20:44:19 +08:00
2026-03-31 12:20:29 +08:00
2026-04-26 20:18:33 +08:00
2026-03-26 16:06:20 +08:00
2026-04-29 10:44:39 +08:00
2026-04-15 13:08:38 +08:00
2026-04-12 13:32:42 +08:00
2026-04-29 22:56:12 +08:00
2026-04-27 14:58:46 +08:00
2026-04-30 23:02:17 +08:00
2026-03-29 20:49:23 +08:00
2026-04-03 14:00:21 +08:00
2026-04-26 20:18:33 +08:00
2026-04-27 15:47:41 +08:00
2026-04-26 20:18:33 +08:00
2026-05-01 13:02:07 +08:00
2026-04-29 22:38:57 +08:00
2026-05-02 12:31:37 +08:00
2026-04-29 11:39:36 +08:00
2026-04-27 08:11:40 +08:00
2026-04-27 08:17:59 +08:00
2026-04-30 14:13:57 +08:00
2026-04-09 08:55:21 +08:00
2026-04-05 00:14:50 +08:00
2026-04-05 00:14:50 +08:00
2026-04-30 23:59:39 +08:00
2026-04-30 23:59:39 +08:00
2026-04-14 15:19:54 +08:00
2026-04-15 13:08:38 +08:00
2026-04-15 13:08:38 +08:00
2026-03-31 14:17:36 +08:00
2026-04-27 19:56:51 +08:00
2026-03-29 16:23:30 +08:00
2026-03-23 23:51:37 +08:00
2026-04-14 14:39:14 +08:00
2026-04-30 14:06:09 +08:00
2026-04-29 10:49:25 +08:00
2026-04-15 13:08:38 +08:00
2026-04-20 04:23:09 +08:00
2026-04-29 19:44:04 +08:00
2026-04-27 08:24:59 +08:00
2026-04-27 16:00:00 +08:00
2026-04-09 09:01:59 +08:00
2026-04-27 14:42:29 +08:00
2026-05-02 12:31:37 +08:00
2026-05-01 16:53:02 +08:00
2026-04-10 01:12:00 +08:00
2026-04-30 00:09:25 +08:00
2026-04-30 15:01:23 +08:00
2026-04-27 19:56:51 +08:00
2026-04-12 21:08:48 +08:00
2026-04-30 00:09:25 +08:00
2026-03-31 16:16:16 +08:00
2026-04-22 01:27:39 +08:00
2026-04-27 08:24:37 +08:00
2026-04-27 08:11:40 +08:00
2026-05-03 00:05:04 +08:00