diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index b5a357d0..ca9a0766 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -665,6 +665,8 @@ jobs: ;; scripts/reboot-recovery/reboot-auto-recovery-slo-scorecard.py) ;; + scripts/reboot-recovery/collect-windows99-vmware-verify.sh) + ;; scripts/reboot-recovery/windows99-vmware-autostart.ps1) ;; scripts/reboot-recovery/windows99-management-channel-probe.py) @@ -673,6 +675,8 @@ jobs: ;; scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_scorecard.py) ;; + scripts/reboot-recovery/tests/test_windows99_vmware_verify_collector.py) + ;; scripts/reboot-recovery/tests/test_188_host_hygiene_checklist.py) ;; scripts/reboot-recovery/tests/test_post_start_quick_check_contract.py) @@ -859,6 +863,7 @@ jobs: ../../scripts/reboot-recovery/install-reboot-auto-recovery-slo-110.sh \ ../../scripts/reboot-recovery/reboot-auto-recovery-host-probe.sh \ ../../scripts/reboot-recovery/reboot-auto-recovery-slo-exporter.sh \ + ../../scripts/reboot-recovery/collect-windows99-vmware-verify.sh \ ../../scripts/reboot-recovery/post-start-quick-check.sh \ ../../scripts/reboot-recovery/188-host-hygiene-maintenance-checklist.sh \ ../../scripts/reboot-recovery/full-stack-cold-start-check.sh \ @@ -933,6 +938,7 @@ jobs: ../../scripts/reboot-recovery/tests/test_momo_source_arrival_gate.py \ ../../scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_installer.py \ ../../scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_scorecard.py \ + ../../scripts/reboot-recovery/tests/test_windows99_vmware_verify_collector.py \ ../../scripts/reboot-recovery/tests/test_188_host_hygiene_checklist.py \ ../../scripts/reboot-recovery/tests/test_post_start_quick_check_contract.py \ ../../scripts/reboot-recovery/tests/test_reboot_p0_operational_contract.py \ diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 3b8d442d..90c9e551 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,33 @@ +## 2026-07-02 — 15:42 P0-006 Windows99 verify collector 留在 controlled-runtime CD lane + +**完成內容**: +- Gitea CD `#4405` 讀回:main API tests 已 `3670 passed`,失敗點是 B5 profile 被誤選為 `full`,non-110 runner 無 Docker socket,回報 `BLOCKER b5_docker_socket_unavailable`。 +- 根因:`85007db9 fix(reboot): add windows99 no-secret verify collector` 新增 `scripts/reboot-recovery/collect-windows99-vmware-verify.sh` 與 `scripts/reboot-recovery/tests/test_windows99_vmware_verify_collector.py`,但 `.gitea/workflows/cd.yaml` controlled-runtime classifier 尚未納入,導致狹窄 no-secret verifier patch 走到 B5。 +- 已將 collector script / test 納入 controlled-runtime changed-file allowlist、focused pytest path 與 `bash -n` syntax check,並補 `ops/runner/test_cd_controlled_runtime_profile.py` regression,避免同類 reboot verifier source 再誤觸 B5。 + +**仍維持**: +- 未使用 GitHub / `gh` / GitHub API;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未觸發 workflow;未重啟主機 / VM / Docker / Nginx / K3s / DB / firewall;未寫 production DB。 + +## 2026-07-02 — 15:35 P0-006 StockPlatform public API drift test contract 跟上 committed ok truth + +**完成內容**: +- Gitea CD `#4403` 讀回:`955a88cb fix(reboot): sync delivery workbench windows99 contract` 已通過前一個 delivery workbench failure,新的 tests failure 是 `apps/api/tests/test_stockplatform_public_api_runtime_readback.py::test_stockplatform_public_api_runtime_readback_blocks_live_502`。 +- 根因:committed reboot scorecard 已把 StockPlatform freshness / ingestion 更新為 `ok`;因此模擬 live public API `502` 時,`live_drift_from_committed_scorecard` 正確值應為 `true`,舊測試仍期待 `false` / `not_configured`。 +- 已同步 StockPlatform public API runtime readback 測試 contract:committed freshness / ingestion 期望 `ok`,committed rollup 期望 `true`,live 502 case 期望 drift `true`,維持 active blockers 與 recovery control path 不放寬。 + +**仍維持**: +- 未使用 GitHub / `gh` / GitHub API;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未觸發 workflow;未重啟主機 / VM / Docker / Nginx / K3s / DB / firewall;未寫 production DB。 + +## 2026-07-02 — 15:28 P0-006 Delivery workbench test contract 跟上 Windows 99 management next step + +**完成內容**: +- Gitea CD `#4402` 讀回:commit `aaa617f0 fix(reboot): expose windows99 management channel readback` 的 tests job 失敗在 `apps/api/tests/test_delivery_closure_workbench_api.py::test_delivery_closure_workbench_endpoint_returns_product_summary`,原因是測試仍期待舊的 `collect_windows99_vmware_autostart_verify_readback...` 下一步。 +- Delivery workbench production/source truth 已進入 Windows 99 management channel blocker:`safe_next_step=restore_windows99_no_secret_management_channel_or_collect_local_console_verify_readback_then_rerun_reboot_scorecard_no_reboot`、active blockers `11`、readiness `43%`、StockPlatform freshness / ingestion `ok`、product data green。 +- 已同步 delivery workbench test contract,避免最新 P0-006 main 因舊 13-blocker / 15% readiness fixture 卡住部署。 + +**仍維持**: +- 未使用 GitHub / `gh` / GitHub API;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未觸發 workflow;未重啟主機 / VM / Docker / Nginx / K3s / DB / firewall;未寫 production DB。 + ## 2026-07-02 — 15:20 P0-006 Windows 99 Verify collection packet 產品化 **完成內容**: diff --git a/ops/runner/test_cd_controlled_runtime_profile.py b/ops/runner/test_cd_controlled_runtime_profile.py index 06c97965..0bd18b5e 100644 --- a/ops/runner/test_cd_controlled_runtime_profile.py +++ b/ops/runner/test_cd_controlled_runtime_profile.py @@ -740,6 +740,7 @@ def test_reboot_auto_recovery_slo_sources_stay_on_controlled_runtime_profile() - "scripts/reboot-recovery/reboot-auto-recovery-host-probe.sh)", "scripts/reboot-recovery/reboot-auto-recovery-slo-exporter.sh)", "scripts/reboot-recovery/reboot-auto-recovery-slo-scorecard.py)", + "scripts/reboot-recovery/collect-windows99-vmware-verify.sh)", "scripts/reboot-recovery/windows99-vmware-autostart.ps1)", "scripts/reboot-recovery/windows99-management-channel-probe.py)", "scripts/reboot-recovery/full-stack-cold-start-check.sh)", @@ -752,12 +753,15 @@ def test_reboot_auto_recovery_slo_sources_stay_on_controlled_runtime_profile() - "scripts/reboot-recovery/tests/test_cold_start_monitor_bounded_probes.py)", "scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_installer.py)", "scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_scorecard.py)", + "scripts/reboot-recovery/tests/test_windows99_vmware_verify_collector.py)", "scripts/reboot-recovery/tests/test_harbor_watchdog_contract.py)", "../../scripts/reboot-recovery/reboot-auto-recovery-slo-scorecard.py", + "../../scripts/reboot-recovery/collect-windows99-vmware-verify.sh", "../../scripts/reboot-recovery/windows99-management-channel-probe.py", "../../scripts/reboot-recovery/tests/test_cold_start_monitor_bounded_probes.py", "../../scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_installer.py", "../../scripts/reboot-recovery/tests/test_reboot_auto_recovery_slo_scorecard.py", + "../../scripts/reboot-recovery/tests/test_windows99_vmware_verify_collector.py", ] for source in expected_sources: assert source in text