feat(governance): 新增 result capture write gate review
This commit is contained in:
@@ -0,0 +1,398 @@
|
||||
{
|
||||
"schema_version": "ai_agent_result_capture_write_gate_review_v1",
|
||||
"generated_at": "2026-06-13T23:45:00+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 100,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-121",
|
||||
"next_task_id": "P2-122",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "result_capture_write_gate_review_only_no_live_write",
|
||||
"status_note": "P2-121 只建立 result capture write gate review;不得寫 result capture、learning、PlayBook trust、Gateway queue、Telegram 或 production。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_owner_approved_result_capture_promotion_dry_run_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_result_capture_promotion_approval_gate_2026-06-13.json",
|
||||
"docs/evaluations/ai_agent_result_capture_no_write_readback_2026-06-13.json",
|
||||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#41-建立-owner-approved-result-capture-promotion-dry-run"
|
||||
],
|
||||
"prior_owner_approved_promotion_dry_run": {
|
||||
"schema_version": "ai_agent_owner_approved_result_capture_promotion_dry_run_v1",
|
||||
"promotion_dry_run_template_count": 5,
|
||||
"owner_acceptance_fixture_count": 5,
|
||||
"dry_run_verifier_check_count": 5,
|
||||
"blocked_runtime_promotion_count": 5,
|
||||
"operator_action_count": 5,
|
||||
"owner_approval_received_count": 0,
|
||||
"capture_promotion_approved_count": 0,
|
||||
"dry_run_preview_generated_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-120 已正式驗證 owner-approved promotion dry-run;P2-121 只整理真正寫入前的 gate review,仍不開任何 writer。"
|
||||
},
|
||||
"write_gate_truth": {
|
||||
"p2_120_dry_run_loaded": true,
|
||||
"result_capture_writer_gate_review_ready": true,
|
||||
"learning_writer_gate_review_ready": true,
|
||||
"playbook_trust_writer_gate_review_ready": true,
|
||||
"reviewer_queue_gate_review_ready": true,
|
||||
"gateway_queue_gate_review_ready": true,
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"rollback_required": true,
|
||||
"redaction_required": true,
|
||||
"result_capture_write_approved": false,
|
||||
"learning_write_approved": false,
|
||||
"playbook_trust_write_approved": false,
|
||||
"reviewer_queue_write_approved": false,
|
||||
"gateway_queue_write_approved": 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,
|
||||
"post_write_verifier_pass_count": 0,
|
||||
"rollback_plan_verified_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": "真正寫入前需要雙重批准、dry-run hash、post-write verifier、rollback 與 redaction;目前所有 live writer 與 send 仍為 0。"
|
||||
},
|
||||
"write_gate_reviews": [
|
||||
{
|
||||
"gate_id": "gate_result_capture_writer",
|
||||
"display_name": "Result capture writer gate",
|
||||
"owner_agent": "openclaw",
|
||||
"target_writer": "result_capture_writer",
|
||||
"target_write_gate": "result_capture_write_gate_review",
|
||||
"status": "ready_for_owner_review",
|
||||
"required_before_write": "owner decision、decision reason、incident scope、dry-run hash、post-write verifier 與 rollback owner 必須齊備。",
|
||||
"blocked_write_action": "result_capture_write",
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"runtime_write_enabled": false,
|
||||
"evidence_hash": "sha256:a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_learning_writer",
|
||||
"display_name": "Learning writer gate",
|
||||
"owner_agent": "hermes",
|
||||
"target_writer": "learning_writer",
|
||||
"target_write_gate": "result_capture_write_gate_review",
|
||||
"status": "approval_required",
|
||||
"required_before_write": "KM owner 必須確認 learning 範圍、來源引用、stale 風險與撤回條件。",
|
||||
"blocked_write_action": "learning_write",
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"runtime_write_enabled": false,
|
||||
"evidence_hash": "sha256:a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2"
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_playbook_trust_writer",
|
||||
"display_name": "PlayBook trust writer gate",
|
||||
"owner_agent": "nemotron",
|
||||
"target_writer": "playbook_trust_writer",
|
||||
"target_write_gate": "result_capture_write_gate_review",
|
||||
"status": "blocked_by_policy",
|
||||
"required_before_write": "PlayBook 成功條件、失敗回寫、版本 owner 與 verifier 成功證據必須存在。",
|
||||
"blocked_write_action": "playbook_trust_write",
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"runtime_write_enabled": false,
|
||||
"evidence_hash": "sha256:a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_reviewer_queue_writer",
|
||||
"display_name": "Reviewer queue writer gate",
|
||||
"owner_agent": "openclaw",
|
||||
"target_writer": "reviewer_queue_writer",
|
||||
"target_write_gate": "result_capture_write_gate_review",
|
||||
"status": "approval_required",
|
||||
"required_before_write": "reviewer queue target、dedupe key、owner route 與 SRE 戰情室通知邊界必須先審查。",
|
||||
"blocked_write_action": "reviewer_queue_write",
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"runtime_write_enabled": false,
|
||||
"evidence_hash": "sha256:a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4"
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_gateway_queue_writer",
|
||||
"display_name": "Gateway queue writer gate",
|
||||
"owner_agent": "nemotron",
|
||||
"target_writer": "gateway_queue_writer",
|
||||
"target_write_gate": "result_capture_write_gate_review",
|
||||
"status": "ready_for_owner_review",
|
||||
"required_before_write": "Gateway queue envelope、idempotency key、retry / dead-letter 與 no-secret policy 必須完成。",
|
||||
"blocked_write_action": "gateway_queue_write",
|
||||
"dual_approval_required": true,
|
||||
"dry_run_hash_required": true,
|
||||
"post_write_verifier_required": true,
|
||||
"runtime_write_enabled": false,
|
||||
"evidence_hash": "sha256:a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5"
|
||||
}
|
||||
],
|
||||
"approval_gates": [
|
||||
{
|
||||
"gate_id": "gate_owner_dual_approval",
|
||||
"display_name": "Owner dual approval",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "result owner 與 runtime owner 兩方批准紀錄。",
|
||||
"blocked_runtime_action": "all_writer_enablement",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_dry_run_hash",
|
||||
"display_name": "Dry-run hash verification",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "ready",
|
||||
"required_evidence": "dry-run preview hash 與 committed snapshot hash 對齊。",
|
||||
"blocked_runtime_action": "result_capture_write",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_post_write_verifier",
|
||||
"display_name": "Post-write verifier plan",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "寫入後 verifier、失敗升級、rollback 準則。",
|
||||
"blocked_runtime_action": "learning_and_trust_write",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_rollback_reverify",
|
||||
"display_name": "Rollback reverify owner",
|
||||
"owner_agent": "hermes",
|
||||
"status": "blocked_by_policy",
|
||||
"required_evidence": "rollback owner、reverify window 與手動接手 SOP。",
|
||||
"blocked_runtime_action": "playbook_trust_write",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_redaction_policy",
|
||||
"display_name": "Redaction policy",
|
||||
"owner_agent": "hermes",
|
||||
"status": "ready",
|
||||
"required_evidence": "前端只顯示紅線後欄位,不顯示 raw payload 或內部協作內容。",
|
||||
"blocked_runtime_action": "telegram_send",
|
||||
"runtime_write_allowed": false
|
||||
}
|
||||
],
|
||||
"post_write_verifier_plan": [
|
||||
{
|
||||
"verifier_id": "verifier_result_capture_receipt",
|
||||
"display_name": "Result capture receipt verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "ready",
|
||||
"verifies": "result capture receipt、incident link、owner decision 與 no-duplicate key。",
|
||||
"failure_if_missing": "缺 receipt 時不得將 result capture 視為成功。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verifier_learning_write_boundary",
|
||||
"display_name": "Learning write boundary verifier",
|
||||
"owner_agent": "hermes",
|
||||
"status": "approval_required",
|
||||
"verifies": "learning write 只接收 owner-reviewed 條目,不寫高影響 KM。",
|
||||
"failure_if_missing": "缺 owner review 時必須退回 KM task。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verifier_playbook_trust_delta",
|
||||
"display_name": "PlayBook trust delta verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "blocked_by_policy",
|
||||
"verifies": "PlayBook trust delta 有成功/失敗依據與 rollback 條件。",
|
||||
"failure_if_missing": "缺 trust delta 證據時不得更新 trust score。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verifier_gateway_queue_noop",
|
||||
"display_name": "Gateway queue no-op verifier",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"verifies": "Gateway queue write 維持 0;只顯示 no-op queue envelope。",
|
||||
"failure_if_missing": "若 queue write 不為 0,必須立即標記 unauthorized write。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4"
|
||||
},
|
||||
{
|
||||
"verifier_id": "verifier_rollback_reverify",
|
||||
"display_name": "Rollback reverify verifier",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "ready",
|
||||
"verifies": "rollback / reverify plan 存在且可由人工接手。",
|
||||
"failure_if_missing": "缺 rollback 計畫時不得 promote writer。",
|
||||
"live_execution_enabled": false,
|
||||
"evidence_hash": "sha256:b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5"
|
||||
}
|
||||
],
|
||||
"blocked_live_writes": [
|
||||
{
|
||||
"blocker_id": "blocked_result_capture_write",
|
||||
"display_name": "Result capture write blocked",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "result_capture_write",
|
||||
"blocked_until": "dual approval and post-write verifier pass exist",
|
||||
"evidence_hash": "sha256:c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_learning_write",
|
||||
"display_name": "Learning write blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "learning_write",
|
||||
"blocked_until": "KM owner accepts scoped learning draft",
|
||||
"evidence_hash": "sha256:c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_playbook_trust_write",
|
||||
"display_name": "PlayBook trust write blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "playbook_trust_write",
|
||||
"blocked_until": "verifier success and rollback criteria exist",
|
||||
"evidence_hash": "sha256:c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_reviewer_queue_write",
|
||||
"display_name": "Reviewer queue write blocked",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "reviewer_queue_write",
|
||||
"blocked_until": "dedupe and owner route are approved",
|
||||
"evidence_hash": "sha256:c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_gateway_queue_write",
|
||||
"display_name": "Gateway queue write blocked",
|
||||
"severity": "high",
|
||||
"status": "approval_required",
|
||||
"blocked_action": "gateway_queue_write",
|
||||
"blocked_until": "idempotency and dead-letter policy are approved",
|
||||
"evidence_hash": "sha256:c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5"
|
||||
},
|
||||
{
|
||||
"blocker_id": "blocked_telegram_send",
|
||||
"display_name": "Telegram send blocked",
|
||||
"severity": "critical",
|
||||
"status": "blocked_by_policy",
|
||||
"blocked_action": "telegram_send",
|
||||
"blocked_until": "AwoooI SRE 戰情室 delivery receipt gate is approved",
|
||||
"evidence_hash": "sha256:c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6"
|
||||
}
|
||||
],
|
||||
"operator_actions": [
|
||||
{
|
||||
"action_id": "review_write_gate_packet",
|
||||
"display_name": "Review write gate packet",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "審查 5 個 writer gate 是否具備 owner、scope、dry-run hash、verifier 與 rollback 條件。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "collect_dual_approval",
|
||||
"display_name": "Collect dual approval",
|
||||
"owner_agent": "hermes",
|
||||
"operator_instruction": "收齊 result owner 與 runtime owner 的批准紀錄;未收齊不得啟用 writer。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "verify_dry_run_hashes",
|
||||
"display_name": "Verify dry-run hashes",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "比對 committed snapshot hash 與 dry-run preview hash;不一致即退回 P2-120。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "confirm_post_write_verifier_plan",
|
||||
"display_name": "Confirm post-write verifier plan",
|
||||
"owner_agent": "nemotron",
|
||||
"operator_instruction": "確認寫入後 verifier 與 rollback owner 存在,並列出失敗時人工接手路徑。",
|
||||
"runtime_write_allowed": false
|
||||
},
|
||||
{
|
||||
"action_id": "promote_to_p2_122",
|
||||
"display_name": "Promote to P2-122",
|
||||
"owner_agent": "openclaw",
|
||||
"operator_instruction": "只在 P2-121 gate review 全部通過後,推進到 P2-122;本步不執行 live write。",
|
||||
"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": "前端只顯示 gate、owner、狀態、阻擋動作與紅線後 evidence hash;不得顯示內部協作內容、secret、原始 payload 或私有推理。"
|
||||
},
|
||||
"rollups": {
|
||||
"write_gate_review_count": 5,
|
||||
"approval_gate_count": 5,
|
||||
"post_write_verifier_plan_count": 5,
|
||||
"blocked_live_write_count": 6,
|
||||
"operator_action_count": 5,
|
||||
"approval_required_review_count": 2,
|
||||
"blocked_review_count": 1,
|
||||
"approval_required_gate_count": 2,
|
||||
"blocked_gate_count": 1,
|
||||
"approval_required_verifier_count": 2,
|
||||
"critical_blocker_count": 3,
|
||||
"owner_approval_received_count": 0,
|
||||
"dual_approval_received_count": 0,
|
||||
"dry_run_hash_verified_count": 0,
|
||||
"post_write_verifier_pass_count": 0,
|
||||
"rollback_plan_verified_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,188 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://awoooi.local/schemas/ai_agent_result_capture_write_gate_review_v1.schema.json",
|
||||
"title": "AI Agent Result Capture Write Gate Review",
|
||||
"type": "object",
|
||||
"additionalProperties": true,
|
||||
"required": [
|
||||
"schema_version",
|
||||
"generated_at",
|
||||
"program_status",
|
||||
"prior_owner_approved_promotion_dry_run",
|
||||
"write_gate_truth",
|
||||
"write_gate_reviews",
|
||||
"approval_gates",
|
||||
"post_write_verifier_plan",
|
||||
"blocked_live_writes",
|
||||
"operator_actions",
|
||||
"display_redaction_contract",
|
||||
"rollups"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "ai_agent_result_capture_write_gate_review_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-121"
|
||||
},
|
||||
"next_task_id": {
|
||||
"const": "P2-122"
|
||||
},
|
||||
"read_only_mode": {
|
||||
"const": true
|
||||
},
|
||||
"runtime_authority": {
|
||||
"const": "result_capture_write_gate_review_only_no_live_write"
|
||||
}
|
||||
}
|
||||
},
|
||||
"write_gate_truth": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"dual_approval_required",
|
||||
"dry_run_hash_required",
|
||||
"post_write_verifier_required",
|
||||
"result_capture_write_enabled",
|
||||
"learning_write_enabled",
|
||||
"playbook_trust_write_enabled",
|
||||
"gateway_queue_write_enabled"
|
||||
],
|
||||
"properties": {
|
||||
"dual_approval_required": {
|
||||
"const": true
|
||||
},
|
||||
"dry_run_hash_required": {
|
||||
"const": true
|
||||
},
|
||||
"post_write_verifier_required": {
|
||||
"const": true
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
},
|
||||
"write_gate_reviews": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"approval_gates": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"post_write_verifier_plan": {
|
||||
"type": "array",
|
||||
"minItems": 5,
|
||||
"maxItems": 5
|
||||
},
|
||||
"blocked_live_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": [
|
||||
"write_gate_review_count",
|
||||
"approval_gate_count",
|
||||
"post_write_verifier_plan_count",
|
||||
"blocked_live_write_count",
|
||||
"operator_action_count",
|
||||
"result_capture_write_count",
|
||||
"learning_write_count",
|
||||
"playbook_trust_write_count",
|
||||
"gateway_queue_write_count",
|
||||
"telegram_send_count"
|
||||
],
|
||||
"properties": {
|
||||
"write_gate_review_count": {
|
||||
"const": 5
|
||||
},
|
||||
"approval_gate_count": {
|
||||
"const": 5
|
||||
},
|
||||
"post_write_verifier_plan_count": {
|
||||
"const": 5
|
||||
},
|
||||
"blocked_live_write_count": {
|
||||
"const": 6
|
||||
},
|
||||
"operator_action_count": {
|
||||
"const": 5
|
||||
},
|
||||
"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
|
||||
},
|
||||
"production_write_count": {
|
||||
"const": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user