← 活動記録一覧

FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録

同期対象をroot task単位で限定する

複数allowlistと親子closureを使い、対象外の会話を取り込み前に除外する

対象期間:

目的

workspace全体を同期対象にすると、公開対象外の会話やlocal運用情報までdatabaseへ送る可能性があった。

取り込み段階で明示した複数のroot taskだけを選び、その配下のsubagentを欠落や混入なく同期する境界が必要だった。

実装

環境設定templateと設定parserへ、UUIDv7のroot session IDをcomma区切りで受け取る必須allowlistを追加した。値はtrim、小文字化、sort、重複拒否を行い、root件数上限も起動前に検査する。

root task readerはactiveとarchivedの一覧を最後まで取得し、各許可sessionを一意なrootへ解決する。rootをseedに、明示parentとsubAgentActivityのthread ID関係を再帰探索し、subagent固有のsession IDを階層判定へ流用しない。

  • missing、ambiguous、non-root、parent情報の矛盾、pagination cursor反復、read/list不一致を全件拒否する。
  • rootまたはdescendant上限を超えた場合、黙って切り捨てずsnapshotを一件も同期しない。
  • closure全体を確認してから8件、以降32件のbatchへ分け、readは最大4並列にする。
  • allowlistをdurable outbox scopeへ含め、未送信batchがある状態でscope変更を拒否する。

allowlistだけを変更し、queued・blocked batchがない場合はtransaction内でthread checkpointだけを削除する。sequence、device、owner binding、agent definition hashは維持し、公開対象の選択は別layerとして残した。

一次Commitで追加された同期対象のcanonicalizationを示す。errorから実値と形式名を省いた公開説明では、空集合拒否、形式検証、重複拒否、sortの条件を保持した。

複数rootの設定を検証し、選択したsubtreeだけを同期する流れ

図を描画しています…

確認したこと

確認結果

8つのtest fileに含まれる63件のtest、typecheck、build、差分整合が通った。

複数root、独立session IDを持つdescendant、session IDがないdescendantを正しいparent関係で選択できた。

missing、ambiguous、non-root、親矛盾、ID変化、上限超過、pagination反復、未送信batch付きscope変更はfail closedになった。

root task単位の同期境界は対象へ反映され、database schemaは変更されなかった。実際の複数rootを使う継続運用はcutoff時点で未確認だった。

完了とした根拠

明示allowlistからrootとdescendant closureを完全に解決し、部分同期と旧scopeの誤送信を拒否する設定・reader・outbox境界を実装して63件のtestで確認できたことをもって完了とした。