feat(governance): 新增 result capture no-write readback
This commit is contained in:
@@ -0,0 +1,356 @@
|
||||
{
|
||||
"schema_version": "ai_agent_result_capture_no_write_readback_v1",
|
||||
"generated_at": "2026-06-13T21:05:00+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 100,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-118",
|
||||
"next_task_id": "P2-119",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "result_capture_no_write_readback_only_no_capture_or_learning_write",
|
||||
"status_note": "P2-118 只把 P2-117 reviewer queue no-write readback 整理成 result capture no-write readback;不得寫 result capture、learning、PlayBook trust、Gateway queue、Telegram 或 production。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_reviewer_queue_no_write_readback_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_failure_receipt_no_send_replay_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_critic_reviewer_result_capture_2026-06-13.json",
|
||||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#38-建立-reviewer-queue-no-write-readback"
|
||||
],
|
||||
"prior_reviewer_queue_readback": {
|
||||
"schema_version": "ai_agent_reviewer_queue_no_write_readback_v1",
|
||||
"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,
|
||||
"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,
|
||||
"readiness_note": "P2-117 已正式驗證 reviewer queue no-write readback;P2-118 只建立 result capture no-write readback fixture、field mapping、verifier 與人工操作選項。"
|
||||
},
|
||||
"readback_truth": {
|
||||
"p2_117_reviewer_queue_readback_loaded": true,
|
||||
"result_capture_readback_package_ready": true,
|
||||
"result_capture_fixture_ready": true,
|
||||
"capture_field_mapping_ready": true,
|
||||
"no_write_verifier_ready": true,
|
||||
"operator_handoff_ready": true,
|
||||
"learning_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": "result capture readback 已可審查;真正 result capture write、learning write、PlayBook trust write、Gateway queue write 與 Telegram send 仍全部為 0。"
|
||||
},
|
||||
"result_capture_readback_fixtures": [
|
||||
{
|
||||
"fixture_id": "result_capture_action_required_preview",
|
||||
"display_name": "Action-required result capture preview",
|
||||
"owner_agent": "openclaw",
|
||||
"source_queue_mapping_id": "failure_receipt_to_manual_repair_review",
|
||||
"status": "ready_for_owner_review",
|
||||
"capture_lane": "manual_repair_result_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"result_capture_write_enabled": false,
|
||||
"next_manual_action": "審查修復候選、失敗回執與 verifier 結論,確認是否可產出人工修復 result capture 草案。",
|
||||
"evidence_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
|
||||
},
|
||||
{
|
||||
"fixture_id": "result_capture_no_action_review",
|
||||
"display_name": "No-action result capture review",
|
||||
"owner_agent": "hermes",
|
||||
"source_queue_mapping_id": "no_action_to_manual_decision_review",
|
||||
"status": "approval_required",
|
||||
"capture_lane": "manual_no_action_result_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"result_capture_write_enabled": false,
|
||||
"next_manual_action": "補齊 no-action 的人工判讀理由、影響範圍與下一次觀察條件,未補齊前不得寫 capture。",
|
||||
"evidence_hash": "sha256:5656565656565656565656565656565656565656565656565656565656565656"
|
||||
},
|
||||
{
|
||||
"fixture_id": "result_capture_verifier_degraded_hold",
|
||||
"display_name": "Verifier degraded capture hold",
|
||||
"owner_agent": "nemotron",
|
||||
"source_queue_mapping_id": "verifier_degraded_to_rollback_review",
|
||||
"status": "blocked_by_policy",
|
||||
"capture_lane": "rollback_or_reverify_result_hold",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"result_capture_write_enabled": false,
|
||||
"next_manual_action": "確認 degraded verifier 是否需要 rollback、reverify 或補 MCP evidence;未完成前不得寫 result capture。",
|
||||
"evidence_hash": "sha256:5757575757575757575757575757575757575757575757575757575757575757"
|
||||
},
|
||||
{
|
||||
"fixture_id": "result_capture_route_lock_review",
|
||||
"display_name": "Route lock capture review",
|
||||
"owner_agent": "openclaw",
|
||||
"source_queue_mapping_id": "route_locked_to_sre_route_review",
|
||||
"status": "approval_required",
|
||||
"capture_lane": "sre_route_result_review",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"result_capture_write_enabled": false,
|
||||
"next_manual_action": "確認 AwoooI SRE 戰情室路由與 redaction 條件已固定,舊 bot / 舊群組不得回寫 result。",
|
||||
"evidence_hash": "sha256:5858585858585858585858585858585858585858585858585858585858585858"
|
||||
},
|
||||
{
|
||||
"fixture_id": "result_capture_owner_acceptance_pending",
|
||||
"display_name": "Owner acceptance capture pending",
|
||||
"owner_agent": "nemotron",
|
||||
"source_queue_mapping_id": "result_capture_to_owner_review",
|
||||
"status": "blocked_by_policy",
|
||||
"capture_lane": "owner_acceptance_result_hold",
|
||||
"readback_mode": "no_write_fixture",
|
||||
"result_capture_write_enabled": false,
|
||||
"next_manual_action": "確認 result capture owner、rollback owner、redaction 與 learning 寫入邊界,未通過前不得 promotion。",
|
||||
"evidence_hash": "sha256:5959595959595959595959595959595959595959595959595959595959595959"
|
||||
}
|
||||
],
|
||||
"capture_field_mappings": [
|
||||
{
|
||||
"mapping_id": "incident_id_to_capture_key",
|
||||
"display_name": "Incident ID to capture key",
|
||||
"status": "ready",
|
||||
"source_fixture_id": "result_capture_action_required_preview",
|
||||
"target_capture": "result_capture_preview",
|
||||
"capture_write_enabled": false,
|
||||
"required_owner": "operator_owner",
|
||||
"evidence_hash": "sha256:5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a"
|
||||
},
|
||||
{
|
||||
"mapping_id": "repair_outcome_to_status",
|
||||
"display_name": "Repair outcome to status",
|
||||
"status": "approval_required",
|
||||
"source_fixture_id": "result_capture_no_action_review",
|
||||
"target_capture": "result_capture_preview",
|
||||
"capture_write_enabled": false,
|
||||
"required_owner": "openclaw_reviewer",
|
||||
"evidence_hash": "sha256:5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b"
|
||||
},
|
||||
{
|
||||
"mapping_id": "verifier_state_to_capture_verdict",
|
||||
"display_name": "Verifier state to capture verdict",
|
||||
"status": "blocked_by_policy",
|
||||
"source_fixture_id": "result_capture_verifier_degraded_hold",
|
||||
"target_capture": "result_capture_preview",
|
||||
"capture_write_enabled": false,
|
||||
"required_owner": "rollback_owner",
|
||||
"evidence_hash": "sha256:5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c"
|
||||
},
|
||||
{
|
||||
"mapping_id": "manual_action_to_owner_note",
|
||||
"display_name": "Manual action to owner note",
|
||||
"status": "ready",
|
||||
"source_fixture_id": "result_capture_route_lock_review",
|
||||
"target_capture": "result_capture_preview",
|
||||
"capture_write_enabled": false,
|
||||
"required_owner": "sre_route_owner",
|
||||
"evidence_hash": "sha256:5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d"
|
||||
},
|
||||
{
|
||||
"mapping_id": "learning_candidate_to_hold_reason",
|
||||
"display_name": "Learning candidate to hold reason",
|
||||
"status": "blocked_by_policy",
|
||||
"source_fixture_id": "result_capture_owner_acceptance_pending",
|
||||
"target_capture": "result_capture_preview",
|
||||
"capture_write_enabled": false,
|
||||
"required_owner": "result_capture_owner",
|
||||
"evidence_hash": "sha256:5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e"
|
||||
}
|
||||
],
|
||||
"readback_verifier_checks": [
|
||||
{
|
||||
"verifier_id": "no_result_capture_write_verifier",
|
||||
"display_name": "No result capture write verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "ready",
|
||||
"verifies": "result_capture_write_count remains zero",
|
||||
"failure_if_missing": "若 result capture write 不是 0,必須停止 promotion 並標記 unauthorized capture write。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f"
|
||||
},
|
||||
{
|
||||
"verifier_id": "no_learning_write_verifier",
|
||||
"display_name": "No learning write verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "ready",
|
||||
"verifies": "learning_write_count remains zero",
|
||||
"failure_if_missing": "若 learning write 不是 0,必須退回 owner acceptance 與 KM review gate。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:6060606060606060606060606060606060606060606060606060606060606060"
|
||||
},
|
||||
{
|
||||
"verifier_id": "no_playbook_trust_write_verifier",
|
||||
"display_name": "No PlayBook trust write verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "ready",
|
||||
"verifies": "playbook_trust_write_count remains zero",
|
||||
"failure_if_missing": "若 PlayBook trust write 不是 0,必須封鎖 result capture readback promotion。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:6161616161616161616161616161616161616161616161616161616161616161"
|
||||
},
|
||||
{
|
||||
"verifier_id": "no_gateway_queue_write_verifier",
|
||||
"display_name": "No Gateway queue write verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"verifies": "gateway_queue_write_count remains zero",
|
||||
"failure_if_missing": "若 Gateway queue write 不是 0,必須退回 P2-117 reviewer queue readback。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:6262626262626262626262626262626262626262626262626262626262626262"
|
||||
},
|
||||
{
|
||||
"verifier_id": "capture_redaction_completeness_verifier",
|
||||
"display_name": "Capture redaction completeness verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "approval_required",
|
||||
"verifies": "each result capture preview has redacted evidence and manual owner",
|
||||
"failure_if_missing": "若缺少 redaction 或 owner 欄位,不能進入 P2-119。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:6363636363636363636363636363636363636363636363636363636363636363"
|
||||
}
|
||||
],
|
||||
"blocked_result_capture_writes": [
|
||||
{
|
||||
"blocker_id": "result_capture_writer_not_authorized",
|
||||
"display_name": "Result capture writer not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "result_capture_write",
|
||||
"blocked_until": "result_capture_owner_gate_approved",
|
||||
"evidence_hash": "sha256:6464646464646464646464646464646464646464646464646464646464646464"
|
||||
},
|
||||
{
|
||||
"blocker_id": "learning_write_not_authorized",
|
||||
"display_name": "Learning write not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "learning_write",
|
||||
"blocked_until": "learning_writeback_gate_approved",
|
||||
"evidence_hash": "sha256:6565656565656565656565656565656565656565656565656565656565656565"
|
||||
},
|
||||
{
|
||||
"blocker_id": "playbook_trust_not_authorized",
|
||||
"display_name": "PlayBook trust not authorized",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "playbook_trust_write",
|
||||
"blocked_until": "playbook_trust_owner_gate_approved",
|
||||
"evidence_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
},
|
||||
{
|
||||
"blocker_id": "gateway_queue_not_authorized",
|
||||
"display_name": "Gateway queue not authorized",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "gateway_queue_write",
|
||||
"blocked_until": "gateway_queue_writer_gate_approved",
|
||||
"evidence_hash": "sha256:6767676767676767676767676767676767676767676767676767676767676767"
|
||||
},
|
||||
{
|
||||
"blocker_id": "production_write_not_authorized",
|
||||
"display_name": "Production write not authorized",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "production_write",
|
||||
"blocked_until": "runtime_execution_gate_approved",
|
||||
"evidence_hash": "sha256:6868686868686868686868686868686868686868686868686868686868686868"
|
||||
}
|
||||
],
|
||||
"operator_actions": [
|
||||
{
|
||||
"action_id": "review_result_capture_preview",
|
||||
"display_name": "Review result capture preview",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "審查 5 個 result capture no-write fixture,確認每筆都有人工 owner、狀態判定與安全證據 refs。",
|
||||
"runtime_capture_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "verify_capture_no_write_counts",
|
||||
"display_name": "Verify capture no-write counts",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "確認 result capture、learning、PlayBook trust、Gateway queue、Telegram、production 的 live counter 全部為 0。",
|
||||
"runtime_capture_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "confirm_owner_acceptance_fields",
|
||||
"display_name": "Confirm owner acceptance fields",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "確認 result capture owner、rollback owner、maintenance note、redaction note 與 next manual action 都已齊全。",
|
||||
"runtime_capture_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "check_capture_redaction_contract",
|
||||
"display_name": "Check capture redaction contract",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "確認 result capture preview 不顯示未遮蔽 payload、token、authorization header、私有推理或內部協作內容。",
|
||||
"runtime_capture_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "promote_to_p2_119",
|
||||
"display_name": "Promote to P2-119",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "只有 no-write verifier 與 capture field mapping 都通過後,才可進入 P2-119 learning writeback no-write readiness。",
|
||||
"runtime_capture_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、capture lane、狀態、人工下一步、blocked action 與 redacted evidence hash;不顯示未遮蔽 payload、token、私有推理或內部協作內容。"
|
||||
},
|
||||
"rollups": {
|
||||
"result_capture_readback_fixture_count": 5,
|
||||
"capture_field_mapping_count": 5,
|
||||
"readback_verifier_check_count": 5,
|
||||
"blocked_result_capture_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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,347 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://awoooi.wooo.work/schemas/ai_agent_result_capture_no_write_readback_v1.schema.json",
|
||||
"title": "AI Agent Result Capture No-write Readback v1",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"schema_version",
|
||||
"generated_at",
|
||||
"program_status",
|
||||
"source_refs",
|
||||
"prior_reviewer_queue_readback",
|
||||
"readback_truth",
|
||||
"result_capture_readback_fixtures",
|
||||
"capture_field_mappings",
|
||||
"readback_verifier_checks",
|
||||
"blocked_result_capture_writes",
|
||||
"operator_actions",
|
||||
"display_redaction_contract",
|
||||
"rollups"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "ai_agent_result_capture_no_write_readback_v1"
|
||||
},
|
||||
"generated_at": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"program_status": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"overall_completion_percent",
|
||||
"current_priority",
|
||||
"current_task_id",
|
||||
"next_task_id",
|
||||
"read_only_mode",
|
||||
"runtime_authority",
|
||||
"status_note"
|
||||
],
|
||||
"properties": {
|
||||
"overall_completion_percent": {
|
||||
"const": 100
|
||||
},
|
||||
"current_priority": {
|
||||
"const": "P2"
|
||||
},
|
||||
"current_task_id": {
|
||||
"const": "P2-118"
|
||||
},
|
||||
"next_task_id": {
|
||||
"const": "P2-119"
|
||||
},
|
||||
"read_only_mode": {
|
||||
"const": true
|
||||
},
|
||||
"runtime_authority": {
|
||||
"const": "result_capture_no_write_readback_only_no_capture_or_learning_write"
|
||||
},
|
||||
"status_note": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"source_refs": {
|
||||
"$ref": "#/$defs/string_array"
|
||||
},
|
||||
"prior_reviewer_queue_readback": {
|
||||
"type": "object"
|
||||
},
|
||||
"readback_truth": {
|
||||
"type": "object"
|
||||
},
|
||||
"result_capture_readback_fixtures": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"items": {
|
||||
"$ref": "#/$defs/result_capture_fixture"
|
||||
}
|
||||
},
|
||||
"capture_field_mappings": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"items": {
|
||||
"$ref": "#/$defs/capture_field_mapping"
|
||||
}
|
||||
},
|
||||
"readback_verifier_checks": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"items": {
|
||||
"$ref": "#/$defs/readback_verifier_check"
|
||||
}
|
||||
},
|
||||
"blocked_result_capture_writes": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"items": {
|
||||
"$ref": "#/$defs/blocked_result_capture_write"
|
||||
}
|
||||
},
|
||||
"operator_actions": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"items": {
|
||||
"$ref": "#/$defs/operator_action"
|
||||
}
|
||||
},
|
||||
"display_redaction_contract": {
|
||||
"type": "object"
|
||||
},
|
||||
"rollups": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"string_array": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"hash": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[0-9a-f]{64}$"
|
||||
},
|
||||
"owner_agent": {
|
||||
"enum": [
|
||||
"openclaw",
|
||||
"hermes",
|
||||
"nemotron"
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"enum": [
|
||||
"ready",
|
||||
"ready_for_owner_review",
|
||||
"approval_required",
|
||||
"blocked_by_policy"
|
||||
]
|
||||
},
|
||||
"severity": {
|
||||
"enum": [
|
||||
"high",
|
||||
"critical"
|
||||
]
|
||||
},
|
||||
"result_capture_fixture": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"fixture_id",
|
||||
"display_name",
|
||||
"owner_agent",
|
||||
"source_queue_mapping_id",
|
||||
"status",
|
||||
"capture_lane",
|
||||
"readback_mode",
|
||||
"result_capture_write_enabled",
|
||||
"next_manual_action",
|
||||
"evidence_hash"
|
||||
],
|
||||
"properties": {
|
||||
"fixture_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"owner_agent": {
|
||||
"$ref": "#/$defs/owner_agent"
|
||||
},
|
||||
"source_queue_mapping_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/$defs/status"
|
||||
},
|
||||
"capture_lane": {
|
||||
"type": "string"
|
||||
},
|
||||
"readback_mode": {
|
||||
"const": "no_write_fixture"
|
||||
},
|
||||
"result_capture_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"next_manual_action": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"evidence_hash": {
|
||||
"$ref": "#/$defs/hash"
|
||||
}
|
||||
}
|
||||
},
|
||||
"capture_field_mapping": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"mapping_id",
|
||||
"display_name",
|
||||
"status",
|
||||
"source_fixture_id",
|
||||
"target_capture",
|
||||
"capture_write_enabled",
|
||||
"required_owner",
|
||||
"evidence_hash"
|
||||
],
|
||||
"properties": {
|
||||
"mapping_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/$defs/status"
|
||||
},
|
||||
"source_fixture_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"target_capture": {
|
||||
"const": "result_capture_preview"
|
||||
},
|
||||
"capture_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"required_owner": {
|
||||
"type": "string"
|
||||
},
|
||||
"evidence_hash": {
|
||||
"$ref": "#/$defs/hash"
|
||||
}
|
||||
}
|
||||
},
|
||||
"readback_verifier_check": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"verifier_id",
|
||||
"display_name",
|
||||
"owner_agent",
|
||||
"status",
|
||||
"verifies",
|
||||
"failure_if_missing",
|
||||
"live_execution_enabled",
|
||||
"evidence_hash"
|
||||
],
|
||||
"properties": {
|
||||
"verifier_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"owner_agent": {
|
||||
"$ref": "#/$defs/owner_agent"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/$defs/status"
|
||||
},
|
||||
"verifies": {
|
||||
"type": "string"
|
||||
},
|
||||
"failure_if_missing": {
|
||||
"type": "string"
|
||||
},
|
||||
"live_execution_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"evidence_hash": {
|
||||
"$ref": "#/$defs/hash"
|
||||
}
|
||||
}
|
||||
},
|
||||
"blocked_result_capture_write": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"blocker_id",
|
||||
"display_name",
|
||||
"severity",
|
||||
"status",
|
||||
"blocked_action",
|
||||
"blocked_until",
|
||||
"evidence_hash"
|
||||
],
|
||||
"properties": {
|
||||
"blocker_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"severity": {
|
||||
"$ref": "#/$defs/severity"
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/$defs/status"
|
||||
},
|
||||
"blocked_action": {
|
||||
"type": "string"
|
||||
},
|
||||
"blocked_until": {
|
||||
"type": "string"
|
||||
},
|
||||
"evidence_hash": {
|
||||
"$ref": "#/$defs/hash"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operator_action": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"action_id",
|
||||
"display_name",
|
||||
"owner_agent",
|
||||
"operator_instruction",
|
||||
"runtime_capture_write_allowed"
|
||||
],
|
||||
"properties": {
|
||||
"action_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"owner_agent": {
|
||||
"$ref": "#/$defs/owner_agent"
|
||||
},
|
||||
"operator_instruction": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"runtime_capture_write_allowed": {
|
||||
"const": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user