コンテンツにスキップ

モジュール XV — 出力統合と通知

モジュール XV は control plane の通知ルーターである。いずれかのモジュールが アラートをイベントバス上の finding に変換すると、本モジュールはそれがどのテナント ルートに一致するかを判断し、秘匿化済みの通知を構築し、重複やストームを抑制したうえで、 企業がすでに運用しているチャネルへライブでディスパッチする。本モジュールは 何を/誰に/いつを決める役割を担い、配信のどのようには出力コネクターが担う — そのトランスポートを利用するのであって、決して再実装はしない。

製品内のすべてのモジュールは、アラートを最小データの finding として、名前空間付きの Kind を伴ってバス上に報告する(finding.reported)— 信頼性 (health_subject_down)、支出(finops_budget)、セキュリティ (security_guardrail)、eval リグレッション(eval_regression)、レジデンシー (compliance_residency_violation)、オーケストレーションのケイデンス、voice など。 モジュール XV は、その製品全体に共通する唯一のアラートチャネルのみを購読し、 Kind、重大度、ソースモジュール、サブジェクトでルーティングする。本モジュールは cost.samplededge.observed のような生のテレメトリを意図的に購読しない — 支出アラートは cost サンプルとしてではなく finops_budget finding として到着する。 これは製品全体の finding を実行可能な通知へと変えるシームである。

本モジュールは共有データモデルに、テナントスコープのエンティティを 2 つ宣言する。

エンティティモード保持する内容
route変更可能、監査対象ルーティングルール。イベント型、finding-kind の glob(例: health_*)、最小重大度、ソースモジュール、サブジェクト kind に対する述語 → 名前付き宛先であり、route ごとの dedup・スロットルウィンドウと優先度を伴う。宛先のクレデンシャルは保持しない — 機密でない宛先名のみを保持する。
delivery追記専用すべての配信試行の証跡台帳。route、宛先、finding kind、重大度、サブジェクト参照、短いタイトル、相関ハッシュ、結果クラス(deliveredfailedno_dispatcherunknown_destination)を記録する。

各 finding に対して本モジュールは、テナントの有効な route を優先度順に評価する。 空のままの述語次元はすべて任意を意味し、glob マッチは完全一致または prefix* 形式をサポートする。マッチングは read ビュー内で行われ、ネットワーク配信は いかなるストアトランザクションの外側で厳密に実行され、その結果が追記専用台帳に 書き込まれる。route の作成・変更・削除、およびテスト通知の送信は、実際の principal に 帰属づけられる特権かつ自己監査アクションである。route と delivery のルートは、 安定コア契約ではなく、別の beta module-route リファレンス で公開されている。それらのフィールドレベルの形状は、 製品の型付きインターフェイス内に存在する。

  • 消費: finding.reported — 製品全体に共通する唯一の アラートチャネル。本モジュールはルーターであって、プローブでもメーターでもない。 インフラをポーリングすることも、計測することも決してない。
  • 生成: 出力コネクター(Slack/Teams、PagerDuty/Opsgenie、署名付き webhook、 および CEF/LEEF/syslog/OTLP 経由で Splunk/Elastic をカバーする SIEM 宛先)に 支えられたディスパッチシームを通じた外向き通知。通知は finding のすでに安全な 表示フィールド — タイトル、kind、重大度、サブジェクト参照、相関ハッシュ — のみを 運び、ペイロード、プロンプト、シークレット、PII は決して運ばない。 最小データはワイヤーの性質であり、事後のフィルターではない。宛先シークレットは オペレーターがプロビジョニングするコネクター設定内にのみ存在し、ここでは機密でない 名前で参照される。