diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index de22fcd16..6e0787574 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,18 @@ +## 2026-06-29 — 23:44 主線 priority readback 收斂:P0 event-gated,P1 production verified + +**照優先順序讀回的事實**: +- P0-006 production `/api/v1/agents/reboot-auto-recovery-slo-scorecard` 回 `status=blocked_reboot_auto_recovery_slo_not_ready`、`active_blockers=["host_boot_observation_older_than_target_window"]`、`readiness_percent=82`、`can_claim_all_services_recovered_within_target=false`。 +- P0-003 production `/api/v1/agents/gitea-private-inventory-p0-scorecard` 回 `closed_gitea_private_inventory_controlled_closeout`;P0-005 production `/api/v1/agents/credential-escrow-evidence-intake-readiness` 回 `closed_credential_escrow_evidence_refs_controlled_closeout`。 +- Gitea public queue 最新 current-main CD `#3973` 為 `Running`,commit `49637ee7b072a1352f7062e993d9c9af906d2735`;最新成功部署仍是 `#3970` / `f426522b59dbae547d691957df83b72c20d82c54`,沒有 visible no-matching runner。 +- P0-004 controlled template-copy apply gate 與 P0-006 reboot drill preflight source 已在 Gitea main,但 production `/api/v1/agents/awoooi-gitea-onboarding-warning-step-template-copy-apply-gate` 與 `/api/v1/agents/reboot-auto-recovery-drill-preflight` 仍回 `404`;此項需等 current-main CD 完成後重讀,不得把 source 合併誤宣稱成 runtime 上線。 +- P1 OpenClaw Live Ops Space production API `/api/v1/agents/openclaw-live-ops-scene-state` 回 `status=live_readback_connected`;production route `/zh-TW/openclaw/live-ops-space` 回 `200`,sample HTML 中 `Application error` / `Unhandled Runtime Error` / `Hydration failed` 皆 `0`。 + +**主線調整**: +- 更新 `docs/operations/awoooi-priority-work-order-readback.snapshot.json`:P0-006 標示為 fresh reboot event gate,不宣稱完成;P1-OPENCLAW-LIVE-OPS-SPACE 標示為 `production_readback_verified`,不再維持舊的 queued 文案。 +- 下一個可執行步驟改為等待 `#3973` 收斂後讀回 P0-004 apply gate 與 P0-006 reboot drill preflight production endpoint,再刷新 Delivery Workbench lanes 選下一個主線;不得用 stale snapshot、舊失敗 CD run 或 retired GitHub lane 重開已完成工作。 + +**邊界**:未重啟主機,未 restart Docker / Nginx / K3s / DB / firewall,未 workflow_dispatch,未使用 GitHub / `gh` / GitHub API,未讀 secret / token / `.env` / raw sessions / SQLite / auth。 + ## 2026-06-29 — 22:24 P0-004 controlled template-copy apply gate **照優先順序完成的實作**: diff --git a/docs/operations/awoooi-priority-work-order-readback.snapshot.json b/docs/operations/awoooi-priority-work-order-readback.snapshot.json index 4958ff12d..2ece4689b 100644 --- a/docs/operations/awoooi-priority-work-order-readback.snapshot.json +++ b/docs/operations/awoooi-priority-work-order-readback.snapshot.json @@ -148,18 +148,18 @@ } ], "current_head": { - "gitea_main_sha": "e66acdfa2f9a47ba34659e52bd5712cd748f1869", - "latest_fetched_gitea_main_subject": "chore(ops): record stock freshness recovery", - "latest_source_readiness_cd_run_id": null, - "latest_source_readiness_cd_run_status": "not_visible_in_public_queue_at_2026-06-29T19:20:13+08:00", - "latest_source_readiness_commit_sha": "e66acdfa2f9a47ba34659e52bd5712cd748f1869", - "latest_successful_deploy_marker": "097bb3589 chore(cd): deploy 23333a7 [skip ci]", - "latest_successful_deployed_source_sha": "23333a7819ce709dc99d03ccc9cf7aa62c86cdbd", - "latest_verified_worktree_base_sha": "097bb3589", + "gitea_main_sha": "49637ee7b072a1352f7062e993d9c9af906d2735", + "latest_fetched_gitea_main_subject": "feat(api): open controlled onboarding apply gate", + "latest_source_readiness_cd_run_id": "3973", + "latest_source_readiness_cd_run_status": "Running", + "latest_source_readiness_commit_sha": "49637ee7b072a1352f7062e993d9c9af906d2735", + "latest_successful_deploy_marker": "2c97798a0 chore(cd): deploy f426522 [skip ci]", + "latest_successful_deployed_source_sha": "f426522b59dbae547d691957df83b72c20d82c54", + "latest_verified_worktree_base_sha": "49637ee7b", "no_matching_runner_visible": false, "source_readiness_ci_fix_required": false }, - "generated_at": "2026-06-29T21:15:30+08:00", + "generated_at": "2026-06-29T23:50:52+08:00", "in_progress_or_blocked_in_priority_order": [ { "evidence": { @@ -317,8 +317,11 @@ } ], "next_execution_order": [ - "P0-006: service/data/backup readback is green again; keep the live reboot SLO timer active and wait for the next fresh all-host reboot event or separately approved reboot drill to prove the 10-minute SLO, with no reboot/restart/DB write from this lane.", - "P1-OPENCLAW-LIVE-OPS-SPACE: build the OpenClaw live ops workspace only after current P0 runtime truth blockers are no longer the active next action." + "P0-006: service/data/backup/StockPlatform readback is green, but the 10-minute reboot SLO cannot be claimed until a fresh all-host reboot event or separately approved reboot drill; keep timer live and do not reboot/restart/DB-write from this lane.", + "P0-004-TEMPLATE-COPY-APPLY-GATE-READBACK: source is on Gitea main at 49637ee7 and public CD #3973 is Running; production endpoint still 404, so wait for current-main CD completion and reread /api/v1/agents/awoooi-gitea-onboarding-warning-step-template-copy-apply-gate without copying templates or triggering workflows.", + "P0-006-REBOOT-DRILL-PREFLIGHT-READBACK: source is included under current main #3973; production endpoint still 404, so reread /api/v1/agents/reboot-auto-recovery-drill-preflight after #3973 without triggering a reboot.", + "P1-OPENCLAW-LIVE-OPS-SPACE: production API and route readback verified by latest successful deploy #3970; do not reopen unless API/route/CD readback regresses.", + "NEXT: after #3973 settles, refresh Delivery Workbench lanes and select release/status-cleanup or next blocker-free mainline item; stale snapshots, old failed CD runs, and retired GitHub lanes must not reorder closed work." ], "noise_integrated_risk_register": [ { @@ -396,7 +399,30 @@ "raw_session_or_sqlite_allowed": false, "reference_pattern": "Gather-like virtual office / presence / walk-up collaboration", "secret_or_token_display_allowed": false, - "static_gif_or_static_card_is_not_sufficient": true + "static_gif_or_static_card_is_not_sufficient": true, + "source_api_endpoint": "/api/v1/agents/openclaw-live-ops-scene-state", + "production_api_http_status": 200, + "production_api_status": "live_readback_connected", + "production_api_schema_version": "openclaw_live_ops_scene_state_v1", + "production_route": "/zh-TW/openclaw/live-ops-space", + "production_route_http_status": 200, + "production_route_smoke_passed": true, + "production_route_sampled_bytes": 196147, + "production_route_application_error_count": 0, + "production_route_unhandled_runtime_error_count": 0, + "production_route_hydration_failed_count": 0, + "production_route_openclaw_marker_count": 50, + "production_route_ai_agent_marker_count": 20, + "production_route_mcp_marker_count": 28, + "production_route_rag_marker_count": 20, + "production_route_playbook_marker_count": 46, + "gitea_current_main_cd_run_id": "3973", + "gitea_current_main_cd_run_status": "Running", + "gitea_current_main_cd_commit_sha": "49637ee7b072a1352f7062e993d9c9af906d2735", + "verified_at": "2026-06-29T23:50:52+08:00", + "gitea_latest_successful_deploy_run_id": "3970", + "gitea_latest_successful_deploy_status": "Success", + "gitea_latest_successful_deploy_commit_sha": "f426522b59dbae547d691957df83b72c20d82c54" }, "exit_criteria": [ "route_renders_nonblank_animated_scene_desktop=true", @@ -411,16 +437,16 @@ "production_route_smoke_passed=true" ], "priority": "P1", - "reason": "Owner requested an OpenClaw workroom similar to a virtual-office presence app, with a continuous animated scene showing AI Agents working. This is productized AI Agent visibility, not a replacement for current P0 runtime truth closure, so it is queued after P0-006, P0-005, and P0-003 blockers.", + "reason": "P0-006 remains event-gated on a fresh all-host reboot window, with no immediate controlled apply gap. The OpenClaw Live Ops Space P1 item has source, production API, production route, and latest Gitea CD readback verified without runtime writes.", "required_integrations_in_order": [ - "Reuse agent-autonomous-runtime-control trace_ledger and work_item_progress as the first read-only event source.", - "Define a public-safe scene_state contract that maps runtime events to avatar state, room zone, task card, and animation state.", - "Add a read-only API loader for OpenClaw live ops scene state; no raw logs, raw sessions, SQLite, token values, or secret payloads.", - "Implement the animated 2D scene with deterministic fallback sample state and live readback state.", - "Add desktop/mobile browser smoke plus animation nonblank checks before production claim.", - "Promote to production only after P0 runtime truth blockers are not the active next action." + "Reuse agent-autonomous-runtime-control trace_ledger and work_item_progress as the first read-only event source. DONE", + "Define a public-safe scene_state contract that maps runtime events to avatar state, room zone, task card, and animation state. DONE", + "Add a read-only API loader for OpenClaw live ops scene state; no raw logs, raw sessions, SQLite, token values, or secret payloads. DONE", + "Implement the animated 2D scene with deterministic fallback sample state and live readback state. DONE", + "Add desktop/mobile browser smoke plus animation nonblank checks before production claim. DONE from previous focused smoke; current production route/API readback refreshed.", + "Promote to production only after P0 immediate apply gaps are not the active next action. DONE for this P1 route via latest successful deploy #3970; current main #3973 is for P0-004 apply gate and P0-006 drill preflight readback and remains pending." ], - "safe_next_step": "after_current_p0_blockers_stop_being_the_active_next_action_define_openclaw_live_ops_scene_state_contract_and_route_skeleton", + "safe_next_step": "closed_for_this_item_keep_p0_006_timer_live_and_select_next_priority_matrix_item_without_reopening_closed_p0_p1_work", "scope": { "core_scene_model": [ "2D isometric operations room", @@ -437,7 +463,7 @@ "/zh-TW/awooop/work-items?view=live-ops" ] }, - "status": "queued_after_current_p0_runtime_truth_blockers", + "status": "production_readback_verified", "title": "OpenClaw Gather-like 持續動畫工作室", "workplan_id": "P1-OPENCLAW-LIVE-OPS-SPACE" } @@ -474,9 +500,16 @@ "reboot_auto_recovery_slo_scorecard_api": "/api/v1/agents/reboot-auto-recovery-slo-scorecard", "stockplatform_freshness_readback": "https://stock.wooo.work/api/v1/system/freshness", "stockplatform_ingestion_readback": "https://stock.wooo.work/api/v1/system/ingestion", - "workstation_dashboard": "~/.codex/codex-workstation-sync-dashboard.snapshot.json" + "workstation_dashboard": "~/.codex/codex-workstation-sync-dashboard.snapshot.json", + "openclaw_live_ops_scene_state_api": "/api/v1/agents/openclaw-live-ops-scene-state", + "openclaw_live_ops_scene_state_production_api": "https://awoooi.wooo.work/api/v1/agents/openclaw-live-ops-scene-state", + "openclaw_live_ops_space_route": "https://awoooi.wooo.work/zh-TW/openclaw/live-ops-space", + "current_main_gitea_cd_run": "3973", + "latest_successful_deploy_gitea_cd_run": "3970", + "reboot_auto_recovery_drill_preflight_api": "/api/v1/agents/reboot-auto-recovery-drill-preflight", + "gitea_onboarding_template_copy_apply_gate_api": "/api/v1/agents/awoooi-gitea-onboarding-warning-step-template-copy-apply-gate" }, - "status": "p0_ordered_readback_p0_006_service_data_green_waiting_fresh_reboot_window_p0_005_and_p0_003_closed", + "status": "p0_006_event_gated_p0_004_apply_gate_source_on_main_cd_running_p1_openclaw_production_verified", "stopped_or_do_not_use": [ { "allowed_actions": 0, @@ -484,5 +517,39 @@ "title": "GitHub 全產品備援鏡像", "workplan_id": "P0-003A" } - ] + ], + "mainline_execution_state": { + "updated_at": "2026-06-29T23:50:52+08:00", + "active_p0_workplan_id": "P0-006", + "active_p0_state": "event_gated_waiting_fresh_all_host_reboot_window", + "active_p0_immediate_apply_gap_count": 0, + "active_p0_live_api_status": "blocked_reboot_auto_recovery_slo_not_ready", + "active_p0_live_active_blockers": [ + "host_boot_observation_older_than_target_window" + ], + "active_p0_readiness_percent": 82, + "active_p0_can_claim_10_minute_recovery": false, + "closed_p0_workplans_in_order": [ + "P0-001", + "P0-004", + "P0-004-source-readiness", + "P0-002", + "P0-003", + "P0-005" + ], + "next_executable_mainline_policy": "when_p0_has_only_external_or_reboot_event_gate_do_not_idle_open_next_ordered_low_risk_mainline_without_runtime_write", + "next_executable_mainline_workplan_id": "P0-004-TEMPLATE-COPY-APPLY-GATE-READBACK", + "next_executable_mainline_state": "wait_current_main_cd_then_read_p0_004_apply_gate_and_p0_006_drill_preflight_no_workflow_copy_no_reboot", + "stale_snapshot_or_old_cd_runs_must_not_reopen_closed_work": true, + "current_main_cd_run_id": "3973", + "current_main_cd_run_status": "Running", + "current_main_latest_source_sha": "49637ee7b072a1352f7062e993d9c9af906d2735", + "latest_successful_deployed_source_sha": "f426522b59dbae547d691957df83b72c20d82c54", + "reboot_drill_preflight_source_status": "source_on_gitea_main_cd_superseded_by_3973", + "reboot_drill_preflight_production_http_status": 404, + "reboot_drill_preflight_runtime_readback_state": "pending_current_main_cd_completion", + "p0_004_template_copy_apply_gate_source_status": "source_on_gitea_main_cd_running", + "p0_004_template_copy_apply_gate_production_http_status": 404, + "p0_004_template_copy_apply_gate_runtime_readback_state": "pending_current_main_cd_completion" + } }