feat(governance): 新增 result capture writer dry-run readback
This commit is contained in:
@@ -0,0 +1,394 @@
|
||||
{
|
||||
"schema_version": "ai_agent_result_capture_writer_dry_run_readback_v1",
|
||||
"generated_at": "2026-06-14T00:50:00+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 100,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-124",
|
||||
"next_task_id": "P2-125",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "result_capture_writer_dry_run_readback_only_no_live_write",
|
||||
"status_note": "P2-124 只建立 result capture writer dry-run readback、receipt verifier 與 promotion readiness;不得套用 writer、執行 dry-run、寫 receipt 或寫入 production。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_result_capture_writer_dry_run_fixture_2026-06-14.json",
|
||||
"docs/evaluations/ai_agent_result_capture_writer_implementation_review_2026-06-13.json",
|
||||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#44-建立-result-capture-writer-dry-run-fixture"
|
||||
],
|
||||
"prior_result_capture_writer_dry_run_fixture": {
|
||||
"schema_version": "ai_agent_result_capture_writer_dry_run_fixture_v1",
|
||||
"writer_dry_run_fixture_count": 5,
|
||||
"receipt_preview_count": 5,
|
||||
"idempotency_replay_check_count": 5,
|
||||
"rollback_rehearsal_count": 5,
|
||||
"blocked_runtime_write_count": 6,
|
||||
"operator_action_count": 5,
|
||||
"writer_apply_count": 0,
|
||||
"dry_run_execution_count": 0,
|
||||
"receipt_write_count": 0,
|
||||
"result_capture_write_count": 0,
|
||||
"learning_write_count": 0,
|
||||
"playbook_trust_write_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,
|
||||
"readiness_note": "P2-123 已提供 fixture-only dry-run、receipt preview、idempotency replay 與 rollback rehearsal;P2-124 只讀回這些輸出並建立 promotion readiness。"
|
||||
},
|
||||
"readback_truth": {
|
||||
"p2_123_fixture_loaded": true,
|
||||
"dry_run_readback_ready": true,
|
||||
"receipt_verifier_ready": true,
|
||||
"promotion_readiness_ready": true,
|
||||
"fixture_only_mode": true,
|
||||
"owner_approval_required": true,
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"receipt_verifier_required": true,
|
||||
"promotion_owner_required": true,
|
||||
"rollback_owner_required": true,
|
||||
"writer_apply_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"receipt_write_enabled": false,
|
||||
"promotion_apply_enabled": 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,
|
||||
"dual_approval_received_count": 0,
|
||||
"dry_run_hash_verified_count": 0,
|
||||
"receipt_verifier_pass_count": 0,
|
||||
"writer_apply_count": 0,
|
||||
"dry_run_execution_count": 0,
|
||||
"receipt_write_count": 0,
|
||||
"promotion_apply_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,
|
||||
"truth_note": "P2-124 把 P2-123 fixture-only dry-run 讀回成 promotion readiness。所有 live writer、queue、Telegram、Bot API、receipt 與 production write 仍為 0。"
|
||||
},
|
||||
"dry_run_readback_cards": [
|
||||
{
|
||||
"readback_id": "readback_result_capture_writer",
|
||||
"display_name": "Result capture writer dry-run readback",
|
||||
"owner_agent": "openclaw",
|
||||
"source_fixture": "fixture_result_capture_writer",
|
||||
"receipt_preview": "receipt_result_capture_preview",
|
||||
"status": "ready_for_owner_review",
|
||||
"readback_only": true,
|
||||
"runtime_write_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"promotion_candidate": "result_capture_writer_apply",
|
||||
"operator_note": "先確認 result capture receipt preview 與 idempotency key,再進 P2-125 owner promotion review。",
|
||||
"evidence_hash": "sha256:c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1"
|
||||
},
|
||||
{
|
||||
"readback_id": "readback_learning_writer",
|
||||
"display_name": "Learning writer dry-run readback",
|
||||
"owner_agent": "hermes",
|
||||
"source_fixture": "fixture_learning_writer",
|
||||
"receipt_preview": "receipt_learning_preview",
|
||||
"status": "approval_required",
|
||||
"readback_only": true,
|
||||
"runtime_write_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"promotion_candidate": "learning_writer_apply",
|
||||
"operator_note": "高影響 KM 必須 owner review 後才能進 promotion readiness。",
|
||||
"evidence_hash": "sha256:c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2"
|
||||
},
|
||||
{
|
||||
"readback_id": "readback_playbook_trust_writer",
|
||||
"display_name": "PlayBook trust writer dry-run readback",
|
||||
"owner_agent": "nemotron",
|
||||
"source_fixture": "fixture_playbook_trust_writer",
|
||||
"receipt_preview": "receipt_playbook_trust_preview",
|
||||
"status": "blocked_by_policy",
|
||||
"readback_only": true,
|
||||
"runtime_write_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"promotion_candidate": "playbook_trust_writer_apply",
|
||||
"operator_note": "信任分數更新需 verifier success、negative reinforcement 與 rollback owner 同時成立。",
|
||||
"evidence_hash": "sha256:c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
|
||||
},
|
||||
{
|
||||
"readback_id": "readback_reviewer_queue_writer",
|
||||
"display_name": "Reviewer queue dry-run readback",
|
||||
"owner_agent": "openclaw",
|
||||
"source_fixture": "fixture_reviewer_queue_writer",
|
||||
"receipt_preview": "receipt_reviewer_queue_preview",
|
||||
"status": "approval_required",
|
||||
"readback_only": true,
|
||||
"runtime_write_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"promotion_candidate": "reviewer_queue_apply",
|
||||
"operator_note": "reviewer queue 寫入前需確認 owner route、dedupe key 與 SLA。",
|
||||
"evidence_hash": "sha256:c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4"
|
||||
},
|
||||
{
|
||||
"readback_id": "readback_gateway_queue_writer",
|
||||
"display_name": "Gateway queue dry-run readback",
|
||||
"owner_agent": "nemotron",
|
||||
"source_fixture": "fixture_gateway_queue_writer",
|
||||
"receipt_preview": "receipt_gateway_queue_preview",
|
||||
"status": "ready_for_owner_review",
|
||||
"readback_only": true,
|
||||
"runtime_write_enabled": false,
|
||||
"dry_run_execution_enabled": false,
|
||||
"promotion_candidate": "gateway_queue_apply",
|
||||
"operator_note": "只能顯示 AwoooI SRE 戰情室邏輯路由,不顯示 chat id、token 或 Bot API payload。",
|
||||
"evidence_hash": "sha256:c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5"
|
||||
}
|
||||
],
|
||||
"receipt_verifier_checks": [
|
||||
{
|
||||
"verifier_id": "verify_result_capture_receipt",
|
||||
"display_name": "Result capture receipt verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "ready",
|
||||
"verifier_mode": "no_write_receipt_verifier",
|
||||
"required_before_promotion": true,
|
||||
"live_receipt_enabled": false,
|
||||
"failure_if_missing": "缺 result capture receipt verifier 時不得進 writer promotion。"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verify_learning_receipt",
|
||||
"display_name": "Learning receipt verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "approval_required",
|
||||
"verifier_mode": "no_write_receipt_verifier",
|
||||
"required_before_promotion": true,
|
||||
"live_receipt_enabled": false,
|
||||
"failure_if_missing": "缺 owner-reviewed learning receipt verifier 時不得學習寫入。"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verify_playbook_trust_receipt",
|
||||
"display_name": "PlayBook trust receipt verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "blocked_by_policy",
|
||||
"verifier_mode": "no_write_receipt_verifier",
|
||||
"required_before_promotion": true,
|
||||
"live_receipt_enabled": false,
|
||||
"failure_if_missing": "缺 trust delta verifier 時不得更新 PlayBook trust。"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verify_reviewer_queue_receipt",
|
||||
"display_name": "Reviewer queue receipt verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"verifier_mode": "no_write_receipt_verifier",
|
||||
"required_before_promotion": true,
|
||||
"live_receipt_enabled": false,
|
||||
"failure_if_missing": "缺 reviewer queue verifier 時不得寫 reviewer queue。"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verify_gateway_queue_receipt",
|
||||
"display_name": "Gateway queue receipt verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "ready",
|
||||
"verifier_mode": "no_write_receipt_verifier",
|
||||
"required_before_promotion": true,
|
||||
"live_receipt_enabled": false,
|
||||
"failure_if_missing": "缺 Gateway queue verifier 時不得送 Telegram。"
|
||||
}
|
||||
],
|
||||
"promotion_readiness_gates": [
|
||||
{
|
||||
"gate_id": "gate_writer_apply_owner_approval",
|
||||
"display_name": "Writer apply owner approval",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "owner approval、dual approval、dry-run hash",
|
||||
"promotion_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_dry_run_hash",
|
||||
"display_name": "Dry-run hash verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "ready_for_owner_review",
|
||||
"required_evidence": "fixture hash、receipt preview hash、idempotency key",
|
||||
"promotion_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_receipt_verifier",
|
||||
"display_name": "Receipt verifier gate",
|
||||
"owner_agent": "hermes",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "no-write receipt verifier result",
|
||||
"promotion_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_rollback_owner",
|
||||
"display_name": "Rollback owner gate",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "ready_for_owner_review",
|
||||
"required_evidence": "rollback owner、rollback rehearsal、manual escalation route",
|
||||
"promotion_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_production_write_block",
|
||||
"display_name": "Production write block",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "blocked_by_policy",
|
||||
"required_evidence": "explicit production write approval and maintenance window",
|
||||
"promotion_allowed": false
|
||||
}
|
||||
],
|
||||
"blocked_promotion_writes": [
|
||||
{
|
||||
"blocker_id": "blocked_writer_apply",
|
||||
"display_name": "Writer apply blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "writer_apply",
|
||||
"blocked_until": "P2-125 owner promotion review and explicit write approval",
|
||||
"evidence_hash": "sha256:d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_dry_run_execution",
|
||||
"display_name": "Dry-run execution blocked",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "dry_run_execution",
|
||||
"blocked_until": "receipt verifier and rollback owner are accepted",
|
||||
"evidence_hash": "sha256:d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_receipt_write",
|
||||
"display_name": "Receipt write blocked",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "receipt_write",
|
||||
"blocked_until": "no-write receipt verifier passes and owner approves",
|
||||
"evidence_hash": "sha256:d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_result_capture_write",
|
||||
"display_name": "Result capture write blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "result_capture_write",
|
||||
"blocked_until": "result capture writer promotion is accepted",
|
||||
"evidence_hash": "sha256:d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_gateway_queue_write",
|
||||
"display_name": "Gateway queue write blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "gateway_queue_write",
|
||||
"blocked_until": "SRE war room route and receipt verifier are accepted",
|
||||
"evidence_hash": "sha256:d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_telegram_send",
|
||||
"display_name": "Telegram send blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "telegram_send",
|
||||
"blocked_until": "Gateway queue write is approved and no-send verifier passes",
|
||||
"evidence_hash": "sha256:d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6"
|
||||
}
|
||||
],
|
||||
"operator_actions": [
|
||||
{
|
||||
"action_id": "review_dry_run_readback",
|
||||
"display_name": "Review dry-run readback",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "比對 readback card、receipt preview 與 idempotency key,確認沒有 live write 欄位。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "verify_receipt_verifier",
|
||||
"display_name": "Verify receipt verifier",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "逐一確認 no-write receipt verifier 的 failure_if_missing 與 redaction policy。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "score_promotion_readiness",
|
||||
"display_name": "Score promotion readiness",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "檢查 promotion readiness gate,不把 ready_for_owner_review 當正式批准。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "prepare_p2_125_owner_packet",
|
||||
"display_name": "Prepare P2-125 owner packet",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "只產生下一步 owner promotion review 所需欄位,不寫 reviewer queue 或 Gateway queue。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "hold_runtime_write_gate",
|
||||
"display_name": "Hold runtime write gate",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "持續確認 writer apply、receipt write、Telegram send、production write 全部維持 0。",
|
||||
"runtime_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": "只顯示 readback、receipt verifier、promotion gate 與 blocked action 摘要;不顯示提示詞原文、推理原文、機敏值、chat id、token、原始 payload 或內部協作內容。"
|
||||
},
|
||||
"rollups": {
|
||||
"dry_run_readback_card_count": 5,
|
||||
"receipt_verifier_check_count": 5,
|
||||
"promotion_readiness_gate_count": 5,
|
||||
"blocked_promotion_write_count": 6,
|
||||
"operator_action_count": 5,
|
||||
"approval_required_readback_count": 2,
|
||||
"blocked_readback_count": 1,
|
||||
"approval_required_verifier_count": 2,
|
||||
"blocked_verifier_count": 1,
|
||||
"approval_required_gate_count": 2,
|
||||
"blocked_gate_count": 1,
|
||||
"critical_blocker_count": 4,
|
||||
"owner_approval_received_count": 0,
|
||||
"dual_approval_received_count": 0,
|
||||
"dry_run_hash_verified_count": 0,
|
||||
"receipt_verifier_pass_count": 0,
|
||||
"writer_apply_count": 0,
|
||||
"dry_run_execution_count": 0,
|
||||
"receipt_write_count": 0,
|
||||
"promotion_apply_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,222 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://awoooi.local/schemas/ai_agent_result_capture_writer_dry_run_readback_v1.schema.json",
|
||||
"title": "AI Agent Result Capture Writer Dry Run Readback",
|
||||
"type": "object",
|
||||
"additionalProperties": true,
|
||||
"required": [
|
||||
"schema_version",
|
||||
"generated_at",
|
||||
"program_status",
|
||||
"prior_result_capture_writer_dry_run_fixture",
|
||||
"readback_truth",
|
||||
"dry_run_readback_cards",
|
||||
"receipt_verifier_checks",
|
||||
"promotion_readiness_gates",
|
||||
"blocked_promotion_writes",
|
||||
"operator_actions",
|
||||
"display_redaction_contract",
|
||||
"rollups"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "ai_agent_result_capture_writer_dry_run_readback_v1"
|
||||
},
|
||||
"program_status": {
|
||||
"type": "object",
|
||||
"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-124"
|
||||
},
|
||||
"next_task_id": {
|
||||
"const": "P2-125"
|
||||
},
|
||||
"read_only_mode": {
|
||||
"const": true
|
||||
},
|
||||
"runtime_authority": {
|
||||
"const": "result_capture_writer_dry_run_readback_only_no_live_write"
|
||||
}
|
||||
}
|
||||
},
|
||||
"readback_truth": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"p2_123_fixture_loaded",
|
||||
"dry_run_readback_ready",
|
||||
"receipt_verifier_ready",
|
||||
"promotion_readiness_ready",
|
||||
"writer_apply_enabled",
|
||||
"dry_run_execution_enabled",
|
||||
"receipt_write_enabled",
|
||||
"promotion_apply_enabled",
|
||||
"result_capture_write_enabled",
|
||||
"learning_write_enabled",
|
||||
"playbook_trust_write_enabled",
|
||||
"gateway_queue_write_enabled",
|
||||
"telegram_send_enabled"
|
||||
],
|
||||
"properties": {
|
||||
"p2_123_fixture_loaded": {
|
||||
"const": true
|
||||
},
|
||||
"dry_run_readback_ready": {
|
||||
"const": true
|
||||
},
|
||||
"receipt_verifier_ready": {
|
||||
"const": true
|
||||
},
|
||||
"promotion_readiness_ready": {
|
||||
"const": true
|
||||
},
|
||||
"writer_apply_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"dry_run_execution_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"receipt_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"promotion_apply_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"result_capture_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"learning_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"playbook_trust_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"gateway_queue_write_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"telegram_send_enabled": {
|
||||
"const": false
|
||||
},
|
||||
"production_write_enabled": {
|
||||
"const": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"dry_run_readback_cards": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"receipt_verifier_checks": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"promotion_readiness_gates": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"blocked_promotion_writes": {
|
||||
"type": "array",
|
||||
"minItems": 6,
|
||||
"maxItems": 6
|
||||
},
|
||||
"operator_actions": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"display_redaction_contract": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"redaction_required": {
|
||||
"const": true
|
||||
},
|
||||
"secret_value_display_allowed": {
|
||||
"const": false
|
||||
},
|
||||
"internal_collaboration_content_display_allowed": {
|
||||
"const": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"rollups": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"dry_run_readback_card_count",
|
||||
"receipt_verifier_check_count",
|
||||
"promotion_readiness_gate_count",
|
||||
"blocked_promotion_write_count",
|
||||
"operator_action_count",
|
||||
"writer_apply_count",
|
||||
"dry_run_execution_count",
|
||||
"receipt_write_count",
|
||||
"promotion_apply_count",
|
||||
"result_capture_write_count",
|
||||
"learning_write_count",
|
||||
"playbook_trust_write_count",
|
||||
"gateway_queue_write_count",
|
||||
"telegram_send_count"
|
||||
],
|
||||
"properties": {
|
||||
"dry_run_readback_card_count": {
|
||||
"const": 5
|
||||
},
|
||||
"receipt_verifier_check_count": {
|
||||
"const": 5
|
||||
},
|
||||
"promotion_readiness_gate_count": {
|
||||
"const": 5
|
||||
},
|
||||
"blocked_promotion_write_count": {
|
||||
"const": 6
|
||||
},
|
||||
"operator_action_count": {
|
||||
"const": 5
|
||||
},
|
||||
"writer_apply_count": {
|
||||
"const": 0
|
||||
},
|
||||
"dry_run_execution_count": {
|
||||
"const": 0
|
||||
},
|
||||
"receipt_write_count": {
|
||||
"const": 0
|
||||
},
|
||||
"promotion_apply_count": {
|
||||
"const": 0
|
||||
},
|
||||
"result_capture_write_count": {
|
||||
"const": 0
|
||||
},
|
||||
"learning_write_count": {
|
||||
"const": 0
|
||||
},
|
||||
"playbook_trust_write_count": {
|
||||
"const": 0
|
||||
},
|
||||
"gateway_queue_write_count": {
|
||||
"const": 0
|
||||
},
|
||||
"telegram_send_count": {
|
||||
"const": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user