コンテンツにスキップ

モジュール II — ライブ運用とセッション

モジュール II は、エステートのライブ運用ビューである。すなわち、各エージェント セッションが今この瞬間に何をしているか、そのライブなトークン・コストの合計、導出された Claude Code 状態、そして再構成可能なタイムラインである。モジュール I(インベントリ)が 永続的なエステートを具現化するのに対し、モジュール II は同じ観測ストリーム上で、セッション ごとのライブ運用オーバーレイを保持し、そのストリームが誠実に運ぶものだけを表示する。

モジュール II はバス駆動の Core レイヤーモジュールであり、インベントリの兄弟である。 各セッションの外部参照をキーとするライブレコードを、協調的な観測ストリームから構築して 維持する。ポーリングは決して行わず、捏造も決して行わない。セッションごとに以下を追跡する。

  • 現在のアクション(最後に使用されたツール)と、それが触れたリソース/モード。
  • ライブなトークンとコストの合計。コストサンプルから読み取られる(正規の コスト台帳と FinOps はモジュール XI であり、ここではない。これはライブな数値のみ)。
  • 導出された Claude Code 状態(cc_state)。
  • 観測された各イベントが取り込み順に追加されるタイムライン

本モジュールはテナントスコープのエンティティを 2 つ登録する。sessions.live は セッションごとのライブレコードを保持する。すなわち、現在のアクション/リソース/モード、 モデル参照、ライブな入力/出力トークン、ライブコスト、イベント数とツールコール数、そして 初回/最終イベントのタイムスタンプである。sessions.timeline はイベントごとに 1 つの リプレイ可能な行を保持し、取り込み順に並べられる。保存されたライフサイクル列は存在しない。 協調的なストリームは end-or-fail シグナルを運ばないため、唯一の誠実な生存性シグナルは 導出された cc_state である。

cc_state はイベントの新しさから読み取り時に導出される(active / idle / ended)。 そして、コネクターがその検出結果を上げたときに silent-evasion(沈黙による回避)状態に 切り替わる(モジュール自身が書き込むことは決してない)。読み取りはモジュールルート (ライブ一覧、単一セッション、セッションごとのタイムライン)とライブ SSE ストリームの下で 提供される。すべての読み取りはセッション読み取りパーミッションを必要とし、 ストリームを開くことは自動監査される。SSE チャネルは厳密にテナント分離されており (クライアントは認可されたテナントのスナップショットのみを受信する)、ベストエフォートである (遅いクライアントは中間フレームをドロップして次のフレームを取得する。取り込みが ブロックされることは決してない)。

何を消費するか(そして何を導出するか)

Section titled “何を消費するか(そして何を導出するか)”

モジュール II は、インベントリと同じ minimal-data の観測ストリーム (edge.observedcost.sampledfinding.reported)を消費する。 起点がセッションであるエッジのみがライブ運用を生む。セッションに紐づくコストサンプルは ライブなトークン/コストの数値に加算される(ここで CostRecord が書き込まれることはない)。 セッションを subject とする検出結果は注釈付けされ、anti-evasion(回避対策)検出結果は evasion 状態をマークする。2 つのフィールドが同じシグナルからライブに導出される。 agent_ref はセッションに帰属するエージェントから、summary はコンテキスト圧縮 (フォレンジック)検出結果(そのタイトルはコントラクトにより summary-safe である)から 導出される。LLM が捏造したサマリーでは決してない。