feat(telegram): enforce canonical product routing
This commit is contained in:
60
docs/security/TELEGRAM-CANONICAL-ROUTING-INVENTORY.md
Normal file
60
docs/security/TELEGRAM-CANONICAL-ROUTING-INVENTORY.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Telegram 監控告警路由總帳
|
||||
|
||||
> 狀態:`source_policy_ready_runtime_not_applied`
|
||||
> 真相邊界:本表把「已證明現況」、「建議目的地」、「目前阻擋」、「source risk」與「receipt 強度」分開。建議不等於 live route;alias 不是 numeric chat ID;本變更沒有送 Telegram、讀 token/chat ID、改 runtime route 或部署。
|
||||
|
||||
## 判讀規則
|
||||
|
||||
- `visible label` 只描述使用者畫面中的名稱;`proven runtime alias` 必須另有 source/runtime receipt,兩者不得互相替代。
|
||||
- `proven route` 只描述目前可由 source 或 durable receipt 證明的行為,不把畫面名稱或建議當成 live delivery。
|
||||
- `recommended route` 是 canonical 產品責任分流;若 bot alias、chat alias 或 durable receipt 未證明,egress 仍是 `blocked`。
|
||||
- `receipt strength`:`strong` 代表 durable DB receipt;`weak` 代表 console/source 行為;`none` 代表沒有可驗證的 delivery receipt。
|
||||
- 未知 product/signal/severity/destination 一律 no-egress;不再沿用 ADR-093 的 unknown-to-shared-group fallback。
|
||||
- `AwoooI SRE 戰情室` 只收 shared infrastructure、security、DR 與 P0/P1 incident lifecycle。raw P2/P3、marketing、成功 heartbeat、未驗證 recommendation 和 bot 對話均不得進入。
|
||||
|
||||
## 11 產品路由清冊
|
||||
|
||||
| 產品 | 目前 proven route | 建議 canonical route | blocked unknown / egress status | source risk | receipt strength |
|
||||
|---|---|---|---|---|---|
|
||||
| `2026fifa` | source-only monitoring surface;沒有 runtime Telegram binding | 建立專屬 product alias 後,只送 data freshness、recommendation build、public API failure | `blocked`:chat/bot alias 與 durable receipt 均未證明 | generic env 可能誤入其他產品 lane | `none` |
|
||||
| `agent-bounty-protocol` | `VibeAIAgent` bot-to-group route 已證明,涵蓋 A2A/traffic/treasury/onboarding;durable receipt 仍缺 | `vibe_ai_agent_control_plane`,先收斂到 gateway 與 durable receipt 再開 egress | `blocked`:route 存在但 console/source log 不能代替 durable delivery receipt | 訊息標題仍可能把 Agent Bounty 與 standalone VibeWork 混為同一產品 | `weak`:console/source only |
|
||||
| `awooogo` | 沒有 runtime Telegram binding,egress disabled | 維持 disabled;未來啟用需先建立獨立 product alias/receipt | `disabled` | 不得用 shared SRE 當缺設定 fallback | `none` |
|
||||
| `awoooi` | `AwoooI SRE 戰情室` 與 TsenYang monitoring-owner receipt 已證明;`小O_小龍蝦`/`叫小賀` 是 visible label/source-config candidate,不當成 runtime alias proof | TsenYang bot 才能送 canonical shared infra/security/DR/P0-P1 lifecycle;OpenClaw/NemoTron 只可在原訊息 interaction context 下回覆 | shared allowlist `allowed`;raw P2/P3、business/FinOps、marketing `blocked` | 若未驗 sender bot ownership,AI bot 會繞過 canonical alert owner | `strong`(僅 shared monitoring owner) |
|
||||
| `bitan-pharmacy` | source-only product/container signals;沒有 canonical runtime Telegram binding | 建立 Bitan-owned alias 後才允許 product health/failure | `blocked`:目的地、bot alias、receipt backend 未證明 | cross-product container signal 容易被誤當 AWOOOI shared infra | `none` |
|
||||
| `clawbot-openclaw` | 目前使用 `tsenyangbot` private lane,形成跨產品 bot ownership drift | 建立 ClawBot-owned bot/chat binding;interactive reply 與 monitoring 分離 | `blocked`:現有 private route 不具 ClawBot canonical ownership | 共用 AWOOOI bot 會造成 polling ownership、回覆與告警歸戶混亂 | `none` |
|
||||
| `momo-pro` | MOMO bot live;configured chat readback 回 `400 chat_not_found` | 修復 MOMO-owned destination 後,才承接 crawler/freshness、scheduler/sales pipeline | `blocked`:runtime destination unreachable,且無 durable receipt | `WOOO` 只是 private bot lane/inferred,不是已證明 MOMO product group | `none` |
|
||||
| `stockplatform-v2` | 與 TSENYANG Website 共用 `wooowooowooobot` private lane | 建立 StockPlatform-owned destination,只送 market data freshness、pipeline/API failure | `blocked`:跨產品 shared-private ownership drift,無 durable receipt | 同一 private bot lane 無法清楚歸戶、抑噪與回寫 | `none` |
|
||||
| `tsenyang-website` | 與 StockPlatform 共用 `wooowooowooobot` private lane | 建立 TSENYANG Website-owned destination;operator interaction 不承接 bulk raw alert | `blocked`:跨產品 shared-private ownership drift,無 durable receipt | site 與 market-data 告警混流,owner/verifier 不可辨 | `none` |
|
||||
| `vibework` | standalone product 沒有 runtime Telegram binding;`VibeAIAgent` 屬 Agent Bounty | 保持 `not_implemented`;若實作需獨立 product_id、alias 與 receipt | `not_implemented` | 名稱相似會造成錯誤歸戶與重複告警 | `none` |
|
||||
| `vtuber` | 沒有 runtime Telegram binding,egress disabled | 維持 disabled;未來啟用須先建立 VTuber-owned alias | `disabled` | shared monitor 辨識到 signal 不等於產品已有 sender | `none` |
|
||||
|
||||
## 群組與 BOT 的責任邊界
|
||||
|
||||
| visible label | proven runtime alias | canonical candidate | 可以承接 | 不可以承接 |
|
||||
|---|---|---|---|---|
|
||||
| AwoooI SRE 戰情室 | `awoooi_sre_war_room` | TsenYang monitoring owner | shared infra/security/DR、P0/P1 lifecycle | raw P2/P3、business/FinOps、marketing、成功 heartbeat、各產品 bulk warning |
|
||||
| 小O_小龍蝦 | `none`(visible label only) | `openclaw_bot` source-config candidate | 只在原 inbound message/thread context 下做診斷回覆 | canonical production alert ownership、root alert fanout |
|
||||
| 叫小賀 | `none`(source-config only) | `nemotron_bot` candidate | 只在原 inbound message/thread context 下做 challenger/shadow reply | canonical production alert ownership |
|
||||
| TsenYang private | `none`(visible label only) | `wooowooowooobot_private` candidate | 無;僅保留 ownership drift evidence | 在 ownership reconciliation 前不得視為任何產品 canonical route |
|
||||
| tsenyangbot private | `none`(source-config only) | `tsenyangbot_private` candidate | 無;目前 ClawBot traffic 只作 drift evidence | 跨產品 monitoring ownership |
|
||||
| WOOO | `none`(visible label only) | `wooo_private_bot_lane` candidate | 尚未證明任何 product-group ownership | 不得當作 MOMO 或 eWoooc canonical product group |
|
||||
| VibeAIAgent | `none`(source-config only) | `vibe_ai_agent_control_plane` candidate | Agent Bounty A2A/traffic/treasury/onboarding(補 durable receipt 後) | standalone VibeWork 或其他產品告警 |
|
||||
| MOMO configured chat | `none`(configured unreachable) | `momo_configured_chat_unresolved` candidate | 無;目前 `chat_not_found` | 在 runtime readback、receipt 與 verifier 通過前不得送 |
|
||||
|
||||
## Source risk 與落地缺口
|
||||
|
||||
1. ADR-093 的 unknown/default-to-group 與全產品治理 v2 衝突;legacy `resolve_chat_ids` 現在必須先通過 canonical registry。unknown、`TYPE-1` info/success 與 `TYPE-6B` business 全部回空 route,不再進 shared SRE。
|
||||
2. Agent Bounty 的 bot-to-`VibeAIAgent` route 已證明,但 direct Bot API 與 console log 仍不是 durable receipt;因此 route 存在、egress 仍 blocked 兩件事必須同時呈現。
|
||||
3. MOMO bot live 不等於 destination healthy;目前 `chat_not_found` 是明確 blocked runtime truth。`WOOO` 也只能標為 private/inferred lane,不能升格成 product group。
|
||||
4. StockPlatform/TSENYANG Website 共用 private bot,ClawBot 又使用 AWOOOI-owned bot,都是 ownership drift;需各自 owner、gateway、receipt、verifier 後才能開 route。
|
||||
5. Bitan、2026FIFA 是 source-only;AwoooGo、VibeWork、VTuber 是 disabled/not-implemented/no binding。它們不得因缺專屬群而 fallback 到 shared SRE。
|
||||
6. Gateway 現在會在 provider call 前驗 product/signal/severity、destination alias 與 sender bot alias;非監控的 inbound command/callback/thread reply 使用獨立 interaction classifier,不與監控 allowlist 混用。
|
||||
|
||||
## Machine-readable truth
|
||||
|
||||
- Registry:`docs/security/telegram-canonical-routing-registry.snapshot.json`
|
||||
- Schema:`docs/schemas/telegram_canonical_routing_registry_v1.schema.json`
|
||||
- Resolver:`apps/api/src/services/notification_matrix.py`
|
||||
- Tests:`apps/api/tests/test_telegram_canonical_routing_registry.py`
|
||||
|
||||
Production apply 前仍需同一 route change run 留下 source diff、check-mode、bounded apply、durable delivery receipt、post-verifier、rollback/no-write terminal 與 learning/writeback;本 source-only 交付不代表 runtime route 已更動。
|
||||
522
docs/security/telegram-canonical-routing-registry.snapshot.json
Normal file
522
docs/security/telegram-canonical-routing-registry.snapshot.json
Normal file
@@ -0,0 +1,522 @@
|
||||
{
|
||||
"schema_version": "telegram_canonical_routing_registry_v1",
|
||||
"generated_at": "2026-07-14T15:50:04+08:00",
|
||||
"status": "source_policy_ready_runtime_not_applied",
|
||||
"mode": "source_only_no_secret_no_telegram_send_no_route_change",
|
||||
"supersedes": {
|
||||
"policy_ref": "docs/adr/ADR-093-telegram-group-migration.md",
|
||||
"superseded_behavior": "unknown_or_cross_product_alert_defaults_to_shared_sre_group",
|
||||
"superseded_by": "global_product_governance_v2",
|
||||
"owner": "sre_shared_runtime",
|
||||
"expiry": "2026-07-14T14:35:26+08:00",
|
||||
"replacement": "this canonical registry and notification_matrix fail-closed resolver",
|
||||
"verifier": "apps/api/tests/test_telegram_canonical_routing_registry.py"
|
||||
},
|
||||
"policy": {
|
||||
"default_decision": "block",
|
||||
"unknown_product_decision": "block",
|
||||
"unknown_signal_family_decision": "block",
|
||||
"unknown_severity_decision": "block",
|
||||
"unknown_destination_decision": "block",
|
||||
"legacy_runtime_resolver": "resolve_chat_ids_must_pass_canonical_registry",
|
||||
"legacy_shared_sre_allowed_types": [
|
||||
"TYPE-2",
|
||||
"TYPE-3",
|
||||
"TYPE-4",
|
||||
"TYPE-4D",
|
||||
"TYPE-5S",
|
||||
"TYPE-7E",
|
||||
"TYPE-8M"
|
||||
],
|
||||
"legacy_shared_sre_blocked_types": ["TYPE-1", "TYPE-6B", "UNKNOWN"],
|
||||
"raw_chat_id_allowed": false,
|
||||
"shared_sre_rule": "Only shared infrastructure, security incident, disaster recovery, and P0/P1 incident lifecycle signals may use the AwoooI SRE war room alias.",
|
||||
"shared_sre_forbidden": [
|
||||
"raw product P2/P3 monitoring",
|
||||
"marketing",
|
||||
"success heartbeat",
|
||||
"unverified recommendation",
|
||||
"bot conversation"
|
||||
]
|
||||
},
|
||||
"destination_roles": [
|
||||
{
|
||||
"visible_label": "AwoooI SRE 戰情室",
|
||||
"proven_runtime_alias": "awoooi_sre_war_room",
|
||||
"runtime_alias_evidence": "proven_runtime_receipt",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"bot_owner": "sre_shared_runtime",
|
||||
"monitoring_owner": true,
|
||||
"role": "shared infrastructure, security, DR, and P0/P1 incident lifecycle",
|
||||
"monitoring_egress_policy": "allowlist_only",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "TsenYang",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "visible_label_only",
|
||||
"chat_alias": "wooowooowooobot_private",
|
||||
"bot_alias": "wooowooowooobot",
|
||||
"bot_owner": "unverified",
|
||||
"monitoring_owner": false,
|
||||
"role": "visible private label only; StockPlatform and TSENYANG Website runtime alias ownership is not proven",
|
||||
"monitoring_egress_policy": "blocked_cross_product_ownership_drift",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "小O_小龍蝦",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "visible_label_only",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"bot_alias": "openclaw_bot",
|
||||
"bot_owner": "ai_agent_runtime",
|
||||
"monitoring_owner": false,
|
||||
"role": "visible group label mapped to a source-configured OpenClaw reply candidate; runtime alias is not proven by this label",
|
||||
"monitoring_egress_policy": "interaction_reply_only_no_monitoring_ownership",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "叫小賀",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "source_config_only",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"bot_alias": "nemotron_bot",
|
||||
"bot_owner": "ai_agent_runtime",
|
||||
"monitoring_owner": false,
|
||||
"role": "source-configured NemoTron reply candidate; visible label alone is not runtime proof",
|
||||
"monitoring_egress_policy": "shadow_reply_only_no_production_alert_ownership",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "WOOO",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "visible_label_only",
|
||||
"chat_alias": "wooo_private_bot_lane",
|
||||
"bot_alias": "none",
|
||||
"bot_owner": "unverified",
|
||||
"monitoring_owner": false,
|
||||
"role": "observed private bot lane; product-group ownership is inferred and not proven",
|
||||
"monitoring_egress_policy": "blocked_not_a_proven_product_group",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "VibeAIAgent",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "source_config_only",
|
||||
"chat_alias": "vibe_ai_agent_control_plane",
|
||||
"bot_alias": "vibe_ai_agent_bot",
|
||||
"bot_owner": "agent_bounty_product_ops",
|
||||
"monitoring_owner": false,
|
||||
"role": "proven Agent Bounty bot-to-group route for A2A task, traffic, treasury, and onboarding signals",
|
||||
"monitoring_egress_policy": "blocked_until_durable_receipt_backend_is_verified",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "tsenyangbot private",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "source_config_only",
|
||||
"chat_alias": "tsenyangbot_private",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"bot_owner": "sre_shared_runtime",
|
||||
"monitoring_owner": false,
|
||||
"role": "observed ClawBot private lane using an AWOOOI-owned bot binding",
|
||||
"monitoring_egress_policy": "blocked_cross_product_bot_ownership_drift",
|
||||
"runtime_identifier_in_registry": false
|
||||
},
|
||||
{
|
||||
"visible_label": "MOMO configured chat",
|
||||
"proven_runtime_alias": "none",
|
||||
"runtime_alias_evidence": "configured_unreachable",
|
||||
"chat_alias": "momo_configured_chat_unresolved",
|
||||
"bot_alias": "momo_bot",
|
||||
"bot_owner": "momo_product_ops",
|
||||
"monitoring_owner": false,
|
||||
"role": "MOMO bot is live but the configured destination currently returns chat_not_found",
|
||||
"monitoring_egress_policy": "blocked_runtime_destination_unreachable",
|
||||
"runtime_identifier_in_registry": false
|
||||
}
|
||||
],
|
||||
"products": [
|
||||
{
|
||||
"product_id": "2026fifa",
|
||||
"display_name": "2026 FIFA World Cup",
|
||||
"owner": "2026fifa_product_ops",
|
||||
"source_audit_status": "source_only_no_runtime_telegram_binding",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "agent-bounty-protocol",
|
||||
"display_name": "Agent Bounty Protocol",
|
||||
"owner": "agent_bounty_product_ops",
|
||||
"source_audit_status": "vibe_ai_agent_bot_to_group_route_proven_durable_receipt_gap",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "awooogo",
|
||||
"display_name": "AwoooGo",
|
||||
"owner": "awooogo_product_ops",
|
||||
"source_audit_status": "no_runtime_telegram_binding_egress_disabled",
|
||||
"egress_status": "disabled"
|
||||
},
|
||||
{
|
||||
"product_id": "awoooi",
|
||||
"display_name": "AWOOOI / IWOOOS",
|
||||
"owner": "sre_shared_runtime",
|
||||
"source_audit_status": "shared_group_and_tsenyang_monitoring_owner_receipt_proven_openclaw_nemotron_labels_not_runtime_proof",
|
||||
"egress_status": "allowed"
|
||||
},
|
||||
{
|
||||
"product_id": "bitan-pharmacy",
|
||||
"display_name": "Bitan Pharmacy",
|
||||
"owner": "bitan_product_ops",
|
||||
"source_audit_status": "source_only_no_canonical_runtime_telegram_binding",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "clawbot-openclaw",
|
||||
"display_name": "Clawbot / OpenClaw",
|
||||
"owner": "ai_agent_runtime",
|
||||
"source_audit_status": "tsenyangbot_private_route_observed_cross_product_bot_ownership_drift",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "momo-pro",
|
||||
"display_name": "MOMO PRO / eWoooc",
|
||||
"owner": "momo_product_ops",
|
||||
"source_audit_status": "momo_bot_live_configured_chat_returns_chat_not_found",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "stockplatform-v2",
|
||||
"display_name": "StockPlatform v2",
|
||||
"owner": "stockplatform_product_ops",
|
||||
"source_audit_status": "wooowooowooobot_private_route_shared_with_tsenyang_site_ownership_drift",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "tsenyang-website",
|
||||
"display_name": "TSENYANG Website",
|
||||
"owner": "tsenyang_site_ops",
|
||||
"source_audit_status": "wooowooowooobot_private_route_shared_with_stockplatform_ownership_drift",
|
||||
"egress_status": "blocked"
|
||||
},
|
||||
{
|
||||
"product_id": "vibework",
|
||||
"display_name": "VibeWork",
|
||||
"owner": "vibework_product_ops",
|
||||
"source_audit_status": "no_runtime_telegram_binding_agent_bounty_is_separate_owner",
|
||||
"egress_status": "not_implemented"
|
||||
},
|
||||
{
|
||||
"product_id": "vtuber",
|
||||
"display_name": "VTuber",
|
||||
"owner": "vtuber_product_ops",
|
||||
"source_audit_status": "no_runtime_telegram_binding_egress_disabled",
|
||||
"egress_status": "disabled"
|
||||
}
|
||||
],
|
||||
"routes": [
|
||||
{
|
||||
"route_id": "2026fifa-product-monitoring",
|
||||
"product_id": "2026fifa",
|
||||
"signal_family": "data_freshness_and_recommendation",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "unassigned",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "2026fifa_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "canonical_product_destination_and_durable_receipt_backend_missing"
|
||||
},
|
||||
{
|
||||
"route_id": "agent-bounty-a2a-task-lifecycle",
|
||||
"product_id": "agent-bounty-protocol",
|
||||
"signal_family": "a2a_task_lifecycle",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "vibe_ai_agent_bot",
|
||||
"chat_alias": "vibe_ai_agent_control_plane",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "console_log_only_unverified",
|
||||
"owner": "agent_bounty_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "direct_bot_api_and_durable_delivery_receipt_gap"
|
||||
},
|
||||
{
|
||||
"route_id": "agent-bounty-traffic-security",
|
||||
"product_id": "agent-bounty-protocol",
|
||||
"signal_family": "traffic_security",
|
||||
"severity": ["P0", "P1", "P2"],
|
||||
"scope": "product",
|
||||
"bot_alias": "vibe_ai_agent_bot",
|
||||
"chat_alias": "vibe_ai_agent_control_plane",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "console_log_only_unverified",
|
||||
"owner": "agent_bounty_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "direct_bot_api_and_durable_delivery_receipt_gap"
|
||||
},
|
||||
{
|
||||
"route_id": "agent-bounty-treasury-onboarding",
|
||||
"product_id": "agent-bounty-protocol",
|
||||
"signal_family": "treasury_and_onboarding",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "vibe_ai_agent_bot",
|
||||
"chat_alias": "vibe_ai_agent_control_plane",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "console_log_only_unverified",
|
||||
"owner": "agent_bounty_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "direct_bot_api_and_durable_delivery_receipt_gap"
|
||||
},
|
||||
{
|
||||
"route_id": "awooogo-disabled",
|
||||
"product_id": "awooogo",
|
||||
"signal_family": "*",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "awooogo_product_ops",
|
||||
"egress_status": "disabled",
|
||||
"blocked_reason": "telegram_egress_disabled"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-shared-infrastructure",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "shared_infrastructure",
|
||||
"severity": ["P0", "P1"],
|
||||
"scope": "shared",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"allowed_destination": "telegram_chat_alias:awoooi_sre_war_room",
|
||||
"receipt_backend": "awoooi.alert_operation_log+telegram_outbound_receipts",
|
||||
"owner": "sre_shared_runtime",
|
||||
"egress_status": "allowed"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-security-incident",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "security_incident",
|
||||
"severity": ["P0", "P1"],
|
||||
"scope": "shared",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"allowed_destination": "telegram_chat_alias:awoooi_sre_war_room",
|
||||
"receipt_backend": "awoooi.alert_operation_log+telegram_outbound_receipts",
|
||||
"owner": "security_runtime",
|
||||
"egress_status": "allowed"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-disaster-recovery",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "disaster_recovery",
|
||||
"severity": ["P0", "P1"],
|
||||
"scope": "shared",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"allowed_destination": "telegram_chat_alias:awoooi_sre_war_room",
|
||||
"receipt_backend": "awoooi.alert_operation_log+telegram_outbound_receipts",
|
||||
"owner": "dr_runtime",
|
||||
"egress_status": "allowed"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-incident-lifecycle",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "incident_lifecycle",
|
||||
"severity": ["P0", "P1"],
|
||||
"scope": "shared",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"chat_alias": "awoooi_sre_war_room",
|
||||
"allowed_destination": "telegram_chat_alias:awoooi_sre_war_room",
|
||||
"receipt_backend": "awoooi.alert_operation_log+telegram_outbound_receipts",
|
||||
"owner": "sre_shared_runtime",
|
||||
"egress_status": "allowed"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-raw-product-monitoring",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "product_raw_monitoring",
|
||||
"severity": ["P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "awoooi.alert_operation_log",
|
||||
"owner": "product_route_registry",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "raw_p2_p3_must_not_use_shared_sre_destination"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-marketing",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "marketing",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "product_route_registry",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "marketing_must_not_use_monitoring_egress"
|
||||
},
|
||||
{
|
||||
"route_id": "awoooi-business-finops",
|
||||
"product_id": "awoooi",
|
||||
"signal_family": "business_finops",
|
||||
"severity": [
|
||||
"P0",
|
||||
"P1",
|
||||
"P2",
|
||||
"P3"
|
||||
],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "awoooi.alert_operation_log",
|
||||
"owner": "finops_runtime",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "business_and_cost_signals_require_a_separate_owned_destination"
|
||||
},
|
||||
{
|
||||
"route_id": "bitan-product-health",
|
||||
"product_id": "bitan-pharmacy",
|
||||
"signal_family": "container_and_product_health",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "unassigned",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "bitan_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "current_shared_sre_fanout_is_not_a_canonical_product_route"
|
||||
},
|
||||
{
|
||||
"route_id": "clawbot-raw-monitoring",
|
||||
"product_id": "clawbot-openclaw",
|
||||
"signal_family": "raw_monitoring_alert",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "tsenyang_bot",
|
||||
"chat_alias": "tsenyangbot_private",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "ai_agent_runtime",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "cross_product_bot_ownership_drift_requires_a_clawbot_owned_binding"
|
||||
},
|
||||
{
|
||||
"route_id": "momo-data-freshness",
|
||||
"product_id": "momo-pro",
|
||||
"signal_family": "crawler_and_data_freshness",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "momo_bot",
|
||||
"chat_alias": "momo_configured_chat_unresolved",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "momo_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "configured_destination_returns_chat_not_found_and_has_no_durable_receipt"
|
||||
},
|
||||
{
|
||||
"route_id": "momo-scheduler-sales",
|
||||
"product_id": "momo-pro",
|
||||
"signal_family": "scheduler_and_sales_pipeline",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "momo_bot",
|
||||
"chat_alias": "momo_configured_chat_unresolved",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "momo_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "configured_destination_returns_chat_not_found_and_has_no_durable_receipt"
|
||||
},
|
||||
{
|
||||
"route_id": "stockplatform-market-data",
|
||||
"product_id": "stockplatform-v2",
|
||||
"signal_family": "market_data_and_recommendation_freshness",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "wooowooowooobot",
|
||||
"chat_alias": "wooowooowooobot_private",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "stockplatform_product_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "private_route_is_shared_with_tsenyang_site_and_product_ownership_is_not_reconciled"
|
||||
},
|
||||
{
|
||||
"route_id": "tsenyang-site-health",
|
||||
"product_id": "tsenyang-website",
|
||||
"signal_family": "public_site_and_agent_action_health",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "wooowooowooobot",
|
||||
"chat_alias": "wooowooowooobot_private",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "tsenyang_site_ops",
|
||||
"egress_status": "blocked",
|
||||
"blocked_reason": "private_route_is_shared_with_stockplatform_and_product_ownership_is_not_reconciled"
|
||||
},
|
||||
{
|
||||
"route_id": "vibework-not-implemented",
|
||||
"product_id": "vibework",
|
||||
"signal_family": "*",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "vibework_product_ops",
|
||||
"egress_status": "not_implemented",
|
||||
"blocked_reason": "standalone_vibework_has_no_telegram_egress_agent_bounty_is_separate"
|
||||
},
|
||||
{
|
||||
"route_id": "vtuber-disabled",
|
||||
"product_id": "vtuber",
|
||||
"signal_family": "*",
|
||||
"severity": ["P0", "P1", "P2", "P3"],
|
||||
"scope": "product",
|
||||
"bot_alias": "none",
|
||||
"chat_alias": "none",
|
||||
"allowed_destination": "blocked",
|
||||
"receipt_backend": "none",
|
||||
"owner": "vtuber_product_ops",
|
||||
"egress_status": "disabled",
|
||||
"blocked_reason": "telegram_egress_disabled"
|
||||
}
|
||||
],
|
||||
"rollups": {
|
||||
"product_count": 11,
|
||||
"route_count": 20,
|
||||
"allowed_route_count": 4,
|
||||
"blocked_route_count": 13,
|
||||
"disabled_route_count": 2,
|
||||
"not_implemented_route_count": 1,
|
||||
"shared_sre_allowed_route_count": 4,
|
||||
"raw_numeric_destination_count": 0,
|
||||
"runtime_route_change_count": 0,
|
||||
"telegram_send_count": 0
|
||||
},
|
||||
"execution_boundaries": {
|
||||
"telegram_send_allowed": false,
|
||||
"bot_api_call_allowed": false,
|
||||
"secret_value_read_allowed": false,
|
||||
"raw_chat_id_storage_allowed": false,
|
||||
"runtime_route_change_allowed": false,
|
||||
"production_deploy_allowed": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user