feat(governance): 新增 Telegram receipt approval package
This commit is contained in:
@@ -2,13 +2,13 @@
|
||||
"schema_version": "ai_agent_interaction_learning_proof_v1",
|
||||
"generated_at": "2026-06-11T23:20:00+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 72,
|
||||
"overall_completion_percent": 80,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-403D",
|
||||
"next_task_id": "P2-403E",
|
||||
"current_task_id": "P2-403E",
|
||||
"next_task_id": "P2-403F",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "proof_surface_only_no_live_worker",
|
||||
"status_note": "P2-403D 已把 KM、PlayBook trust、timeline learning 與 replay score 的 learning writeback approval package 接入證據鏈;live learning write、PlayBook trust update、KM update 與 Telegram receipt 仍未開 gate。"
|
||||
"status_note": "P2-403E 已把 Telegram receipt approval package 接入;live AgentSession、message、handoff、learning write、Telegram receipt 仍全部為 0。"
|
||||
},
|
||||
"live_truth": {
|
||||
"runtime_loop_enabled": false,
|
||||
@@ -81,11 +81,11 @@
|
||||
{
|
||||
"level_id": "telegram_receipts",
|
||||
"display_name": "Telegram 摘要收據",
|
||||
"status": "live_pending",
|
||||
"status": "approval_required",
|
||||
"completion_percent": 0,
|
||||
"operator_meaning": "啟用後 Telegram 只推送需處置、需批准或失敗摘要,治理頁保留已排隊/已送達/已確認收據。",
|
||||
"source_of_truth": "telegram_gateway_queue + alert_operation_log",
|
||||
"next_gate": "P2-403E Telegram receipt approval package。"
|
||||
"next_gate": "P2-403E Telegram receipt approval package 已接入;實際 queue write、send、delivered、ack 與 retry 仍需 owner approval。"
|
||||
}
|
||||
],
|
||||
"agent_lanes": [
|
||||
@@ -368,9 +368,7 @@
|
||||
"rollups": {
|
||||
"proof_level_count": 7,
|
||||
"contract_ready_level_count": 5,
|
||||
"live_pending_level_ids": [
|
||||
"telegram_receipts"
|
||||
],
|
||||
"live_pending_level_ids": [],
|
||||
"signal_count": 9,
|
||||
"live_signal_count": 0,
|
||||
"operator_surface_count": 5,
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
"program_status": {
|
||||
"overall_completion_percent": 100,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-403D",
|
||||
"next_task_id": "P2-403E",
|
||||
"current_task_id": "P2-403E",
|
||||
"next_task_id": "P2-403F",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "contract_only_no_version_or_runtime_update",
|
||||
"status_note": "P2-403D 已把 learning writeback approval package 接入治理證據;live AgentSession / Redis consumer / runtime worker / learning write / Telegram receipt 目前全為 0,下一步是 P2-403E Telegram receipt approval package。"
|
||||
@@ -855,6 +855,21 @@
|
||||
"owner_agent": "Hermes + OpenClaw + Nemotron",
|
||||
"summary": "建立 learning writeback approval package;固定 KM、PlayBook trust、timeline learning 與 replay score 回寫前的 owner review、redaction、rollback 與 blocked write actions。",
|
||||
"next_gate": "P2-403E_telegram_receipt_approval_package"
|
||||
},
|
||||
{
|
||||
"task_id": "P2-403E",
|
||||
"sequence": 8,
|
||||
"display_name": "Telegram receipt approval package",
|
||||
"status": "done",
|
||||
"owner_agent": "openclaw",
|
||||
"completion_percent": 100,
|
||||
"runtime_authority": "approval_package_only_no_telegram_send",
|
||||
"blocked_runtime_actions": [
|
||||
"telegram_gateway_queue_write",
|
||||
"telegram_direct_bot_api_call",
|
||||
"telegram_delivery_receipt_write",
|
||||
"telegram_retry_worker_start"
|
||||
]
|
||||
}
|
||||
],
|
||||
"approval_boundaries": {
|
||||
@@ -875,7 +890,7 @@
|
||||
"cadence_count": 5,
|
||||
"mcp_tool_count": 8,
|
||||
"rag_memory_count": 4,
|
||||
"rollout_task_count": 11,
|
||||
"rollout_task_count": 12,
|
||||
"auto_execute_allowed_count": 0,
|
||||
"approval_required_capability_count": 23,
|
||||
"blocked_update_domain_ids": [
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"schema_version": "ai_agent_telegram_receipt_approval_package_v1",
|
||||
"generated_at": "2026-06-11T23:59:50+08:00",
|
||||
"program_status": {
|
||||
"overall_completion_percent": 80,
|
||||
"current_priority": "P2",
|
||||
"current_task_id": "P2-403E",
|
||||
"next_task_id": "P2-403F",
|
||||
"read_only_mode": true,
|
||||
"runtime_authority": "approval_package_only_no_telegram_send",
|
||||
"status_note": "P2-403E 已把 Telegram receipt、queue、delivery、ack、failure 與 retry 的批准包固定為只讀契約;尚未發送 Telegram、未寫 Gateway queue、未啟動 receipt worker。"
|
||||
},
|
||||
"source_refs": [
|
||||
"docs/evaluations/ai_agent_learning_writeback_approval_package_2026-06-11.json",
|
||||
"docs/evaluations/ai_agent_telegram_action_required_digest_policy_2026-06-11.json",
|
||||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"
|
||||
],
|
||||
"telegram_truth": {
|
||||
"telegram_send_allowed": false,
|
||||
"gateway_queue_write_allowed": false,
|
||||
"direct_bot_api_allowed": false,
|
||||
"receiver_route_change_allowed": false,
|
||||
"runtime_worker_allowed": false,
|
||||
"live_queued_receipt_count": 0,
|
||||
"live_delivered_receipt_count": 0,
|
||||
"live_acknowledged_receipt_count": 0,
|
||||
"live_failed_receipt_count": 0,
|
||||
"live_retry_count": 0,
|
||||
"truth_note": "目前只允許產生 Telegram receipt 批准包與前台只讀證據;所有 queue write、send、ack、retry 與 receiver route 變更仍為 0 / false。"
|
||||
},
|
||||
"receipt_package": {
|
||||
"required_fields": [
|
||||
"receipt_event_id",
|
||||
"incident_id",
|
||||
"source_stage",
|
||||
"channel_policy",
|
||||
"target_channel_alias",
|
||||
"message_template_id",
|
||||
"redacted_message_summary",
|
||||
"delivery_correlation_id",
|
||||
"retry_policy_ref",
|
||||
"failure_fallback_ref",
|
||||
"owner_review_required",
|
||||
"created_at"
|
||||
],
|
||||
"forbidden_fields": [
|
||||
"telegram_bot_token",
|
||||
"telegram_chat_id_raw",
|
||||
"authorization_header",
|
||||
"secret_value",
|
||||
"raw_message_payload",
|
||||
"conversation_transcript",
|
||||
"private_reasoning",
|
||||
"raw_tool_output"
|
||||
],
|
||||
"owner_review_required": true,
|
||||
"retry_policy_required": true,
|
||||
"delivery_receipt_required": true,
|
||||
"operator_meaning": "每個 Telegram receipt 候選都必須說清楚來源事件、要送到哪個 channel alias、使用哪個模板、如何關聯 delivery receipt、失敗怎麼補償;批准前不得寫 Gateway queue 或直接呼叫 Bot API。"
|
||||
},
|
||||
"receipt_gates": [
|
||||
{
|
||||
"gate_id": "gateway_queue_owner_gate",
|
||||
"display_name": "Gateway queue owner gate",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "channel policy、message template、delivery correlation id、redacted summary、owner reviewer。",
|
||||
"blocked_runtime_action": "telegram_gateway_queue_write"
|
||||
},
|
||||
{
|
||||
"gate_id": "delivery_receipt_gate",
|
||||
"display_name": "Delivery receipt gate",
|
||||
"owner_agent": "hermes",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "queued / sent / delivered / acknowledged 狀態 schema、failure fallback 與 replay ref。",
|
||||
"blocked_runtime_action": "telegram_delivery_receipt_write"
|
||||
},
|
||||
{
|
||||
"gate_id": "retry_failure_gate",
|
||||
"display_name": "Retry / failure compensation gate",
|
||||
"owner_agent": "openclaw",
|
||||
"status": "approval_required",
|
||||
"required_evidence": "retry policy、dead-letter threshold、AwoooP fallback、no-success-spam proof。",
|
||||
"blocked_runtime_action": "telegram_retry_worker_start"
|
||||
},
|
||||
{
|
||||
"gate_id": "direct_bot_api_gate",
|
||||
"display_name": "Direct Bot API ban gate",
|
||||
"owner_agent": "hermes",
|
||||
"status": "contract_ready",
|
||||
"required_evidence": "direct Bot API caller 必須維持 blocked;所有通知只能走 Gateway contract。",
|
||||
"blocked_runtime_action": "telegram_direct_bot_api_call"
|
||||
}
|
||||
],
|
||||
"receipt_lanes": [
|
||||
{
|
||||
"lane_id": "action_required_receipt",
|
||||
"display_name": "Action-required receipt",
|
||||
"target_surface": "telegram_gateway_queue",
|
||||
"status": "approval_required",
|
||||
"owner_agent": "openclaw",
|
||||
"review_owner": "sre_owner",
|
||||
"required_review": "owner 必須確認中高風險 action-required 訊息模板、去重、delivery correlation 與 fallback。"
|
||||
},
|
||||
{
|
||||
"lane_id": "approval_decision_receipt",
|
||||
"display_name": "Approval decision receipt",
|
||||
"target_surface": "awooop_operator_console",
|
||||
"status": "approval_required",
|
||||
"owner_agent": "hermes",
|
||||
"review_owner": "operator_owner",
|
||||
"required_review": "owner 必須確認批准 / 拒絕 / no-action 結果能回到 AwoooP timeline,Telegram 只保留摘要。"
|
||||
},
|
||||
{
|
||||
"lane_id": "failure_only_digest_receipt",
|
||||
"display_name": "Failure-only digest receipt",
|
||||
"target_surface": "telegram_failure_digest",
|
||||
"status": "blocked_by_runtime_gate",
|
||||
"owner_agent": "openclaw",
|
||||
"review_owner": "sre_owner",
|
||||
"required_review": "owner 必須確認成功不洗版、失敗才通知、dead-letter 可回查、retry 不重複轟炸。"
|
||||
}
|
||||
],
|
||||
"retry_contract": {
|
||||
"retry_required": true,
|
||||
"retry_steps": [
|
||||
"每筆 receipt 必須有 delivery_correlation_id",
|
||||
"queued / delivered / acknowledged / failed 狀態必須可回查",
|
||||
"retry 必須受 dedupe key 與 dead-letter threshold 控制",
|
||||
"成功 smoke 不即時通知,避免 Telegram 洗版",
|
||||
"failure fallback 必須回寫 AwoooP timeline 的 receipt_failed 事件"
|
||||
]
|
||||
},
|
||||
"approval_boundaries": {
|
||||
"telegram_send_allowed": false,
|
||||
"gateway_queue_write_allowed": false,
|
||||
"direct_bot_api_allowed": false,
|
||||
"receiver_route_change_allowed": false,
|
||||
"runtime_worker_allowed": false,
|
||||
"secret_plaintext_allowed": false,
|
||||
"success_spam_allowed": false
|
||||
},
|
||||
"display_redaction_contract": {
|
||||
"redaction_required": true,
|
||||
"raw_payload_display_allowed": false,
|
||||
"private_reasoning_display_allowed": false,
|
||||
"secret_value_display_allowed": false,
|
||||
"allowed_frontend_content": [
|
||||
"receipt lane",
|
||||
"target surface",
|
||||
"owner review status",
|
||||
"required evidence",
|
||||
"blocked runtime action",
|
||||
"retry requirement"
|
||||
],
|
||||
"forbidden_frontend_content": [
|
||||
"Telegram token",
|
||||
"raw chat id",
|
||||
"authorization header",
|
||||
"未脫敏 message payload",
|
||||
"未核准內部細節",
|
||||
"raw tool output"
|
||||
],
|
||||
"frontend_display_policy": "治理頁只顯示 receipt lane、目標 surface、owner review、阻擋 runtime action 與 retry 要求;Telegram token、raw chat id、authorization header、未脫敏 payload、未核准內部細節與 raw tool output 不進前端。"
|
||||
},
|
||||
"rollups": {
|
||||
"receipt_gate_count": 4,
|
||||
"receipt_lane_count": 3,
|
||||
"approval_required_gate_ids": [
|
||||
"gateway_queue_owner_gate",
|
||||
"delivery_receipt_gate",
|
||||
"retry_failure_gate"
|
||||
],
|
||||
"blocked_runtime_action_count": 4,
|
||||
"required_field_count": 12,
|
||||
"forbidden_field_count": 8,
|
||||
"live_receipt_count_total": 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user