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の条件を保持した。
図を描画しています…
確認したこと
確認結果
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で確認できたことをもって完了とした。