fix(web): 完成 P2-411 治理卡片繁中化
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m47s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m47s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -4148,46 +4148,46 @@
|
||||
}
|
||||
},
|
||||
"actionOwnerEventBus": {
|
||||
"title": "P2-411 Owner Acceptance / 交接事件總線",
|
||||
"subtitle": "{current} → {next};owner 驗收 lane {lanes};阻擋中的 runtime 操作 {blocked}。",
|
||||
"title": "P2-411 負責人回覆驗收 / 交接事件總線",
|
||||
"subtitle": "{current} → {next};負責人驗收通道 {lanes};阻擋中的執行期操作 {blocked}。",
|
||||
"badges": {
|
||||
"mode": "no-write 事件總線",
|
||||
"mode": "無寫入事件總線",
|
||||
"events": "交接事件 {count}",
|
||||
"live": "live total {count}"
|
||||
"live": "正式寫入總數 {count}"
|
||||
},
|
||||
"metrics": {
|
||||
"overall": "完成度",
|
||||
"lanes": "Owner 驗收 lane",
|
||||
"lanes": "負責人驗收通道",
|
||||
"medium": "中風險",
|
||||
"high": "高風險",
|
||||
"critical": "Critical",
|
||||
"critical": "極高風險",
|
||||
"events": "交接事件",
|
||||
"rag": "RAG 提案",
|
||||
"gates": "Verifier gates",
|
||||
"fields": "Owner 欄位",
|
||||
"live": "Live 寫入"
|
||||
"gates": "驗證關卡",
|
||||
"fields": "負責人欄位",
|
||||
"live": "正式寫入"
|
||||
},
|
||||
"sections": {
|
||||
"lanes": "Owner acceptance lanes",
|
||||
"boundaries": "No-write 邊界",
|
||||
"lanes": "負責人驗收通道",
|
||||
"boundaries": "無寫入邊界",
|
||||
"events": "交接事件",
|
||||
"rag": "RAG 記憶提案",
|
||||
"gates": "Verifier gates",
|
||||
"truth": "事件總線 truth"
|
||||
"gates": "驗證關卡",
|
||||
"truth": "事件總線事實"
|
||||
},
|
||||
"labels": {
|
||||
"fields": "owner 欄位 {count}",
|
||||
"sideEffects": "side effects {count}",
|
||||
"eventBus": "事件總線 publish",
|
||||
"publishTotal": "publish total {count}",
|
||||
"fields": "負責人欄位 {count}",
|
||||
"sideEffects": "副作用 {count}",
|
||||
"eventBus": "事件總線發布",
|
||||
"publishTotal": "發布總數 {count}",
|
||||
"ragWrite": "RAG / KM 寫入",
|
||||
"ragDetail": "proposal {count}",
|
||||
"ragDetail": "提案 {count}",
|
||||
"telegram": "Telegram 實發",
|
||||
"queueBotWorker": "queue {queue} / bot {bot} / worker {worker}",
|
||||
"proposal": "status {status}",
|
||||
"generated": "generated {generated}",
|
||||
"redaction": "redaction {value}",
|
||||
"ownerAccepted": "owner accepted {count}"
|
||||
"queueBotWorker": "佇列 {queue} / Bot {bot} / worker {worker}",
|
||||
"proposal": "狀態 僅提案不寫入",
|
||||
"generated": "產生時間 {generated}",
|
||||
"redaction": "脫敏 {value}",
|
||||
"ownerAccepted": "已接受 {count}"
|
||||
},
|
||||
"agents": {
|
||||
"openclaw": "OpenClaw",
|
||||
@@ -4198,23 +4198,23 @@
|
||||
"devops": "DevOps"
|
||||
},
|
||||
"riskTiers": {
|
||||
"low": "low",
|
||||
"medium": "medium",
|
||||
"high": "high",
|
||||
"critical": "critical"
|
||||
"low": "低風險",
|
||||
"medium": "中風險",
|
||||
"high": "高風險",
|
||||
"critical": "極高風險"
|
||||
},
|
||||
"statuses": {
|
||||
"blocked_no_external_response": "no external response",
|
||||
"blocked_missing_fields": "missing fields",
|
||||
"candidate_only_no_write": "candidate only"
|
||||
"blocked_no_external_response": "尚無外部回覆",
|
||||
"blocked_missing_fields": "缺少欄位",
|
||||
"candidate_only_no_write": "僅候選不寫入"
|
||||
},
|
||||
"stages": {
|
||||
"owner_response_hold": "owner hold",
|
||||
"owner_response_rejection": "owner rejection",
|
||||
"candidate_ready_no_write": "candidate ready",
|
||||
"handoff_request": "handoff request",
|
||||
"rag_memory_proposal": "RAG proposal",
|
||||
"no_send_rehearsal": "no-send rehearsal"
|
||||
"owner_response_hold": "負責人回覆暫停",
|
||||
"owner_response_rejection": "負責人回覆拒收",
|
||||
"candidate_ready_no_write": "候選就緒不寫入",
|
||||
"handoff_request": "交接請求",
|
||||
"rag_memory_proposal": "RAG 記憶提案",
|
||||
"no_send_rehearsal": "不發送演練"
|
||||
}
|
||||
},
|
||||
"hostRunawayAiops": {
|
||||
|
||||
@@ -5198,23 +5198,23 @@ export function AutomationInventoryTab() {
|
||||
<div style={{ marginTop: 8 }}>
|
||||
<GateMatrixRow
|
||||
label={t('actionOwnerEventBus.labels.eventBus')}
|
||||
value={String(actionOwnerAcceptanceEventBus.activation_boundaries.event_bus_publish_enabled)}
|
||||
value={actionOwnerAcceptanceEventBus.activation_boundaries.event_bus_publish_enabled ? '是' : '否'}
|
||||
detail={t('actionOwnerEventBus.labels.publishTotal', { count: actionOwnerAcceptanceEventBus.rollups.event_bus_publish_count })}
|
||||
tone="ok"
|
||||
/>
|
||||
<GateMatrixRow
|
||||
label={t('actionOwnerEventBus.labels.ragWrite')}
|
||||
value={String(actionOwnerAcceptanceEventBus.activation_boundaries.km_write_enabled || actionOwnerAcceptanceEventBus.activation_boundaries.playbook_trust_write_enabled)}
|
||||
value={(actionOwnerAcceptanceEventBus.activation_boundaries.km_write_enabled || actionOwnerAcceptanceEventBus.activation_boundaries.playbook_trust_write_enabled) ? '是' : '否'}
|
||||
detail={t('actionOwnerEventBus.labels.ragDetail', { count: actionOwnerEventBusRag })}
|
||||
tone="ok"
|
||||
/>
|
||||
<GateMatrixRow
|
||||
label={t('actionOwnerEventBus.labels.telegram')}
|
||||
value={String(actionOwnerAcceptanceEventBus.activation_boundaries.telegram_send_enabled)}
|
||||
value={actionOwnerAcceptanceEventBus.activation_boundaries.telegram_send_enabled ? '是' : '否'}
|
||||
detail={t('actionOwnerEventBus.labels.queueBotWorker', {
|
||||
queue: String(actionOwnerAcceptanceEventBus.activation_boundaries.gateway_queue_write_enabled),
|
||||
bot: String(actionOwnerAcceptanceEventBus.activation_boundaries.bot_api_call_enabled),
|
||||
worker: String(actionOwnerAcceptanceEventBus.activation_boundaries.worker_dispatch_enabled),
|
||||
queue: actionOwnerAcceptanceEventBus.activation_boundaries.gateway_queue_write_enabled ? '是' : '否',
|
||||
bot: actionOwnerAcceptanceEventBus.activation_boundaries.bot_api_call_enabled ? '是' : '否',
|
||||
worker: actionOwnerAcceptanceEventBus.activation_boundaries.worker_dispatch_enabled ? '是' : '否',
|
||||
})}
|
||||
tone="ok"
|
||||
/>
|
||||
@@ -5275,7 +5275,7 @@ export function AutomationInventoryTab() {
|
||||
<Chip value={t('actionOwnerEventBus.labels.generated', {
|
||||
generated: formatDateTime(actionOwnerAcceptanceEventBus.generated_at),
|
||||
})} muted />
|
||||
<Chip value={t('actionOwnerEventBus.labels.redaction', { value: String(actionOwnerAcceptanceEventBus.display_redaction_contract.redaction_required) })} muted />
|
||||
<Chip value={t('actionOwnerEventBus.labels.redaction', { value: actionOwnerAcceptanceEventBus.display_redaction_contract.redaction_required ? '是' : '否' })} muted />
|
||||
<Chip value={t('actionOwnerEventBus.labels.ownerAccepted', { count: actionOwnerEventBusAccepted })} muted />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"next_task_id": "P2-412",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "agent_action_owner_acceptance_event_bus_no_write_committed_snapshot",
|
||||
"status_note": "P2-411 承接 P2-409 高風險 Owner Review Queue 與 P2-410 行動審計帳本,把 owner response acceptance、Agent handoff event 與 RAG memory proposal 固定成 no-write event bus 基線;目前只允許 committed snapshot 與治理頁讀回,不 publish event、不寫 KM、不送 Telegram。"
|
||||
"status_note": "P2-411 承接 P2-409 高風險負責人審核佇列與 P2-410 行動審計帳本,把負責人回覆驗收、Agent 交接事件與 RAG 記憶提案固定成無寫入事件總線基線;目前只允許已提交快照與治理頁讀回,不發布事件、不寫 KM、不送 Telegram。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_high_risk_owner_review_queue_2026-06-19.json",
|
||||
@@ -24,8 +24,8 @@
|
||||
"endpoint": "GET /api/v1/agents/agent-high-risk-owner-review-queue",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "loaded",
|
||||
"key_readback": "Queue item 7、approval packet 7、rejection guard 8、blocked runtime action 42;owner response received / accepted 皆為 0。",
|
||||
"next_action": "P2-411 將 queue item 轉成 owner acceptance lane,仍不得離開 paused / blocked 狀態。"
|
||||
"key_readback": "佇列項目 7、批准封包 7、拒收規則 8、阻擋中的執行期操作 42;負責人回覆收件 / 接受皆為 0。",
|
||||
"next_action": "P2-411 將佇列項目轉成負責人驗收通道,仍不得離開暫停 / 阻擋狀態。"
|
||||
},
|
||||
{
|
||||
"readback_id": "p2_410_action_audit_ledger",
|
||||
@@ -34,8 +34,8 @@
|
||||
"endpoint": "GET /api/v1/agents/agent-action-audit-ledger",
|
||||
"owner_agent": "nemotron",
|
||||
"status": "loaded",
|
||||
"key_readback": "Audit event template 8、verifier receipt gate 5、required audit fields 48;audit DB / timeline / KM / Telegram / production write 皆為 0。",
|
||||
"next_action": "P2-411 將 audit event template 提升為 no-write handoff event template,不 publish runtime event bus。"
|
||||
"key_readback": "審計事件模板 8、驗證回執關卡 5、必要審計欄位 48;審計 DB / 時間線 / KM / Telegram / 正式環境寫入皆為 0。",
|
||||
"next_action": "P2-411 將審計事件模板提升為無寫入交接事件模板,不發布執行期事件總線。"
|
||||
},
|
||||
{
|
||||
"readback_id": "agent_communication_learning_contract",
|
||||
@@ -44,8 +44,8 @@
|
||||
"endpoint": "GET /api/v1/agents/agent-communication-learning-contract",
|
||||
"owner_agent": "hermes",
|
||||
"status": "loaded",
|
||||
"key_readback": "OpenClaw / Hermes / NemoTron 溝通、學習與記錄契約已存在,但 learning write、KM write、Telegram send 與 runtime worker 尚未開。",
|
||||
"next_action": "P2-411 只建立 RAG memory proposal lane,等待 owner acceptance 與 redaction gate。"
|
||||
"key_readback": "OpenClaw / Hermes / NemoTron 溝通、學習與記錄契約已存在,但學習寫入、KM 寫入、Telegram 實發與執行期 worker 尚未開。",
|
||||
"next_action": "P2-411 只建立 RAG 記憶提案通道,等待負責人驗收與脫敏關卡。"
|
||||
},
|
||||
{
|
||||
"readback_id": "agent_12_war_room",
|
||||
@@ -54,8 +54,8 @@
|
||||
"endpoint": "GET /api/v1/agents/agent-12-agent-war-room",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "loaded",
|
||||
"key_readback": "12-Agent 分工與 handoff 概念已可視化;目前仍是戰情室 readback,沒有 runtime delegation write。",
|
||||
"next_action": "P2-411 將 agent handoff 轉成可審計 event template,保持 no-write。"
|
||||
"key_readback": "12-Agent 分工與交接概念已可視化;目前仍是戰情室讀回,沒有執行期委派寫入。",
|
||||
"next_action": "P2-411 將 Agent 交接轉成可審計事件模板,保持無寫入。"
|
||||
}
|
||||
],
|
||||
"event_bus_truth": {
|
||||
@@ -110,7 +110,7 @@
|
||||
"host_write_count_24h": 0,
|
||||
"kubectl_action_count_24h": 0,
|
||||
"destructive_operation_count_24h": 0,
|
||||
"truth_note": "P2-411 是 owner acceptance / handoff / RAG proposal 的 no-write event bus 基線;沒有任何外部正式回覆被收件或接受,也沒有任何事件 publish、KM 寫入、Telegram 實發、worker dispatch 或 production write。"
|
||||
"truth_note": "P2-411 是負責人驗收、Agent 交接與 RAG 提案的無寫入事件總線基線;沒有任何外部正式回覆被收件或接受,也沒有任何事件發布、KM 寫入、Telegram 實發、worker 派工或正式環境寫入。"
|
||||
},
|
||||
"owner_acceptance_lanes": [
|
||||
{
|
||||
@@ -119,7 +119,7 @@
|
||||
"owner_agent": "openclaw",
|
||||
"risk_tier": "medium",
|
||||
"source_readback_ids": ["p2_410_action_audit_ledger"],
|
||||
"required_owner_fields": ["owner_role", "approved_risk_scope", "allowed_candidate_ids", "dry_run_scope", "rollback_owner", "postcheck_plan"],
|
||||
"required_owner_fields": ["負責人角色", "核准風險範圍", "允許候選項目", "乾跑範圍", "回復負責人", "後檢計畫"],
|
||||
"required_evidence_refs": ["audit_low_risk_candidate_classified", "audit_medium_risk_dry_run_hold"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -131,15 +131,15 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "P2-412 fixture-only dry-run worker receipt rehearsal"
|
||||
"next_gate": "P2-412 僅 fixture 的 worker 回執乾跑演練"
|
||||
},
|
||||
{
|
||||
"lane_id": "high_risk_owner_packet_acceptance",
|
||||
"display_name": "高風險 owner 封包驗收",
|
||||
"display_name": "高風險負責人封包驗收",
|
||||
"owner_agent": "openclaw",
|
||||
"risk_tier": "high",
|
||||
"source_readback_ids": ["p2_409_high_risk_owner_queue", "p2_410_action_audit_ledger"],
|
||||
"required_owner_fields": ["owner_role", "decision", "decision_reason", "affected_scope", "approval_packet_id", "rollback_owner", "postcheck_evidence_ref"],
|
||||
"required_owner_fields": ["負責人角色", "決策", "決策理由", "影響範圍", "批准封包編號", "回復負責人", "後檢證據引用"],
|
||||
"required_evidence_refs": ["approval_packet_ref", "audit_high_risk_owner_queue_pause"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -151,7 +151,7 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "P2-412 fixture-only dry-run worker receipt rehearsal"
|
||||
"next_gate": "P2-412 僅 fixture 的 worker 回執乾跑演練"
|
||||
},
|
||||
{
|
||||
"lane_id": "telegram_egress_acceptance",
|
||||
@@ -159,7 +159,7 @@
|
||||
"owner_agent": "hermes",
|
||||
"risk_tier": "high",
|
||||
"source_readback_ids": ["p2_409_high_risk_owner_queue", "p2_410_action_audit_ledger"],
|
||||
"required_owner_fields": ["canonical_room_env", "message_shape_contract", "redaction_proof", "delivery_receipt_expectation", "dedupe_key", "rollback_owner"],
|
||||
"required_owner_fields": ["標準群組環境變數", "訊息格式契約", "脫敏證明", "送達回執期望", "去重鍵", "回復負責人"],
|
||||
"required_evidence_refs": ["packet_high_live_telegram_gateway_send", "audit_sre_digest_no_send_preview", "audit_telegram_no_new_bypass_guard"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -171,7 +171,7 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "P2-412 no-send delivery rehearsal only"
|
||||
"next_gate": "P2-412 僅不發送送達演練"
|
||||
},
|
||||
{
|
||||
"lane_id": "rag_memory_learning_acceptance",
|
||||
@@ -179,7 +179,7 @@
|
||||
"owner_agent": "hermes",
|
||||
"risk_tier": "medium",
|
||||
"source_readback_ids": ["p2_410_action_audit_ledger", "agent_communication_learning_contract"],
|
||||
"required_owner_fields": ["knowledge_scope", "source_event_ids", "redaction_attestation", "forgetting_policy", "rollback_owner", "verifier_plan"],
|
||||
"required_owner_fields": ["知識範圍", "來源事件編號", "脫敏證明", "遺忘政策", "回復負責人", "驗證計畫"],
|
||||
"required_evidence_refs": ["audit_result_route_writeback_blocked", "agent_communication_learning_contract"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -191,7 +191,7 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "P2-412 RAG fixture receipt rehearsal"
|
||||
"next_gate": "P2-412 RAG fixture 回執演練"
|
||||
},
|
||||
{
|
||||
"lane_id": "handoff_event_bus_acceptance",
|
||||
@@ -199,7 +199,7 @@
|
||||
"owner_agent": "nemotron",
|
||||
"risk_tier": "medium",
|
||||
"source_readback_ids": ["p2_410_action_audit_ledger", "agent_12_war_room"],
|
||||
"required_owner_fields": ["producer_agent", "consumer_agent", "handoff_reason", "accepted_scope", "verifier_gate_id", "failure_route"],
|
||||
"required_owner_fields": ["產生方 Agent", "接手方 Agent", "交接理由", "接受範圍", "驗證關卡編號", "失敗路由"],
|
||||
"required_evidence_refs": ["agent_12_war_room", "audit_result_route_writeback_blocked"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -211,15 +211,15 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "P2-412 event bus fixture publish rehearsal"
|
||||
"next_gate": "P2-412 事件總線 fixture 發布演練"
|
||||
},
|
||||
{
|
||||
"lane_id": "critical_secret_cost_acceptance",
|
||||
"display_name": "Critical secret / 費用邊界驗收",
|
||||
"display_name": "極高風險機密 / 費用邊界驗收",
|
||||
"owner_agent": "security",
|
||||
"risk_tier": "critical",
|
||||
"source_readback_ids": ["p2_409_high_risk_owner_queue", "p2_410_action_audit_ledger"],
|
||||
"required_owner_fields": ["secret_name_only", "paid_provider_scope", "privacy_egress_scope", "cost_cap", "joint_owner", "rollback_owner", "audit_reason"],
|
||||
"required_owner_fields": ["僅允許機密名稱", "付費供應商範圍", "隱私外傳範圍", "費用上限", "共同負責人", "回復負責人", "審計理由"],
|
||||
"required_evidence_refs": ["packet_critical_secret_paid_provider_boundary", "audit_critical_runtime_action_rejected"],
|
||||
"acceptance_status": "blocked_no_external_response",
|
||||
"acceptance_decision": "not_evaluated",
|
||||
@@ -231,20 +231,20 @@
|
||||
"telegram_send_allowed": false,
|
||||
"rag_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "security and cost joint owner envelope"
|
||||
"next_gate": "安全與費用共同負責人封包"
|
||||
}
|
||||
],
|
||||
"handoff_event_templates": [
|
||||
{
|
||||
"event_id": "event_owner_response_missing",
|
||||
"display_name": "Owner response 缺口 hold 事件",
|
||||
"display_name": "負責人回覆缺口暫停事件",
|
||||
"producer_agent": "openclaw",
|
||||
"consumer_agent": "hermes",
|
||||
"event_stage": "owner_response_hold",
|
||||
"risk_tier": "high",
|
||||
"source_lane_ids": ["high_risk_owner_packet_acceptance", "telegram_egress_acceptance"],
|
||||
"required_event_fields": ["lane_id", "missing_owner_fields", "blocked_action", "redacted_evidence_ref", "next_gate"],
|
||||
"blocked_writes": ["event bus publish", "Gateway queue write", "Telegram send", "runtime worker dispatch"],
|
||||
"blocked_writes": ["事件總線發布", "Gateway 佇列寫入", "Telegram 實發", "執行期 worker 派工"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -254,18 +254,18 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "owner envelope completeness check"
|
||||
"next_gate": "負責人封包完整性檢查"
|
||||
},
|
||||
{
|
||||
"event_id": "event_owner_response_rejected",
|
||||
"display_name": "Owner response 拒收事件",
|
||||
"display_name": "負責人回覆拒收事件",
|
||||
"producer_agent": "security",
|
||||
"consumer_agent": "openclaw",
|
||||
"event_stage": "owner_response_rejection",
|
||||
"risk_tier": "critical",
|
||||
"source_lane_ids": ["critical_secret_cost_acceptance"],
|
||||
"required_event_fields": ["lane_id", "rejection_guard_id", "redaction_state", "cost_boundary_state", "operator_next_step"],
|
||||
"blocked_writes": ["secret read", "paid API call", "provider switch", "production write"],
|
||||
"blocked_writes": ["機密讀取", "付費 API 呼叫", "供應商切換", "正式環境寫入"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -275,18 +275,18 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "security owner redacted resubmission"
|
||||
"next_gate": "安全負責人脫敏後重送"
|
||||
},
|
||||
{
|
||||
"event_id": "event_owner_response_candidate_ready",
|
||||
"display_name": "Owner response 候選 ready 事件",
|
||||
"display_name": "負責人回覆候選就緒事件",
|
||||
"producer_agent": "openclaw",
|
||||
"consumer_agent": "nemotron",
|
||||
"event_stage": "candidate_ready_no_write",
|
||||
"risk_tier": "medium",
|
||||
"source_lane_ids": ["low_medium_worker_scope_acceptance"],
|
||||
"required_event_fields": ["candidate_ids", "allowed_scope", "dry_run_only", "rollback_owner", "postcheck_plan"],
|
||||
"blocked_writes": ["runtime worker dispatch", "receipt production write", "KM write", "PlayBook trust write"],
|
||||
"blocked_writes": ["執行期 worker 派工", "正式回執寫入", "KM 寫入", "PlayBook 信任分數寫入"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -296,7 +296,7 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "fixture-only dry-run receipt rehearsal"
|
||||
"next_gate": "僅 fixture 的乾跑回執演練"
|
||||
},
|
||||
{
|
||||
"event_id": "event_agent_handoff_requested",
|
||||
@@ -307,7 +307,7 @@
|
||||
"risk_tier": "medium",
|
||||
"source_lane_ids": ["handoff_event_bus_acceptance"],
|
||||
"required_event_fields": ["producer_agent", "consumer_agent", "handoff_reason", "accepted_scope", "failure_route", "receipt_expectation"],
|
||||
"blocked_writes": ["event bus publish", "timeline write", "task assignment write", "Telegram send"],
|
||||
"blocked_writes": ["事件總線發布", "時間線寫入", "任務指派寫入", "Telegram 實發"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -317,7 +317,7 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "handoff receipt fixture rehearsal"
|
||||
"next_gate": "交接回執 fixture 演練"
|
||||
},
|
||||
{
|
||||
"event_id": "event_rag_memory_proposal",
|
||||
@@ -328,7 +328,7 @@
|
||||
"risk_tier": "medium",
|
||||
"source_lane_ids": ["rag_memory_learning_acceptance"],
|
||||
"required_event_fields": ["proposal_id", "target_store", "redaction_checks", "forgetting_policy", "verifier_plan"],
|
||||
"blocked_writes": ["KM write", "embedding write", "PlayBook trust write", "fine-tune dataset write"],
|
||||
"blocked_writes": ["KM 寫入", "embedding 寫入", "PlayBook 信任分數寫入", "微調資料集寫入"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -338,18 +338,18 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "RAG proposal owner acceptance"
|
||||
"next_gate": "RAG 提案負責人驗收"
|
||||
},
|
||||
{
|
||||
"event_id": "event_telegram_no_send_rehearsal",
|
||||
"display_name": "Telegram no-send rehearsal 事件",
|
||||
"display_name": "Telegram 不發送演練事件",
|
||||
"producer_agent": "hermes",
|
||||
"consumer_agent": "sre",
|
||||
"event_stage": "no_send_rehearsal",
|
||||
"risk_tier": "high",
|
||||
"source_lane_ids": ["telegram_egress_acceptance"],
|
||||
"required_event_fields": ["preview_hash", "dedupe_key", "canonical_room_env", "no_send_boundary", "delivery_receipt_expectation"],
|
||||
"blocked_writes": ["Gateway queue write", "Telegram send", "Bot API call", "receipt production write"],
|
||||
"blocked_writes": ["Gateway 佇列寫入", "Telegram 實發", "Bot API 呼叫", "正式回執寫入"],
|
||||
"event_bus_write_allowed": false,
|
||||
"audit_db_write_allowed": false,
|
||||
"timeline_write_allowed": false,
|
||||
@@ -359,15 +359,15 @@
|
||||
"telegram_send_allowed": false,
|
||||
"production_write_allowed": false,
|
||||
"side_effect_count": 0,
|
||||
"next_gate": "no-send fixture receipt rehearsal"
|
||||
"next_gate": "不發送 fixture 回執演練"
|
||||
}
|
||||
],
|
||||
"rag_memory_proposals": [
|
||||
{
|
||||
"proposal_id": "rag_acceptance_contract",
|
||||
"display_name": "Owner acceptance 合約記憶提案",
|
||||
"display_name": "負責人驗收合約記憶提案",
|
||||
"owner_agent": "hermes",
|
||||
"target_store": "knowledge_entries",
|
||||
"target_store": "知識條目草稿庫",
|
||||
"source_event_ids": ["event_owner_response_missing", "event_owner_response_candidate_ready"],
|
||||
"required_redaction_checks": ["no secret value", "no unredacted prompt", "redacted evidence ref only"],
|
||||
"proposal_status": "proposal_only_no_write",
|
||||
@@ -380,7 +380,7 @@
|
||||
"proposal_id": "rag_handoff_outcome",
|
||||
"display_name": "Agent 交接結果記憶提案",
|
||||
"owner_agent": "nemotron",
|
||||
"target_store": "agent_handoff_memory",
|
||||
"target_store": "Agent 交接記憶草稿庫",
|
||||
"source_event_ids": ["event_agent_handoff_requested"],
|
||||
"required_redaction_checks": ["agent ids only", "no private reasoning", "no unsafe payload"],
|
||||
"proposal_status": "proposal_only_no_write",
|
||||
@@ -393,7 +393,7 @@
|
||||
"proposal_id": "rag_rejection_guard",
|
||||
"display_name": "拒收規則記憶提案",
|
||||
"owner_agent": "security",
|
||||
"target_store": "security_rejection_playbooks",
|
||||
"target_store": "安全拒收 PlayBook 草稿庫",
|
||||
"source_event_ids": ["event_owner_response_rejected"],
|
||||
"required_redaction_checks": ["secret name only", "no token hash", "no payload sample"],
|
||||
"proposal_status": "proposal_only_no_write",
|
||||
@@ -404,9 +404,9 @@
|
||||
},
|
||||
{
|
||||
"proposal_id": "rag_no_send_receipt",
|
||||
"display_name": "No-send receipt 記憶提案",
|
||||
"display_name": "不發送回執記憶提案",
|
||||
"owner_agent": "sre",
|
||||
"target_store": "notification_receipt_memory",
|
||||
"target_store": "通知回執記憶草稿庫",
|
||||
"source_event_ids": ["event_telegram_no_send_rehearsal"],
|
||||
"required_redaction_checks": ["dedupe key only", "no chat id value", "no message payload"],
|
||||
"proposal_status": "proposal_only_no_write",
|
||||
@@ -419,60 +419,60 @@
|
||||
"verifier_gates": [
|
||||
{
|
||||
"gate_id": "gate_owner_envelope_complete",
|
||||
"display_name": "Owner envelope 完整性",
|
||||
"display_name": "負責人封包完整性",
|
||||
"owner_agent": "openclaw",
|
||||
"required_checks": ["owner_role exists", "decision exists", "affected_scope exists", "rollback_owner exists", "postcheck_plan exists"],
|
||||
"failure_if_missing": "Owner envelope 欄位不完整時,只能維持 blocked_no_external_response。",
|
||||
"failure_if_missing": "負責人封包欄位不完整時,只能維持尚無外部回覆的阻擋狀態。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_redacted_evidence_only",
|
||||
"display_name": "只允許脫敏 evidence",
|
||||
"display_name": "只允許脫敏證據",
|
||||
"owner_agent": "security",
|
||||
"required_checks": ["no secret value", "no raw payload", "no private reasoning", "metadata refs only"],
|
||||
"failure_if_missing": "未遮罩資料不得進入 event template 或 RAG proposal。",
|
||||
"failure_if_missing": "未遮罩資料不得進入事件模板或 RAG 提案。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_no_event_bus_publish",
|
||||
"display_name": "禁止 event bus publish",
|
||||
"display_name": "禁止事件總線發布",
|
||||
"owner_agent": "nemotron",
|
||||
"required_checks": ["event_bus_publish_count=0", "worker_dispatch_count=0", "timeline_write_count=0"],
|
||||
"failure_if_missing": "任何 publish / dispatch / write 非 0 都不能宣稱 P2-411 no-write baseline。",
|
||||
"failure_if_missing": "任何發布、派工或寫入非 0 都不能宣稱 P2-411 無寫入基線。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_no_send_no_queue",
|
||||
"display_name": "No-send / no-queue 邊界",
|
||||
"display_name": "不發送 / 不入佇列邊界",
|
||||
"owner_agent": "sre",
|
||||
"required_checks": ["gateway_queue_write_count=0", "telegram_send_count=0", "bot_api_call_count=0"],
|
||||
"failure_if_missing": "Telegram 或 Gateway 任一實發非 0 時必須退回 high-risk owner queue。",
|
||||
"failure_if_missing": "Telegram 或 Gateway 任一實發非 0 時必須退回高風險負責人佇列。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_rag_proposal_only",
|
||||
"display_name": "RAG 只允許 proposal",
|
||||
"display_name": "RAG 只允許提案",
|
||||
"owner_agent": "hermes",
|
||||
"required_checks": ["km_write_count=0", "embedding_write_count=0", "playbook_trust_write_count=0"],
|
||||
"failure_if_missing": "RAG 只能產 proposal,不得直接寫 knowledge store 或 trust score。",
|
||||
"failure_if_missing": "RAG 只能產生提案,不得直接寫入知識庫或信任分數。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
},
|
||||
{
|
||||
"gate_id": "gate_rollback_postcheck_required",
|
||||
"display_name": "必須具備 rollback / postcheck",
|
||||
"display_name": "必須具備回復 / 後檢",
|
||||
"owner_agent": "sre",
|
||||
"required_checks": ["rollback_owner exists", "postcheck_plan exists", "failure_route exists", "stop_condition exists"],
|
||||
"failure_if_missing": "缺 rollback / postcheck 的 acceptance lane 不能進入 P2-412 fixture rehearsal。",
|
||||
"failure_if_missing": "缺少回復或後檢的驗收通道不能進入 P2-412 fixture 演練。",
|
||||
"live_verifier_allowed": false,
|
||||
"receipt_write_allowed": false,
|
||||
"runtime_action_allowed": false
|
||||
@@ -547,13 +547,13 @@
|
||||
{
|
||||
"task_id": "P2-412",
|
||||
"priority": "P0",
|
||||
"summary": "建立 fixture-only dry-run worker receipt rehearsal,使用 P2-411 acceptance lane 和 handoff event template,但不 publish live event bus。",
|
||||
"summary": "建立僅 fixture 的 worker 回執乾跑演練,使用 P2-411 驗收通道與交接事件模板,但不發布正式事件總線。",
|
||||
"gate": "event_bus_publish=0 / worker_dispatch=0 / Telegram send=0 until owner acceptance is real and redacted"
|
||||
},
|
||||
{
|
||||
"task_id": "P2-413",
|
||||
"priority": "P0",
|
||||
"summary": "把 P2-411 no-write event bus 投影到 Runs、Work Items、SRE digest preview 與治理頁,但不新增 action button。",
|
||||
"summary": "把 P2-411 無寫入事件總線投影到 Runs、Work Items、SRE 摘要預覽與治理頁,但不新增操作按鈕。",
|
||||
"gate": "frontend projection only; no Gateway queue write or production receipt write"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user