# IwoooS Backup / Restore / Escrow Owner Response Acceptance 只讀帳本 | 項目 | 內容 | |------|------| | 日期 | 2026-06-15 | | 狀態 | `owner_response_acceptance_ledger_ready_no_runtime_action` | | 工具 | `scripts/security/backup-restore-owner-response-acceptance.py` | | Snapshot | `docs/security/backup-restore-owner-response-acceptance.snapshot.json` | | 來源 | `backup-restore-escrow-inventory.snapshot.json`、`backup-restore-owner-request-draft.snapshot.json` | | runtime gate | `0` | ## 1. 目的 本文件把 Backup / Restore / Escrow repo-only 清冊與 owner request draft 串成 owner response acceptance 只讀帳本。目的不是執行備份、還原、offsite sync 或 retention change,而是固定未來 owner 回覆要如何被 reviewer 收件、補件、隔離、拒收或進入 restore / retention review。 本階段不執行 backup、不 restore、不跑 restore drill、不 rclone sync、不 remote delete、不寫 credential escrow marker、不改 retention、不 restic prune、不改 rclone config、不跑 Velero restore / backup、不 kubectl、不 SSH、不收 secret value、不寫 host、不 active scan、不開 action button。 ## 2. 摘要 | 指標 | 目前值 | 說明 | |------|--------|------| | source surface | `38` | 來自 backup / restore / escrow 清冊 | | source request draft | `38` | 承接 owner request draft | | acceptance candidate | `38` | 每個 surface 一份候選 | | write-capable acceptance candidate | `27` | 涉及 backup、restore、offsite、escrow、retention、Velero、health exporter 等 | | live evidence required candidate | `38` | 全部都需 owner-provided redacted evidence | | acceptance field | `33` | 每份 acceptance candidate 固定欄位數 | | required owner field | `23` | 承接 owner request draft,並追加 restore recovery / freshness / remote delete / retention / no-false-green 欄位 | | reviewer check | `22` | reviewer 收件前必檢項 | | outcome lane | `9` | 等待、隔離、拒收、補件、review、只讀更新、restore 回補、remote delete / retention review、等待 runtime gate | | blocked action | `31` | 驗收前全部禁止 | | owner response received / accepted | `0 / 0` | 不得假性拉高 | | backup / restore / offsite / retention | `0` | 未授權且未執行 | | runtime gate / action button | `0 / 0` | 不開任何執行入口 | ## 3. Owner 必填欄位 | 欄位 | 說明 | |------|------| | `owner_role_or_team` | Backup / restore / offsite / escrow / retention owner role 或 team | | `decision` | 對本 surface 的回覆判定 | | `decision_reason` | 決策理由,不得包含機敏值 | | `affected_scope` | 受影響服務、資料範圍、backup set、restore target 或 offsite scope | | `redacted_evidence_refs` | 文件、hash、ticket、commit 或脫敏 artifact pointer | | `latest_backup_status_ref` | 最新備份狀態 ref;不得讀 live backup store | | `restore_drill_plan` | restore drill 計畫或 approval package,不代表已授權 | | `offsite_sync_evidence_ref` | offsite sync evidence ref,不得包含 raw listing 或 secret path | | `credential_escrow_evidence_ref` | credential escrow metadata / marker ref,不得包含 value | | `freshness_slo_ref` | 備份 freshness SLO / RPO ref;不得只用 latest 字樣取代 | | `restore_target_isolation_ref` | restore drill 隔離目標或 no-production-write 邊界 | | `backup_dependency_map_ref` | 資料庫、物件儲存、repo、配置、憑證與告警復原依賴圖 | | `data_classification_ref` | 備份集資料分級;不得要求 raw customer data、payload 或 unredacted listing | | `remote_delete_guard_ref` | offsite sync / latest-only policy 的 remote delete guard 與 owner ref | | `retention_runway_ref` | retention / prune 的可恢復窗口、runway 與撤回條件 | | `restore_observer_stop_condition_ref` | restore drill observer、stop condition 與 rollback owner | | `credential_recovery_drill_ref` | credential recovery non-secret proof / evidence id;不得包含 value、hash、seed 或 recovery code | | `backup_health_no_false_green_ref` | backup health / textfile / alert no-false-green review ref | | `maintenance_window` | 維護窗口或禁止窗口 | | `rollback_owner` | rollback / stop owner 與撤回條件 | | `validation_plan` | restore、freshness、checksum、alert、post-check plan | | `retention_owner` | retention / prune owner | | `followup_owner` | 補件、隔離、拒收或下一步 review owner | ## 4. Reviewer Checks | Check | 規則 | |-------|------| | `owner_identity_present` | owner role / team 必須可追溯 | | `decision_reason_present` | decision 與 decision reason 必須同時存在 | | `affected_scope_matches_surface` | affected scope 必須能對回 committed surface_id | | `redacted_refs_only` | evidence 只能是脫敏 ref、hash、ticket、commit 或 artifact pointer | | `secret_value_absent` | 不得出現 token、private key、seed、rclone config、kubeconfig 或 credential derivative | | `backup_status_ref_shape` | latest backup status 只能是 owner-provided redacted ref | | `restore_drill_plan_present` | restore drill 必須是 plan / approval package,不得是執行請求 | | `offsite_sync_ref_not_payload` | offsite sync evidence 只能是 ref | | `credential_escrow_metadata_only` | credential escrow 只能是 metadata / marker ref | | `retention_owner_present` | retention owner 與 retention decision 必須可追溯 | | `maintenance_window_present` | 未來 backup / restore / prune / sync 都必須另有維護窗口 | | `rollback_owner_present` | rollback owner 與 rollback ref 必須存在 | | `counts_transition_safe` | 只有 reviewer record 可更新 received / accepted / rejected;不得同時開 runtime gate | | `freshness_slo_present` | 必須有備份 freshness SLO / RPO ref | | `restore_target_isolation_present` | restore drill 必須有隔離目標或 no-production-write 邊界 | | `backup_dependency_map_present` | 必須列出 DB、物件儲存、repo、配置、憑證與告警復原依賴圖 | | `data_classification_present` | 必須標示備份集資料分級;不得要求 raw payload | | `remote_delete_guard_present` | offsite sync / latest-only policy 必須有 remote delete guard | | `retention_runway_present` | retention / prune 必須有可恢復窗口、runway 與撤回條件 | | `restore_observer_stop_condition_present` | restore drill 必須有 observer、stop condition 與 rollback owner | | `credential_recovery_drill_metadata_only` | credential recovery 只能收 non-secret proof / evidence id | | `backup_health_no_false_green_reviewed` | backup health / textfile / alert evidence 必須防止 false-green | ## 5. Outcome Lanes | Lane | 意義 | |------|------| | `waiting_owner_response` | 尚未收到 owner response;所有 accepted / runtime count 維持 0 | | `quarantine_raw_payload` | 收到 raw backup listing、secret、rclone config 或不可保存內容時只能隔離 | | `reject_secret_or_credential_value` | 出現 secret value、credential derivative 或未脫敏 payload 時直接拒收 | | `request_supplement` | 欄位不足、scope 不清、restore / retention owner 缺失時要求補件 | | `ready_for_restore_review` | metadata 合格後,只能進 restore / retention reviewer review | | `owner_review_only_update` | 只允許更新只讀 owner review ledger | | `restore_recovery_backfill_required` | restore / cold-start / incident recovery 資料不足時只要求補件 | | `remote_delete_retention_review_required` | offsite remote delete、latest-only 與 restic prune 必須進 retention reviewer review | | `waiting_runtime_gate` | 即使 owner response accepted,runtime gate 仍等待獨立人工批准 | ## 6. Blocked Actions ```text backup_run restore_run restore_drill offsite_sync offsite_remote_delete credential_escrow_marker_write retention_change restic_prune rclone_config velero_restore velero_backup kubectl_action ssh_read ssh_write secret_value_collection host_write active_scan runtime_gate_open raw_backup_payload_storage accept_secret_value_evidence mark_owner_response_accepted_without_reviewer_record accept_backup_without_freshness_slo accept_restore_without_isolated_target accept_offsite_without_remote_delete_guard accept_retention_without_runway accept_credential_recovery_without_non_secret_proof accept_backup_health_false_green skip_dependency_map_review skip_data_classification_review store_raw_restore_payload add_action_button ``` ## 7. 指令 固定 committed snapshot: ```bash python3 scripts/security/backup-restore-owner-response-acceptance.py \ --root . \ --output docs/security/backup-restore-owner-response-acceptance.snapshot.json \ --generated-at 2026-06-15T15:35:00+08:00 ``` 只讀 guard: ```bash python3 scripts/security/security-mirror-progress-guard.py --root . python3 scripts/security/source-control-owner-response-guard.py --root . ``` ## 8. 完成度 | 工作 | 完成度 | 說明 | |------|--------|------| | owner response acceptance ledger artifact | `100%` | 38 個 surface 已有只讀收件判定帳本 | | owner response received / accepted | `0%` | 尚未收到或接受任何 owner response | | live backup / offsite / escrow evidence | `0%` | 未讀 live backup、offsite 或 credential escrow | | backup / restore / offsite / retention | `0%` | 未授權且未執行 | | secret / host / production write | `0%` | 未收 secret、未寫 host | | runtime gate / production write | `0%` | 無 action button,無 production write | ## 9. 邊界 這份帳本不是 live backup truth、不是 restore drill approval、不是 offsite sync approval、不是 credential escrow marker approval、不是 retention approval,也不是 backup / restore / Velero / rclone / SSH / kubectl / host write 授權。不得把 owner response acceptance ledger、snapshot、LOGBOOK、IwoooS UI 或 AwoooP approval 解讀成可以執行 backup、restore、offsite sync、remote delete、retention change、secret collection、active scan、production write 或 runtime gate。