Your Name
02362eddcf
CD Pipeline / build-and-deploy (push) Failing after 2m0s
feat(wave4-5): P1.3+P1.4 真接線 + Ollama_188 provider 註冊 + quota atomic 修復
3 個 engineers 在限額前的 Wave 4/5 完成工作(補 commit):
Engineer-B3 — Wave 4 P1.3+P1.4 真飛輪閉環(auto_repair_service.py 才是正確接線位置):
- execute_auto_repair 成功後 fire-and-forget 啟動 PostExecutionVerifier
- record_verification_result 觸發 EWMA trust_score 演化
- snapshot=None(不依賴 EvidenceSnapshot,避免我之前 webhooks.py 補丁的 B2 bug)
- _pending_tasks 管理生命週期,Lifespan shutdown 時等任務完成
Engineer-A4 — Wave 5 B1-fix Ollama188Provider 註冊:
- ai_providers/ollama.py: 新增 Ollama188Provider(OllamaProvider) 子類
- name="ollama_188", is_enabled 看 ENABLE_OLLAMA_188 + OLLAMA_FALLBACK_URL
- analyze() 用 OLLAMA_FALLBACK_URL(192.168.0.188:11434)作為推理端點
- ai_router.py:_init_registry 補 registry.register(Ollama188Provider())
- 修復 BLOCKER:原本 failover_manager 決策返回 "ollama_188",但 executor 查不到
→ not_registered → 188 從未被打到。Wave 2 P1.1 整套容災系統前段卡住。
Engineer-A4 — Wave 5 B3-fix Gemini quota TOCTOU 修復:
- ollama_failover_manager.py:_check_gemini_quota 改用 redis.pipeline()
原 GET → 判斷 → INCR → EXPIRE 四步分離,並行請求在 GET/INCR 間競爭超發
修法:SET NX(首次設 TTL) + INCR atomic pipeline,用 INCR 後新值判斷
Engineer-B3 — test_learning_chain_e2e.py(377 行 No-Mock 整合測試):
- 純 Python Stub + monkeypatch(feedback_no_mock_testing.md 合規)
- execute_auto_repair 成功 → verifier 被呼叫 ✓
- execute_auto_repair 失敗 → verifier 不被呼叫 ✓
- matched_playbook_id=None → log warning 不 crash ✓
- verifier 拋例外 → 修復回傳成功,trust 不更新 ✓
Tests: 42 passed (failover_manager + ai_router_failover_integration 全綠)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Engineer-A4 + Engineer-B3 (上 session) <noreply@anthropic.com>
2026-04-26 20:44:19 +08:00
..
2026-03-25 16:08:49 +08:00
2026-04-26 20:44:19 +08:00
2026-04-25 03:29:38 +08:00
2026-03-28 18:51:52 +08:00
2026-04-16 02:54:34 +08:00
2026-03-26 16:06:20 +08:00
2026-04-19 23:02:57 +08:00
2026-04-03 13:22:36 +08:00
2026-04-03 13:22:36 +08:00
2026-04-26 20:44:19 +08:00
2026-04-15 18:56:26 +08:00
2026-04-21 00:59:21 +08:00
2026-04-19 21:21:46 +08:00
2026-04-12 22:50:20 +08:00
2026-04-14 14:39:14 +08:00
2026-04-24 10:55:50 +08:00
2026-04-15 19:21:21 +08:00
2026-04-25 02:10:06 +08:00
2026-04-26 20:39:53 +08:00
2026-03-31 16:25:00 +08:00
2026-04-24 15:32:23 +08:00
2026-04-26 20:44:19 +08:00
2026-04-24 15:32:23 +08:00
2026-04-14 20:34:14 +08:00
2026-04-14 20:43:40 +08:00
2026-04-10 22:35:37 +08:00
2026-03-29 16:00:46 +08:00
2026-03-26 15:32:52 +08:00
2026-04-25 02:22:40 +08:00
2026-03-23 23:51:37 +08:00
2026-04-25 09:47:35 +08:00
2026-04-19 12:07:29 +08:00
2026-03-26 21:55:50 +08:00
2026-04-24 10:55:50 +08:00
2026-04-04 12:35:05 +08:00
2026-04-16 20:50:06 +08:00
2026-04-17 10:27:39 +08:00
2026-04-20 04:04:13 +08:00
2026-04-05 00:22:38 +08:00
2026-03-22 18:57:44 +08:00
2026-04-15 15:34:33 +08:00
2026-04-11 20:45:53 +08:00
2026-03-29 16:00:46 +08:00
2026-04-16 16:26:07 +08:00
2026-04-24 15:32:23 +08:00
2026-04-26 20:39:53 +08:00
2026-04-16 20:50:06 +08:00
2026-04-19 00:00:31 +08:00
2026-04-21 22:26:07 +08:00
2026-04-21 15:19:14 +08:00
2026-03-31 16:06:35 +08:00
2026-04-15 16:06:54 +08:00
2026-04-01 11:11:50 +08:00
2026-03-24 12:57:36 +08:00
2026-03-31 16:06:35 +08:00
2026-04-25 02:10:06 +08:00
2026-04-09 23:36:36 +08:00
2026-04-07 11:17:40 +08:00
2026-04-11 20:45:53 +08:00
2026-04-24 23:53:56 +08:00
2026-03-31 22:47:54 +08:00
2026-03-31 22:47:54 +08:00
2026-04-25 09:48:04 +08:00
2026-04-24 10:55:50 +08:00
2026-03-31 11:23:38 +08:00
2026-03-26 21:55:50 +08:00
2026-04-12 17:52:57 +08:00
2026-04-24 15:32:23 +08:00
2026-04-10 10:43:53 +08:00
2026-04-11 20:45:53 +08:00
2026-04-02 09:02:41 +08:00
2026-04-17 16:14:44 +08:00
2026-04-19 22:39:40 +08:00
2026-04-11 20:45:53 +08:00
2026-04-15 15:34:33 +08:00
2026-04-11 20:45:53 +08:00
2026-04-15 13:08:38 +08:00
2026-03-26 10:01:57 +08:00
2026-04-09 10:52:40 +08:00
2026-04-15 22:29:09 +08:00
2026-03-26 12:49:30 +08:00
2026-04-25 03:07:28 +08:00
2026-04-09 14:55:04 +08:00
2026-04-26 20:18:33 +08:00
2026-04-26 20:44:19 +08:00
2026-04-26 20:18:33 +08:00
2026-03-31 16:06:35 +08:00
2026-04-24 15:52:25 +08:00
2026-04-24 15:32:23 +08:00
2026-04-10 11:35:10 +08:00
2026-04-24 10:55:50 +08:00
2026-04-04 12:02:03 +08:00
2026-04-24 10:55:50 +08:00
2026-04-20 20:00:06 +08:00
2026-04-15 13:08:38 +08:00
2026-04-24 15:41:35 +08:00
2026-04-08 16:36:18 +08:00
2026-04-26 20:40:57 +08:00
2026-04-26 20:19:46 +08:00
2026-03-26 16:03:16 +08:00
2026-04-22 09:10:39 +08:00
2026-03-29 16:00:46 +08:00
2026-04-15 16:06:54 +08:00
2026-04-16 02:46:17 +08:00
2026-04-15 13:08:38 +08:00
2026-04-25 02:10:06 +08:00
2026-03-29 15:27:49 +08:00
2026-04-01 16:20:57 +08:00
2026-04-08 21:47:38 +08:00
2026-04-16 15:35:19 +08:00
2026-03-26 15:32:52 +08:00
2026-03-29 15:27:49 +08:00
2026-04-25 10:31:27 +08:00
2026-03-30 01:52:59 +08:00
2026-03-24 09:20:56 +08:00
2026-03-26 16:06:20 +08:00
2026-04-15 15:47:05 +08:00
2026-04-15 18:56:26 +08:00
2026-04-17 16:14:44 +08:00
2026-04-08 16:36:18 +08:00
2026-04-07 13:02:20 +08:00