fix(reboot): project vmx locator receipt readback
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 3m47s
CD Pipeline / build-and-deploy (push) Successful in 4m48s
CD Pipeline / post-deploy-checks (push) Successful in 1m52s

This commit is contained in:
Your Name
2026-07-03 12:53:33 +08:00
parent 7b02c452e3
commit ba0849f707
9 changed files with 438 additions and 36 deletions

View File

@@ -1,3 +1,21 @@
## 2026-07-03 — 12:47 Windows99 VMX locator receipt readback 上卷
**完成內容**
- 將 live via-110 no-secret locator receipt 收斂成 `docs/operations/windows99-vmx-source-locator-receipt.snapshot.json`,只保留 redacted counters / receipt ref / bounded identity metadata flag明確禁止 public payload 帶 raw path、內部 IP、UUID、generatedAddress、secret、write、reboot 或 VM power change。
- `/api/v1/agents/windows99-vmx-source-locator-readback` 從單純 package ready 推進為 collector receipt readback投影 `candidate_source_count=6``alias_hint_candidate_count=0``unassigned_ubuntu_candidate_count=5``identity_unassigned_ubuntu_candidate_count=1``candidate_confirmation_required=true`,狀態為 `collector_readback_single_identity_candidate_confirmation_required`
- `awoooi-priority-work-order-readback` 同步上卷 locator receipt counters / confirmation gateAwoooP Work Items 補上候選、未指派、需確認與 identity read chips維持 mobile overflow 防護。
- 合併 remote `effective_locator_collect_ready` / `ssh_batch_status` / `locator_collect_blocker` 防誤判欄位direct SSH collect 仍顯示 blocker但 via-110 receipt 已把下一步推到 identity confirmation而不是重複等待 blind collect。
**已跑驗證**
- `git diff --check`:通過。
- `python3.11 -m py_compile apps/api/src/services/windows99_vmx_source_locator_readback.py apps/api/src/services/awoooi_priority_work_order_readback.py`:通過。
- `DATABASE_URL=postgresql+asyncpg://test:test@localhost/test PYTHONPATH=apps/api python3.11 -m pytest apps/api/tests/test_windows99_vmx_source_locator_readback_api.py apps/api/tests/test_awoooi_priority_work_order_readback_api.py -q -p no:cacheprovider``22 passed`
- `pnpm --dir apps/web typecheck`:通過。
**仍維持**
- P0-006 尚未完成:唯一 identity-unassigned Ubuntu candidate 需要更強 identity confirmation 後,才能產生 scoped relink / restore dry-run本輪未執行 relink / restore / apply / VM power change。
- 未讀 secret / token / `.env` / raw sessions / SQLite / auth未使用 GitHub / gh未 workflow_dispatch未啟動或關閉 VM未重啟 host / service未 Docker / Nginx / K3s / DB / firewall restart未 DROP / TRUNCATE / restore / prune / delete / force push。
## 2026-07-03 — 12:36 Windows99 VMX locator effective collect readiness 防誤判
**完成內容**

View File

@@ -0,0 +1,52 @@
{
"schema_version": "windows99_vmx_source_locator_receipt_v1",
"generated_at": "2026-07-03T12:41:34+08:00",
"receipt_ref": "log://awoooi/p0-006/windows99-vmx-source-locator-111",
"source": "live_via_110_no_secret_check_mode",
"collector_schema_version": "windows99_vmx_source_locate_collector_v1",
"collector_readback_present": true,
"collector_collection_status": "collected_windows99_vmx_source_locator_stdout",
"target_host_alias": "99",
"via_host_alias": "110",
"target_vm_aliases": ["111"],
"expected_vmx_path_count": 1,
"expected_vmx_path_present_count": 0,
"candidate_source_count": 6,
"candidate_source_count_known": true,
"candidate_source_fingerprint_count": 0,
"alias_hint_candidate_count": 0,
"unassigned_ubuntu_candidate_count": 5,
"identity_metadata_read": true,
"bounded_identity_metadata_only": true,
"identity_target_hint_count": 0,
"identity_unassigned_ubuntu_candidate_count": 1,
"locate_status": "single_identity_unassigned_ubuntu_candidate_requires_confirmation",
"safe_next_step": "confirm_single_unassigned_ubuntu_candidate_is_target_alias_before_scoped_relink_dry_run",
"candidate_confirmation_required": true,
"controlled_relink_dry_run_ready": false,
"apply_allowed_by_this_receipt": false,
"public_lan_topology_redacted": true,
"redacted_public_display_only": true,
"collector_stdout_raw_path_output_redacted": true,
"raw_path_output": false,
"path_fingerprint_only": true,
"secret_value_read": false,
"password_prompt_allowed": false,
"remote_write_performed": false,
"host_reboot_performed": false,
"vm_power_change_performed": false,
"windows_service_restart_performed": false,
"windows_registry_apply_performed": false,
"scheduled_task_write_performed": false,
"km_writeback_ref": "km://awoooi/reboot-slo/windows99-vmx-source-locator-111",
"rag_chunk_ref": "rag://awoooi/reboot-slo/windows99-vmx-source-locator-111",
"mcp_evidence_ref": "mcp://awoooi/windows99/windows99-vmx-source-locator-111",
"playbook_trust_writeback_ref": "playbook://awoooi/windows99-vmx-source-locator/windows99-vmx-source-locator-111",
"post_apply_verifier": [
"bash scripts/reboot-recovery/collect-windows99-vmware-verify.sh --collect",
"bash scripts/reboot-recovery/install-reboot-auto-recovery-slo-110.sh --verify-only",
"GET /api/v1/agents/windows99-vmx-source-locator-readback",
"GET /api/v1/agents/reboot-auto-recovery-slo-scorecard",
"GET /api/v1/agents/awoooi-priority-work-order-readback"
]
}