← 活動記録一覧

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

Codex Thread treeのlocal同期基盤をつくる

選択したrootからThread・Turn・公開可能Messageを読み、冪等な取込と再送を実装する

対象期間:

目的

後続の管理画面や公開表示を、推測したworkspace構造ではなく、実際に同期したCodexの会話構造から組み立てる必要があった。対象は選択したroot sessionとその配下に限定し、表示可能な会話だけをlocal databaseへ欠落・重複なく保存することを目指した。

実装

database migrationへdevice、environment、receipt、Thread、Turn、Messageを追加した。api.connector_ingest_v1はdevice認証、冪等key、FIFO、payload整合性を検査し、一つのtransactionで取込を確定する。

同期serviceにread-onlyのApp Server client、Thread reader、正規化処理を置き、公開可能なuser/agent Messageだけを抽出した。送信前のpayloadはSQLite outboxへ保存し、先頭から再送するsync-root経路を実装した。

App Serverからlocal outboxとdatabase ingestへ至る同期経路

図を描画しています…

確認したこと

確認結果

Fixture、database contract、unit testでroot/child/grandchild、冪等性、順序、再送、atomic failureを確認した。

実データでは選択した2つのrootからThread 2件、Turn 10件、Message 39件を同期し、対象外sessionとdummy会話がないことを確認した。

選択したrootにはchild/grandchildが存在しなかったため、実データ上の親子relationは未確認であり、fixtureとtestでの確認に留まった。

完了とした根拠

選択rootだけをread-onlyで取得し、公開可能Messageを冪等かつ再送可能な経路でlocal databaseへ保存できたことを完了条件とした。