feat(notifications): expose canonical Telegram routing
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 1s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
# Telegram 監控告警路由總帳
|
||||
|
||||
> 狀態:`source_policy_ready_runtime_not_applied`
|
||||
> 真相邊界:本表把「已證明現況」、「建議目的地」、「目前阻擋」、「source risk」與「receipt 強度」分開。建議不等於 live route;alias 不是 numeric chat ID;本變更沒有送 Telegram、讀 token/chat ID、改 runtime route 或部署。
|
||||
> Source snapshot 狀態:`source_policy_ready_runtime_not_applied`(保留 2026-07-14 產生當下的歷史邊界,不回寫成 runtime 綠燈)
|
||||
> Runtime projection 狀態:`runtime_policy_enforced_product_delivery_receipts_partial`(由 production gateway 相同 fail-closed resolver 即時計算;4 條 allow、16 條 block)
|
||||
> 真相邊界:本表把「已證明現況」、「建議目的地」、「目前阻擋」、「source risk」與「receipt 強度」分開。建議不等於 delivery receipt;alias 不是 numeric chat ID;readback 不送 Telegram、不讀 token/chat ID、不改 runtime route。是否已部署仍以 exact-SHA CD、deploy marker 與 production API/UI readback 為準。
|
||||
|
||||
## 判讀規則
|
||||
|
||||
@@ -44,7 +45,7 @@
|
||||
- Alertmanager 產品規則現在帶 `awoooi_product_id`、`awoooi_signal_family`、`awoooi_route_severity`;gateway 以這組明確 context 覆蓋 legacy `TYPE-3`,所以 blocked product 不會再落到 shared SRE。
|
||||
- SignOz public receiver 尚無 source authentication,因此即使 payload 自稱 canonical labels 也固定 no-egress;Sentry(signature verified)與 HMAC generic webhook 缺完整 namespaced context 時一律 `UNKNOWN / blocked_no_egress`。Alertmanager 另要求 direct peer 與完整 forwarded chain 都是 private IP,不再信任單一可偽造的 forwarded value。
|
||||
- `docker-compose`、production ConfigMap、docker-health scripts 與 7 個 Gitea workflows 的 11 個 raw destination defaults 已移除;runtime 只可由既有 secret/env alias 注入,缺值即 fail closed。白名單也不再內嵌 numeric default。
|
||||
- 本次只改 source policy,沒有讀 token、呼叫 Bot API、改 Telegram 群組、送測試訊息或偽造 delivery receipt。
|
||||
- Runtime readback 只透過與 gateway pre-send gate 相同的 resolver 投影 symbolic policy;不讀 token、呼叫 Bot API、改 Telegram 群組、送測試訊息或偽造 delivery receipt。
|
||||
|
||||
## 11 產品路由清冊
|
||||
|
||||
@@ -89,6 +90,8 @@
|
||||
- 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`
|
||||
- API readback:`GET /api/v1/agents/telegram-canonical-routing-runtime-readback`
|
||||
- UI cockpit:`/{locale}/notifications`
|
||||
- Tests:`apps/api/tests/test_telegram_canonical_routing_registry.py`、`apps/api/tests/test_telegram_canonical_routing_readback_api.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 已更動。
|
||||
Source snapshot 的 `runtime_not_applied` 是歷史產生狀態;API 會另以目前 resolver 重算 runtime enforcement,兩者不得互相覆寫。任何 route change 仍需同一 run 留下 source diff、check-mode、bounded apply、durable delivery receipt、post-verifier、rollback/no-write terminal 與 learning/writeback;API/UI 綠燈本身不代表所有產品 delivery 已閉環。
|
||||
|
||||
Reference in New Issue
Block a user