feat(governance): 新增 reviewer queue no-write readback
This commit is contained in:
@@ -0,0 +1,356 @@
|
||||
{
|
||||
"schema_version": "ai_agent_reviewer_queue_no_write_readback_v1",
|
||||
"generated_at": "2026-06-13T20:30:00+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 100,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-117",
|
||||
"next_task_id": "P2-118",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "reviewer_queue_no_write_readback_only_no_queue_write_or_send",
|
||||
"status_note": "P2-117 只把 P2-116 failure receipt no-send replay 整理成 reviewer queue no-write readback;不得寫 reviewer queue、不得寫 Gateway queue、不得送 Telegram、不得寫 result capture / production。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_failure_receipt_no_send_replay_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_canonical_runtime_readback_owner_acceptance_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_runtime_readback_promotion_gate_2026-06-13.json",
|
||||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#37-建立-failure-receipt-no-send-replay"
|
||||
],
|
||||
"prior_failure_receipt_replay": {
|
||||
"schema_version": "ai_agent_failure_receipt_no_send_replay_v1",
|
||||
"no_send_replay_fixture_count": 5,
|
||||
"route_lock_check_count": 4,
|
||||
"replay_verifier_check_count": 5,
|
||||
"blocked_send_count": 5,
|
||||
"operator_action_count": 5,
|
||||
"failure_receipt_send_count": 0,
|
||||
"gateway_queue_write_count": 0,
|
||||
"telegram_send_count": 0,
|
||||
"bot_api_call_count": 0,
|
||||
"reviewer_queue_write_count": 0,
|
||||
"result_capture_write_count": 0,
|
||||
"readiness_note": "P2-116 已正式驗證 failure receipt no-send replay;P2-117 只建立 reviewer queue no-write readback fixture、queue item mapping、verifier 與人工操作選項。"
|
||||
},
|
||||
"readback_truth": {
|
||||
"p2_116_no_send_replay_loaded": true,
|
||||
"reviewer_queue_readback_package_ready": true,
|
||||
"reviewer_queue_fixture_ready": true,
|
||||
"queue_item_mapping_ready": true,
|
||||
"no_write_verifier_ready": true,
|
||||
"operator_handoff_ready": true,
|
||||
"result_capture_preview_ready": true,
|
||||
"owner_approval_received": false,
|
||||
"canonical_runtime_target_read_enabled": false,
|
||||
"live_query_enabled": false,
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"gateway_queue_write_enabled": false,
|
||||
"telegram_send_enabled": false,
|
||||
"bot_api_call_enabled": false,
|
||||
"report_receipt_write_enabled": false,
|
||||
"result_capture_write_enabled": false,
|
||||
"learning_write_enabled": false,
|
||||
"playbook_trust_write_enabled": false,
|
||||
"production_write_enabled": false,
|
||||
"secret_read_enabled": false,
|
||||
"destructive_operation_enabled": false,
|
||||
"owner_approval_received_count": 0,
|
||||
"canonical_runtime_target_read_count": 0,
|
||||
"live_query_count": 0,
|
||||
"reviewer_queue_write_count": 0,
|
||||
"gateway_queue_write_count": 0,
|
||||
"telegram_send_count": 0,
|
||||
"bot_api_call_count": 0,
|
||||
"report_receipt_write_count": 0,
|
||||
"result_capture_write_count": 0,
|
||||
"learning_write_count": 0,
|
||||
"playbook_trust_write_count": 0,
|
||||
"production_write_count": 0,
|
||||
"truth_note": "reviewer queue readback 已可審查;真正 reviewer queue write、Gateway queue write、Telegram send、Bot API、report receipt 與 result capture 仍全部為 0。"
|
||||
},
|
||||
"reviewer_queue_readback_fixtures": [
|
||||
{
|
||||
"fixture_id": "reviewer_queue_action_required_failure_receipt",
|
||||
"display_name": "Action-required reviewer queue preview",
|
||||
"owner_agent": "openclaw",
|
||||
"source_replay_fixture_id": "telegram_failure_receipt_action_required",
|
||||
"status": "ready_for_owner_review",
|
||||
"queue_lane": "manual_repair_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"next_manual_action": "審查修復候選、rollback 條件與 SRE 戰情室回執內容,確認是否可進入人工修復選項。",
|
||||
"evidence_hash": "sha256:4141414141414141414141414141414141414141414141414141414141414141"
|
||||
},
|
||||
{
|
||||
"fixture_id": "reviewer_queue_no_action_decision",
|
||||
"display_name": "No-action decision reviewer preview",
|
||||
"owner_agent": "hermes",
|
||||
"source_replay_fixture_id": "telegram_failure_receipt_no_action",
|
||||
"status": "approval_required",
|
||||
"queue_lane": "manual_no_action_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"next_manual_action": "補齊為什麼 AI 選擇 no-action 的證據,產出人工判讀 checklist,不得直接結案。",
|
||||
"evidence_hash": "sha256:4242424242424242424242424242424242424242424242424242424242424242"
|
||||
},
|
||||
{
|
||||
"fixture_id": "reviewer_queue_verifier_degraded",
|
||||
"display_name": "Verifier degraded reviewer preview",
|
||||
"owner_agent": "nemotron",
|
||||
"source_replay_fixture_id": "telegram_failure_receipt_verifier_degraded",
|
||||
"status": "blocked_by_policy",
|
||||
"queue_lane": "rollback_or_reverify_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"next_manual_action": "確認 verifier degraded 的根因、rollback 條件與下一次 readback verifier,不得寫 result capture。",
|
||||
"evidence_hash": "sha256:4343434343434343434343434343434343434343434343434343434343434343"
|
||||
},
|
||||
{
|
||||
"fixture_id": "reviewer_queue_route_locked",
|
||||
"display_name": "Route locked reviewer preview",
|
||||
"owner_agent": "openclaw",
|
||||
"source_replay_fixture_id": "telegram_failure_receipt_route_locked",
|
||||
"status": "approval_required",
|
||||
"queue_lane": "sre_route_lock_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"next_manual_action": "確認只允許 AwoooI SRE 戰情室路由,舊 bot / 舊群組不得重新啟用。",
|
||||
"evidence_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||||
},
|
||||
{
|
||||
"fixture_id": "reviewer_queue_result_capture_pending",
|
||||
"display_name": "Result capture pending reviewer preview",
|
||||
"owner_agent": "nemotron",
|
||||
"source_replay_fixture_id": "telegram_failure_receipt_result_capture_pending",
|
||||
"status": "blocked_by_policy",
|
||||
"queue_lane": "result_capture_owner_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"reviewer_queue_write_enabled": false,
|
||||
"next_manual_action": "確認 result capture owner acceptance、redaction 與 rollback owner,未通過前不得寫 capture。",
|
||||
"evidence_hash": "sha256:4545454545454545454545454545454545454545454545454545454545454545"
|
||||
}
|
||||
],
|
||||
"queue_item_mappings": [
|
||||
{
|
||||
"mapping_id": "failure_receipt_to_manual_repair_review",
|
||||
"display_name": "Failure receipt to manual repair review",
|
||||
"status": "ready",
|
||||
"source_fixture_id": "reviewer_queue_action_required_failure_receipt",
|
||||
"target_queue": "reviewer_queue_preview",
|
||||
"queue_write_enabled": false,
|
||||
"required_reviewer": "operator_owner",
|
||||
"evidence_hash": "sha256:4646464646464646464646464646464646464646464646464646464646464646"
|
||||
},
|
||||
{
|
||||
"mapping_id": "no_action_to_manual_decision_review",
|
||||
"display_name": "No-action to manual decision review",
|
||||
"status": "approval_required",
|
||||
"source_fixture_id": "reviewer_queue_no_action_decision",
|
||||
"target_queue": "reviewer_queue_preview",
|
||||
"queue_write_enabled": false,
|
||||
"required_reviewer": "openclaw_reviewer",
|
||||
"evidence_hash": "sha256:4747474747474747474747474747474747474747474747474747474747474747"
|
||||
},
|
||||
{
|
||||
"mapping_id": "verifier_degraded_to_rollback_review",
|
||||
"display_name": "Verifier degraded to rollback review",
|
||||
"status": "blocked_by_policy",
|
||||
"source_fixture_id": "reviewer_queue_verifier_degraded",
|
||||
"target_queue": "reviewer_queue_preview",
|
||||
"queue_write_enabled": false,
|
||||
"required_reviewer": "rollback_owner",
|
||||
"evidence_hash": "sha256:4848484848484848484848484848484848484848484848484848484848484848"
|
||||
},
|
||||
{
|
||||
"mapping_id": "route_locked_to_sre_route_review",
|
||||
"display_name": "Route locked to SRE route review",
|
||||
"status": "ready",
|
||||
"source_fixture_id": "reviewer_queue_route_locked",
|
||||
"target_queue": "reviewer_queue_preview",
|
||||
"queue_write_enabled": false,
|
||||
"required_reviewer": "sre_route_owner",
|
||||
"evidence_hash": "sha256:4949494949494949494949494949494949494949494949494949494949494949"
|
||||
},
|
||||
{
|
||||
"mapping_id": "result_capture_to_owner_review",
|
||||
"display_name": "Result capture to owner review",
|
||||
"status": "blocked_by_policy",
|
||||
"source_fixture_id": "reviewer_queue_result_capture_pending",
|
||||
"target_queue": "reviewer_queue_preview",
|
||||
"queue_write_enabled": false,
|
||||
"required_reviewer": "result_capture_owner",
|
||||
"evidence_hash": "sha256:4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a"
|
||||
}
|
||||
],
|
||||
"readback_verifier_checks": [
|
||||
{
|
||||
"verifier_id": "no_reviewer_queue_write_verifier",
|
||||
"display_name": "No reviewer queue write verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "ready",
|
||||
"verifies": "reviewer_queue_write_count remains zero",
|
||||
"failure_if_missing": "若 reviewer queue write 不是 0,必須停止 promotion 並標記 unauthorized write。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b"
|
||||
},
|
||||
{
|
||||
"verifier_id": "no_gateway_queue_write_verifier",
|
||||
"display_name": "No Gateway queue write verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "ready",
|
||||
"verifies": "gateway_queue_write_count remains zero",
|
||||
"failure_if_missing": "若 Gateway queue write 不是 0,必須退回 P2-116 route lock review。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c"
|
||||
},
|
||||
{
|
||||
"verifier_id": "no_telegram_send_verifier",
|
||||
"display_name": "No Telegram send verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "ready",
|
||||
"verifies": "telegram_send_count remains zero",
|
||||
"failure_if_missing": "若 Telegram send 不是 0,必須封鎖 reviewer queue readback promotion。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d"
|
||||
},
|
||||
{
|
||||
"verifier_id": "manual_action_completeness_verifier",
|
||||
"display_name": "Manual action completeness verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"verifies": "each reviewer queue fixture has next_manual_action",
|
||||
"failure_if_missing": "若缺少人工處理選項,不能進入 P2-118。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e"
|
||||
},
|
||||
{
|
||||
"verifier_id": "result_capture_not_written_verifier",
|
||||
"display_name": "Result capture not written verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "approval_required",
|
||||
"verifies": "result_capture_write_count remains zero",
|
||||
"failure_if_missing": "若 result capture 已寫入,必須回到 owner acceptance 與 redaction review。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f"
|
||||
}
|
||||
],
|
||||
"blocked_queue_writes": [
|
||||
{
|
||||
"blocker_id": "reviewer_queue_writer_not_authorized",
|
||||
"display_name": "Reviewer queue writer not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "reviewer_queue_write",
|
||||
"blocked_until": "reviewer_queue_owner_gate_approved",
|
||||
"evidence_hash": "sha256:5050505050505050505050505050505050505050505050505050505050505050"
|
||||
},
|
||||
{
|
||||
"blocker_id": "gateway_queue_not_authorized",
|
||||
"display_name": "Gateway queue not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "gateway_queue_write",
|
||||
"blocked_until": "gateway_queue_writer_gate_approved",
|
||||
"evidence_hash": "sha256:5151515151515151515151515151515151515151515151515151515151515151"
|
||||
},
|
||||
{
|
||||
"blocker_id": "telegram_send_not_authorized",
|
||||
"display_name": "Telegram send not authorized",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "telegram_send",
|
||||
"blocked_until": "telegram_delivery_gate_approved",
|
||||
"evidence_hash": "sha256:5252525252525252525252525252525252525252525252525252525252525252"
|
||||
},
|
||||
{
|
||||
"blocker_id": "bot_api_not_authorized",
|
||||
"display_name": "Bot API not authorized",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "bot_api_call",
|
||||
"blocked_until": "bot_api_gate_approved",
|
||||
"evidence_hash": "sha256:5353535353535353535353535353535353535353535353535353535353535353"
|
||||
},
|
||||
{
|
||||
"blocker_id": "result_capture_not_authorized",
|
||||
"display_name": "Result capture not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "result_capture_write",
|
||||
"blocked_until": "result_capture_owner_approved",
|
||||
"evidence_hash": "sha256:5454545454545454545454545454545454545454545454545454545454545454"
|
||||
}
|
||||
],
|
||||
"operator_actions": [
|
||||
{
|
||||
"action_id": "review_reviewer_queue_preview",
|
||||
"display_name": "Review reviewer queue preview",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "審查 5 個 reviewer queue no-write fixture,確認每筆都有下一步人工處理與安全證據 refs。",
|
||||
"runtime_queue_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "verify_no_write_counts",
|
||||
"display_name": "Verify no-write counts",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "確認 reviewer queue、Gateway queue、Telegram、Bot API、result capture 的 live counter 全部為 0。",
|
||||
"runtime_queue_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "confirm_manual_options",
|
||||
"display_name": "Confirm manual options",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "把每個卡點整理成人工可選項:修復候選、no-action 判讀、rollback、補證據或 result capture owner review。",
|
||||
"runtime_queue_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "check_queue_redaction_contract",
|
||||
"display_name": "Check queue redaction contract",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "確認 reviewer queue preview 不顯示未遮蔽 payload、token、authorization header、私有推理或內部協作內容。",
|
||||
"runtime_queue_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "promote_to_p2_118",
|
||||
"display_name": "Promote to P2-118",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "只有 no-write verifier 與 queue item mapping 都通過後,才可進入 P2-118 result capture no-write readback。",
|
||||
"runtime_queue_write_allowed": false
|
||||
}
|
||||
],
|
||||
"display_redaction_contract": {
|
||||
"redaction_required": true,
|
||||
"raw_prompt_display_allowed": false,
|
||||
"private_reasoning_display_allowed": false,
|
||||
"secret_value_display_allowed": false,
|
||||
"raw_runtime_payload_display_allowed": false,
|
||||
"internal_collaboration_content_display_allowed": false,
|
||||
"frontend_display_policy": "只顯示 fixture id、queue lane、狀態、人工下一步、blocked action 與 redacted evidence hash;不顯示未遮蔽 payload、token、私有推理或內部協作內容。"
|
||||
},
|
||||
"rollups": {
|
||||
"reviewer_queue_readback_fixture_count": 5,
|
||||
"queue_item_mapping_count": 5,
|
||||
"readback_verifier_check_count": 5,
|
||||
"blocked_queue_write_count": 5,
|
||||
"operator_action_count": 5,
|
||||
"approval_required_fixture_count": 2,
|
||||
"blocked_fixture_count": 2,
|
||||
"approval_required_mapping_count": 1,
|
||||
"blocked_mapping_count": 2,
|
||||
"approval_required_verifier_count": 2,
|
||||
"critical_blocker_count": 3,
|
||||
"owner_approval_received_count": 0,
|
||||
"canonical_runtime_target_read_count": 0,
|
||||
"live_query_count": 0,
|
||||
"reviewer_queue_write_count": 0,
|
||||
"gateway_queue_write_count": 0,
|
||||
"telegram_send_count": 0,
|
||||
"bot_api_call_count": 0,
|
||||
"report_receipt_write_count": 0,
|
||||
"result_capture_write_count": 0,
|
||||
"learning_write_count": 0,
|
||||
"playbook_trust_write_count": 0,
|
||||
"production_write_count": 0,
|
||||
"secret_read_count": 0,
|
||||
"destructive_operation_count": 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user