ymatrix1/vantage の最新コミット fb924a6 は PR #81 をマージし、タイトルが付かない AI セッションの名前と最初の要求をトランスクリプトのより深い場所から探し、同じタイトルとして読まれないようにした。リポジトリの説明によると、これは Claude Code・Codex・git・PR の記録から、AI 支援作業項目を 'Asked' から 'Verified' まで根拠を中心に追跡するローカルファースト(local-first)の可視化ツールである。コミットは 2026-10-15 に入り、同じ日に設計判断ドキュメントへ追加された D195 にそのルールがそのまま記載されている。変更は 9 ファイルで 327 行の追加と 12 行の削除である。原文は https://github.com/ymatrix1/vantage/commit/fb924a698ecf73d9e9933b2cb14eab9972a81c0b にある。
問題は、名前がファイル内にありながら読み取られなかった位置にあったことだ。D195 の記録では、作者の実際のストアにおいて 502 件中 16 件が、タイトルがないため 'repo · Oct 15' のようにすべて同じに見えていたと記されている。そのうち 6 件のセッションを個別に見ると、トランスクリプトには `custom-title` の行が 12〜183 行あったが、カーソルは名前が書き込まれる前にすでにその位置を通り過ぎており、最初のユーザー入力は 256 KB の初回確認範囲より内側の 0.6〜3.9 MB の位置にあった。6 件のうち 3 件は履歴をコピーして共有しているフォークだったため、代替タイトルまで同じになった。
解決方法は 3 つのステップである。セッションファイルを初めて見たとき、先頭 1 MB と末尾 2 MB を一度走査してセッション名を探し、256 KB の初回確認で入力された要求がなければ、最大 6 MB まで一度だけより深く読む。タイトルが空の 2 項目が同じになる場合は、後ろに ' · edited <最後に編集したファイル>' を付け、それでも重複する場合は ' · #<ID の先頭 4 文字>' を付け、どの 2 行も同じように読まれないようにした。注入されたテキストしかないセッションは隠さず、折りたたまれた 'Conversations without code' グループにそのまま残す。実装は `titles.ts`、`ingest.ts`、`stages.ts` に入り、`packages/daemon/test/session-names.test.ts` に合成テストが追加された。名前と要求のスキャンを一度に走らせると 9 秒かかるため、1 パスあたりの深い読み込みを 60 回に制限した。これは通常時の 1 秒基準で 11 パスにわたり 1〜2 秒しか加算されない。プロジェクト記録によると、ストア複製物での実測では 16 件中、代替タイトルとして残った行は 0 件だった。
ただし、この判断のステータスはまだ proposed であり、コミットが触れていない問題も残っている。既存の挙動であるが、デーモンが単一スレッドであるため、約 500 件のトランスクリプトを一度に処理するバックフィルが 41〜51 秒続くと、それより先に起動した HTTP サーバーはその間応答できない。これを扱う別項目(bean、優先度 low)は、ファイル間で譲り合いバックフィル中にも約 200 ms 以内に応答できるかを検証する作業として残っており、フォークのタイトルを親のタイトルから引き継ぐことも範囲外と明記された。つまり、タイトルの重複問題は実際のストア複製物では解決したが、大規模バックフィル中の応答遅延はまだ未解決の状態である。