diff --git a/apps/api/src/api/v1/agents.py b/apps/api/src/api/v1/agents.py index a020939f..318c7387 100644 --- a/apps/api/src/api/v1/agents.py +++ b/apps/api/src/api/v1/agents.py @@ -97,12 +97,12 @@ from src.services.ai_agent_interaction_learning_proof import ( from src.services.ai_agent_learning_writeback_approval_package import ( load_latest_ai_agent_learning_writeback_approval_package, ) -from src.services.ai_agent_log_intelligence_integration_readback import ( - load_latest_ai_agent_log_intelligence_integration_readback, -) from src.services.ai_agent_live_read_model_gate import ( load_latest_ai_agent_live_read_model_gate, ) +from src.services.ai_agent_log_intelligence_integration_readback import ( + load_latest_ai_agent_log_intelligence_integration_readback, +) from src.services.ai_agent_low_medium_risk_whitelist import ( load_latest_ai_agent_low_medium_risk_whitelist, ) diff --git a/apps/api/tests/test_delivery_closure_workbench_api.py b/apps/api/tests/test_delivery_closure_workbench_api.py index 81341fca..e9960c66 100644 --- a/apps/api/tests/test_delivery_closure_workbench_api.py +++ b/apps/api/tests/test_delivery_closure_workbench_api.py @@ -192,8 +192,8 @@ def test_delivery_closure_workbench_exposes_p0_006_reboot_slo_lane(): assert lane["metric"]["secret_value_collection_allowed"] is False assert "stockplatform_freshness_blocked" in lane["metric"]["active_blockers"] assert lane["next_action"] == ( - "inspect_stockplatform_ingestion_readback_and_wait_retry_windows_then_" - "rerun_slo_verify_only_no_reboot" + "wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_" + "no_reboot_no_db_write" ) @@ -244,8 +244,8 @@ def _assert_delivery_workbench_shape(data: dict): is False ) assert data["summary"]["reboot_auto_recovery_safe_next_step"] == ( - "inspect_stockplatform_ingestion_readback_and_wait_retry_windows_then_" - "rerun_slo_verify_only_no_reboot" + "wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_" + "no_reboot_no_db_write" ) assert data["summary"]["gitea_private_inventory_status"] == ( "blocked_waiting_gitea_authenticated_or_owner_export_inventory" diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index ae8d64e5..c1bde277 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,17 @@ +## 2026-06-29 — 20:30 P0-006 CD failure closeout + +**照優先順序處理**: +- Gitea CD #3956 對 `a46c38c98 fix(api): expose reboot slo safe next step` 讀回 `Failure`;#3955 已被取消,#3954 仍是前一個成功 deploy。 +- 本地復現失敗:Delivery Workbench 測試仍期待舊 P0-006 `safe_next_step=inspect_stockplatform_ingestion_readback_and_wait_retry_windows_then_rerun_slo_verify_only_no_reboot`,但 P0-006 API / snapshot 已收斂成 `wait_next_stockplatform_retry_window_then_rerun_slo_verify_only_no_reboot_no_db_write`。 +- 同步修正 `apps/api/tests/test_delivery_closure_workbench_api.py` 的 summary 與 lane `next_action` 斷言,並用 `ruff --fix` 修正 `apps/api/src/api/v1/agents.py` import 排序。 + +**驗證**: +- Focused pytest:P0-006 scorecard / Delivery Workbench / log intelligence / CD profile / scorecard script `29 passed`。 +- Controlled-runtime 相關集合:`115 passed`。 +- `py_compile`、`ruff check`、Gitea runner pressure guard、Gitea secret env guard、`git diff --check`:通過。 + +**邊界**:未推 GitHub,未用 `gh` / GitHub API,未讀 token / secret / raw sessions / SQLite,未觸發 workflow,未重啟主機或寫 StockPlatform DB。 + ## 2026-06-29 — 20:21 P0-006 Stock retry readback still blocked **照優先順序讀回的真相**: