test(reboot): align delivery workbench public maintenance blocker
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 59s
CD Pipeline / build-and-deploy (push) Successful in 4m41s
CD Pipeline / post-deploy-checks (push) Successful in 1m50s
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 59s
CD Pipeline / build-and-deploy (push) Successful in 4m41s
CD Pipeline / post-deploy-checks (push) Successful in 1m50s
This commit is contained in:
@@ -22,6 +22,7 @@ REBOOT_ACTIVE_BLOCKERS = [
|
||||
"wazuh_dashboard_degraded",
|
||||
"windows99_remote_execution_channel_unavailable",
|
||||
"windows99_vmware_autostart_readback_missing",
|
||||
"public_maintenance_fallback_runtime_readback_missing",
|
||||
]
|
||||
DRILL_ACTIVE_BLOCKERS = [
|
||||
"service_green_not_ready",
|
||||
@@ -253,8 +254,8 @@ def test_delivery_closure_workbench_exposes_p0_006_reboot_slo_lane():
|
||||
|
||||
assert lane["source_id"] == "reboot_auto_recovery_slo_scorecard"
|
||||
assert lane["status"] == "blocked_reboot_auto_recovery_slo_not_ready"
|
||||
assert lane["blocker_count"] == 11
|
||||
assert lane["completion_percent"] == 43
|
||||
assert lane["blocker_count"] == 12
|
||||
assert lane["completion_percent"] == 40
|
||||
assert lane["metric"]["kind"] == "reboot_auto_recovery_slo"
|
||||
assert lane["metric"]["workplan_id"] == "P0-006"
|
||||
assert lane["metric"]["target_minutes"] == 10
|
||||
@@ -337,7 +338,7 @@ def _assert_delivery_workbench_shape(data: dict):
|
||||
)
|
||||
assert data["readback"]["current_p0_safe_next_step"] == data["safe_next_step"]
|
||||
assert data["readback"]["current_p0_active_blockers"] == data["active_blockers"]
|
||||
assert data["readback"]["current_p0_readiness_percent"] == 43
|
||||
assert data["readback"]["current_p0_readiness_percent"] == 40
|
||||
assert data["readback"]["current_p0_drill_preflight_status"] == (
|
||||
"blocked_reboot_drill_preflight_not_ready"
|
||||
)
|
||||
@@ -362,8 +363,8 @@ def _assert_delivery_workbench_shape(data: dict):
|
||||
assert data["rollups"]["high_risk_blocker_count"] == data["summary"][
|
||||
"high_risk_blocker_count"
|
||||
]
|
||||
assert data["rollups"]["current_p0_blocker_count"] == 11
|
||||
assert data["rollups"]["current_p0_readiness_percent"] == 43
|
||||
assert data["rollups"]["current_p0_blocker_count"] == 12
|
||||
assert data["rollups"]["current_p0_readiness_percent"] == 40
|
||||
assert data["rollups"]["current_p0_blocked_by_fresh_reboot_window_only"] is False
|
||||
assert data["rollups"]["current_p0_service_green"] is False
|
||||
assert data["rollups"]["current_p0_product_data_green"] is True
|
||||
@@ -446,8 +447,8 @@ def _assert_delivery_workbench_shape(data: dict):
|
||||
"blocked_reboot_auto_recovery_slo_not_ready"
|
||||
)
|
||||
assert data["summary"]["reboot_auto_recovery_workplan_id"] == "P0-006"
|
||||
assert data["summary"]["reboot_auto_recovery_readiness_percent"] == 43
|
||||
assert data["summary"]["reboot_auto_recovery_active_blocker_count"] == 11
|
||||
assert data["summary"]["reboot_auto_recovery_readiness_percent"] == 40
|
||||
assert data["summary"]["reboot_auto_recovery_active_blocker_count"] == 12
|
||||
assert data["summary"]["reboot_auto_recovery_can_claim_slo"] is False
|
||||
assert data["summary"]["reboot_auto_recovery_service_green"] is False
|
||||
assert data["summary"]["reboot_auto_recovery_product_data_green"] is True
|
||||
|
||||
@@ -20,6 +20,20 @@
|
||||
**仍維持**:
|
||||
- 未使用 GitHub / `gh` / GitHub API;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未 workflow_dispatch;未重啟主機 / VM / Docker / Nginx / K3s / DB / firewall;未切 DNS / CDN / provider。
|
||||
|
||||
## 2026-07-02 — 21:46 P0-006 delivery workbench public maintenance blocker closure
|
||||
|
||||
**完成內容**:
|
||||
- Gitea CD `#4453` 失敗點定位為 `apps/api/tests/test_delivery_closure_workbench_api.py::test_delivery_closure_workbench_endpoint_returns_product_summary`:Reboot SLO API 已 fail-closed 納入 `public_maintenance_fallback_runtime_readback_missing`,但 Delivery Workbench 測試仍硬期待舊的 11 blockers / readiness `43`。
|
||||
- `apps/api/tests/test_delivery_closure_workbench_api.py` 已同步新的 P0-006 truth:`REBOOT_ACTIVE_BLOCKERS` 補上 `public_maintenance_fallback_runtime_readback_missing`,Workbench lane / readback / rollups / summary 皆改為 12 blockers / readiness `40`。
|
||||
- 修正目的為讓 Workbench 接受已新增的 runtime fallback evidence gate;沒有移除 host / Windows99 / Wazuh / public maintenance blockers,也沒有把 source-only fallback 宣稱為 runtime ready。
|
||||
|
||||
**驗證**:
|
||||
- `DATABASE_URL=sqlite+aiosqlite:////tmp/awoooi-codex-api-test.db PYTHONPATH=apps/api python3.11 -m pytest -q apps/api/tests/test_delivery_closure_workbench_api.py apps/api/tests/test_reboot_auto_recovery_slo_scorecard_api.py apps/api/tests/test_awoooi_priority_work_order_readback_api.py -p no:cacheprovider`:`28 passed`。
|
||||
- `DATABASE_URL=sqlite+aiosqlite:////tmp/awoooi-codex-api-test.db PYTHONPATH=apps/api python3.11 -m pytest -q apps/api/tests/test_delivery_closure_workbench_api.py apps/api/tests/test_reboot_auto_recovery_slo_scorecard_api.py apps/api/tests/test_awoooi_priority_work_order_readback_api.py apps/api/tests/test_stockplatform_public_api_runtime_readback.py apps/api/tests/test_stockplatform_public_api_controlled_recovery_preflight.py scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_scorecard.py scripts/reboot-recovery/tests/test_reboot_p0_operational_contract.py apps/api/tests/test_platform_read_model_fallbacks.py -p no:cacheprovider`:`65 passed`。
|
||||
|
||||
**仍維持**:
|
||||
- 未讀 secret / token / `.env` / raw sessions / SQLite / auth;未使用 GitHub / gh;未 SSH、未 Docker / K8s / firewall / Wazuh 寫入、未重啟 host / VM / service、未 workflow_dispatch、未 DROP / TRUNCATE / restore / prune。
|
||||
|
||||
## 2026-07-02 — 21:41 P0-006 public maintenance fallback API readback parity
|
||||
|
||||
**完成內容**:
|
||||
|
||||
Reference in New Issue
Block a user