throughline 0.10.2 → 0.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +88 -27
- package/README.ja.md +83 -49
- package/README.md +106 -78
- package/bin/throughline.mjs +32 -13
- package/docs/00_overview.md +56 -42
- package/docs/01_l1_l2_l3_redesign.md +1 -1
- package/docs/02_clear_auto_handoff_plan.md +39 -333
- package/docs/04_public_release_plan.md +73 -190
- package/docs/05_codex_first_roadmap.md +4 -4
- package/docs/06_codex_trim_rollback_fix_plan.md +1 -1
- package/docs/08_codex_dual_support.md +1 -1
- package/docs/09_rollback_context_trim_insight.md +1 -1
- package/docs/12_desktop_clear_handoff_plan.md +6 -213
- package/docs/15_windows_ci_release_latency_plan.md +6 -87
- package/docs/16_readonly_handoff_context_plan.md +7 -38
- package/docs/adr/0005-observer-read-pagination.md +1 -1
- package/docs/adr/0014-two-phase-handoff-ghost-baton.md +1 -1
- package/docs/adr/0019-product-owned-database-migration-acceptance.md +1 -1
- package/docs/adr/0021-grok-host-capture.md +1 -1
- package/docs/adr/0022-cursor-host-capture.md +39 -0
- package/docs/archive/02_clear_auto_handoff_plan.md +350 -0
- package/docs/{03_inheritance_on_clear_only.md → archive/03_inheritance_on_clear_only.md} +22 -22
- package/docs/{07_codex_trim_implementation_plan.md → archive/07_codex_trim_implementation_plan.md} +8 -8
- package/docs/{10_transcript_injection_plan.md → archive/10_transcript_injection_plan.md} +12 -12
- package/docs/archive/12_desktop_clear_handoff_plan.md +218 -0
- package/docs/{14_observer_completed_turn_feed_plan.md → archive/14_observer_completed_turn_feed_plan.md} +7 -7
- package/docs/archive/15_windows_ci_release_latency_plan.md +89 -0
- package/docs/archive/16_readonly_handoff_context_plan.md +40 -0
- package/docs/archive/README.md +28 -15
- package/docs/archive/plan_grok-successor-launch.md +99 -0
- package/docs/archive/room-log_throughline_20260830-155052.md +285 -0
- package/docs/plan_grok-successor-launch.md +6 -97
- package/package.json +19 -11
- package/rag/INDEX.md +2 -2
- package/src/baton.mjs +11 -9
- package/src/cli/handoff-context.test.mjs +36 -0
- package/src/cli/help.test.mjs +5 -0
- package/src/cli/install.mjs +91 -0
- package/src/cli/install.test.mjs +57 -0
- package/src/cli/runtime-errors.mjs +9 -3
- package/src/cli/runtime-errors.test.mjs +13 -13
- package/src/cli/self-update.mjs +402 -0
- package/src/cli/self-update.test.mjs +525 -0
- package/src/db.mjs +1 -1
- package/src/docs-contract.test.mjs +153 -0
- package/src/hosts/claude.mjs +1 -0
- package/src/hosts/codex.mjs +1 -0
- package/src/hosts/cursor.mjs +128 -0
- package/src/hosts/cursor.test.mjs +104 -0
- package/src/hosts/grok.mjs +1 -0
- package/src/hosts/identity.mjs +19 -2
- package/src/hosts/identity.test.mjs +27 -4
- package/src/hosts/index.mjs +11 -2
- package/src/product-ci-contract.test.mjs +14 -0
- package/src/prompt-submit.mjs +8 -10
- package/src/resume-context.mjs +4 -4
- package/src/runtime-error-hook.test.mjs +4 -6
- package/src/runtime-error-store.mjs +40 -18
- package/src/runtime-error-store.test.mjs +53 -26
- package/src/session-merger.mjs +16 -7
- package/src/session-merger.test.mjs +27 -0
- package/src/session-start.mjs +24 -1
- package/src/spike-transcript-writer.mjs +1 -1
- package/src/transcript-reader-cursor.test.mjs +43 -0
- package/src/transcript-reader.mjs +14 -7
- /package/docs/{11_codex_monitor_implementation_plan.md → archive/11_codex_monitor_implementation_plan.md} +0 -0
- /package/docs/{13_native_factory_diagnostics_plan.md → archive/13_native_factory_diagnostics_plan.md} +0 -0
- /package/docs/{BUGHUB_RUNTIME_ERROR_STORE_PLAN.md → archive/BUGHUB_RUNTIME_ERROR_STORE_PLAN.md} +0 -0
|
@@ -1,197 +1,80 @@
|
|
|
1
|
-
# Throughline
|
|
1
|
+
# Throughline 公開・運用契約
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
この文書は現行release判断と製品単独運用の正本である。版ごとの実装履歴は
|
|
4
|
+
[CHANGELOG.md](../CHANGELOG.md)、完了済みの計画と受入記録は [archive/](archive/) に置く。
|
|
5
|
+
同じrelease履歴をこの文書へ複製しない。
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
## 現行状態
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
- release candidateのpackage版は `0.10.5`。tagとnpmの公開確認はpublish後に行う。
|
|
10
|
+
- Claude Code、Codex、Grok、Cursorをfirst-class hostとして扱う。
|
|
11
|
+
- 現行DB schemaはv9。schemaの正本は [src/db.mjs](../src/db.mjs) の
|
|
12
|
+
`CURRENT_VERSION`、二相handoffの判断は
|
|
13
|
+
[ADR 0014](adr/0014-two-phase-handoff-ghost-baton.md)である。
|
|
14
|
+
- repositoryの正規URLは `https://github.com/kitepon/Throughline`。
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
- `catch (err) { stderr.write(...); process.exit(0); }`(エラーを記録しつつ成功コードで終わる)
|
|
11
|
-
- 「A がダメなら B」という暗黙の切り替え(明示的な設定フラグなしでの挙動分岐)
|
|
12
|
-
- 未検証の契約に対する「とりあえず動く」実装
|
|
16
|
+
## 製品単独運用
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
- 外部入力のバリデーション失敗 → 明確な `throw new Error(...)` で拒否
|
|
16
|
-
- hook 実行での I/O エラー → stderr + 非ゼロ終了コード(Claude Code 側で可視化される)
|
|
17
|
-
- 既に値が NULL であることが設計上許容されている場合の `?.` アクセス
|
|
18
|
+
Throughline は次の入口を自分で所有し、dotagentsが無くても利用・保守できる。
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## ゴール
|
|
22
|
-
|
|
23
|
-
Throughline を GitHub + npm で公開し、世界中の Claude Code ユーザーに使ってもらう。満たすべき条件:
|
|
24
|
-
|
|
25
|
-
1. **導入が簡単** — 1〜2 コマンドで完了
|
|
26
|
-
2. **複数プロジェクトで動く** — 導入後は全プロジェクトで自動的に働く
|
|
27
|
-
3. **配布物の絶対パス依存を避ける** — npm tarball に開発環境の path を焼き込まず、install 時に必要な実行 path だけをユーザー環境で解決する
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 採用方式: npm グローバル + bin エントリ
|
|
32
|
-
|
|
33
|
-
### 導入フロー(ユーザー視点)
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npm install -g throughline # CLI を PATH に配置
|
|
37
|
-
throughline install # ~/.claude/settings.json、Codex hook、Codex skill、Grok hook を追記
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Claude hook コマンドは **`throughline <subcommand>` の PATH 解決型**。node のインストール先や OS が変わっても PATH さえ通っていれば動く。Codex Stop hook と Grok hook は host の PATH 差分を避けるため、絶対 node + installed `bin/throughline.mjs` で登録する。Grok は `~/.grok/hooks/throughline.json`。Codex 手動 UX は `~/.codex/skills/throughline` の `$throughline` skill で自然言語から呼ぶ。Grok `/tl` の後継起動は `throughline grok-continue`(macOS Terminal)。
|
|
41
|
-
|
|
42
|
-
### hook 登録後の `~/.claude/settings.json`(抜粋)
|
|
43
|
-
|
|
44
|
-
```json
|
|
45
|
-
{
|
|
46
|
-
"hooks": {
|
|
47
|
-
"SessionStart": [{ "hooks": [{ "command": "throughline session-start" }] }],
|
|
48
|
-
"Stop": [{ "hooks": [{ "command": "throughline process-turn" }] }]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
schema v4 で PostToolUse (`capture-tool`) は廃止、L2/L3 は Stop 内で一括処理。schema v6 で UserPromptSubmit (`prompt-submit`) を `/tl` バトン書き込み専用として再導入(注入は一切行わない、SessionStart 側との重複注入は発生しない)。schema v7 で `handoff_batons.memo_text` を追加(`/tl` 直後に in-flight メモを保存)。
|
|
54
|
-
|
|
55
|
-
### 却下した代替案
|
|
56
|
-
|
|
57
|
-
- **npx (`npx -y throughline <subcommand>`)**: hook 発火ごとに npx のオーバーヘッドが乗り、UX が悪化する
|
|
58
|
-
- **Claude hook を開発リポジトリの絶対パスで登録** (`node C:\Users\...\src\...`): リポジトリを移動すると壊れる。Codex Stop hook だけは App Server / VSCode host の PATH 差分を避けるため、install 時点の installed CLI script path を絶対 node で登録する
|
|
59
|
-
- **Claude Code プラグインマーケットプレース形式**: まず npm で出してから将来 ECC 等に登録する
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## 実装ステータス
|
|
64
|
-
|
|
65
|
-
### ✅ 実装済み
|
|
66
|
-
|
|
67
|
-
| 項目 | 実体 |
|
|
20
|
+
| 判断 | 正規入口 |
|
|
68
21
|
|---|---|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
| **npm 公開 (v0.3.25): Codex app-server restore smoke** | `throughline codex-restore-smoke --codex-thread-id <id>` を追加。fresh Codex app-server process を複数回起動し、`thread/read` / `thread/resume` / paginated `thread/turns/list` の turn count が rollout active turn count と一致し続けるかを read-only で確認する。`THROUGHLINE_EXPERIMENTAL_CODEX_RESTORE_SMOKE=1` 必須。proof scope は `app_server_process_restart_only` で、VS Code restart / reconnect 越しの rollback / inject durability 証明ではない |
|
|
129
|
-
| **npm 公開 (v0.3.25): Codex restore source audit** | `throughline codex-restore-source-audit --codex-thread-id <id>` を追加。Codex rollout、`session_index.jsonl`、`state_*.sqlite`、VS Code globalStorage / workspaceStorage 候補、VS Code settings / logs、installed OpenAI/Codex VS Code extension bundle を read-only で棚卸しし、thread id、retained rollback text、`thread/read` / `thread/resume` / `thread/turns/list` / reconnect `needs_resume` / persisted webview atoms / follow-up queue などの restore-path signal を確認する。proof scope は `local_restore_source_inventory_only` で、VS Code restart / reconnect 越しの rollback / inject durability 証明ではない |
|
|
130
|
-
| **npm 公開 (v0.3.25): Codex host primitive audit** | `throughline codex-host-primitive-audit` を追加。installed Codex CLI の app-server JSON schema を read-only 生成し、rollback 済み user text を同じ thread の model-visible input に復活させない deletion / isolation / projection primitive があるか機械判定する。実 `codex-cli 0.128.0-alpha.1` では `thread/rollback` / `thread/inject_items` / `thread/compact/start` / `thread/start` / `thread/fork` / `thread/resume` は存在したが、current-thread rollback non-resurrection primitive は無く、`thread/resume(history)` も unstable do-not-use かつ thread_id ignored なので採用しない。結果は diagnostic-only で、Codex trim execute / auto-refresh の blocker にはしない |
|
|
131
|
-
| **npm 公開 (v0.3.25): Codex VS Code restore smoke protocol** | `throughline codex-vscode-restore-smoke --prepare/--verify --codex-thread-id <id>` を追加。`--prepare` は hidden active-work marker memory を app-server へ注入し、VS Code reload / reconnect 後に marker を含まない prompt を送る二段階手順を出す。`--verify` は rollout を読み、prepare 後の marker-free smoke prompt、assistant の marker-only answer、user prompt への marker leak 不在を確認する。prepare は `THROUGHLINE_EXPERIMENTAL_CODEX_VSCODE_RESTORE_SMOKE=1` 必須。実 VS Code reload / reconnect marker proof は `TL_CODEX_VSCODE_RESTORE_46888202` で成功済み。ただしこれは hidden developer memory visibility 証明であり、rollback 済み user turn の非復活証明ではない |
|
|
132
|
-
| **npm 公開 (v0.3.25): Codex VS Code rollback smoke verifier** | `throughline codex-vscode-rollback-smoke --verify --codex-thread-id <id>` を追加。rollout を read-only で読み、rollback event、rollback 済み user text、rollback 後 user turn、`restoreSafety.status = ok` を必須条件にする。`--after-vscode-restart` がある場合だけ `restartSafe: true` を返す。実 incident-shaped live rollback run では `thread_rolled_back` と injected memory は記録されたが、rollback 対象 user text が `compacted.replacement_history` に残り、後続 verifier では rollback 済み user text の再出現も観測した。後続分類で app-server response 上の retained text は `aggregatedOutput` に限定され、controlled rollback model-visible smoke は再現しなかったため、これは現在は diagnostic evidence として扱う |
|
|
133
|
-
| **npm 公開 (v0.3.25): Codex primary doctor** | `throughline doctor --codex` を追加。現在 project の Codex thread env identity、rollout candidates、captured `codex:<thread_id>` DB sessions、context-refresh memory contract、new-thread handoff readiness、safe continuation status、host primitive audit status、次に使う capture / handoff / resume / audit command を表示する。doctor 自体は read-only で、Codex thread / DB / Claude settings を変更しない。`doctor --trim --host codex` も host primitive audit status を表示する |
|
|
134
|
-
| **npm 公開 (v0.3.25): Codex global Stop hook / skill install** | `throughline install` が Claude hooks / slash commands に加えて `~/.codex/hooks.json` に絶対 node + installed `bin/throughline.mjs codex-hook stop` を `async: false` で登録し、`~/.codex/config.toml` の `[features].codex_hooks = true` を有効化し、`~/.codex/skills/throughline` に `$throughline` skill を配置する。Codex App Server / VSCode host の PATH 差分で bare `throughline` が見えない可能性があるため、hook は Caveat と同じ絶対パス型に寄せる。既存 Caveat / Spotter などの Codex hooks は保持し、`throughline uninstall` は Throughline 管理の Codex hook / skill だけを削除する。既に bare command または `async: true` で登録済みの Throughline Codex Stop hook は次回 install で更新する。実環境では `codex exec --json` child thread `019dfd4f-93ff-7522-8f89-bd1e1996c8d7` が Stop hook で自然 capture され、`doctor --codex` の latest DB session が `codex:019dfd4f-93ff-7522-8f89-bd1e1996c8d7` に進むことを確認した。さらに絶対パス型へ更新後、child thread `019dfd5e-1248-7c11-8ddc-97e1b0701e10` でも latest DB session が `codex:019dfd5e-1248-7c11-8ddc-97e1b0701e10` に進むことを確認した。hook shape 変更後に新規開始した VSCode-origin thread `019dfd62-9a9d-7211-bf91-89d8e3fc908e` でも `doctor --codex` の current thread と latest DB session が一致し、自然 Stop hook capture を確認済み。hook shape 変更前から開いていた VSCode-origin parent thread は、変更後の自然 Stop smoke としては扱わない。Caveat 側にも `async: false` Stop hook が動く実測があるため、Codex 側は Caveat と同じ同期 hook 方針に寄せる。`codex-capture` / `codex-summarize` / `codex-resume --memo-stdin` は診断・明示操作 surface として維持し、model-visible smoke は明示 opt-in。2026-05-08 以降、Stop hook auto-refresh は verified usage 75% 以上で guarded rollback / inject を試行し、estimate usage では mutation しない。2026-05-09 以降は Codex native auto-compact より先に Throughline refresh を走らせつつ、70% warning よりは mutation を遅らせる |
|
|
135
|
-
| **npm 公開 (v0.3.25): Codex-first roadmap** | [05_codex_first_roadmap.md](05_codex_first_roadmap.md) を追加。次フェーズは Codex primary 実用化、Codex Rewind 互換、Claude 側 finalization の順で進める。Codex primary の L2→L1 backend は Codex CLI を本線とし、`codex-sidecar` は Claude primary からの review / risk-check / second opinion / 互換 L2→L1 経路として整理する |
|
|
136
|
-
| **npm 公開 (v0.3.25): npm docs packaging** | README から参照する `docs/` と `CHANGELOG.md` を npm `files` に追加。`docs/throughline-handoff-context.example.json` を含め、README の sidecar dry-run 例が tarball 内でも成立するようにする |
|
|
137
|
-
| **npm 公開 (v0.4.0): /clear auto-handoff + memo / save-inflight / /tl-trim retire** | 2026-05-08 Claude Code 2.1.128 で `source='clear'` が reliable になったため、`/clear` で自動引継ぎがデフォルト ON になる auto path を追加。`THROUGHLINE_DISABLE_AUTO_HANDOFF=1` で OFF にできる。`/tl` slash command は明示意思マーカーへ簡素化 (memo 4 項目入力廃止、`save-inflight` CLI 削除、`/tl-trim` slash command 廃止、`updateBatonMemo` 関数削除、`handoff_batons.memo_text` を schema v8 で drop)。注入は L1 + L2 + L3 references のみに簡素化し、memo / 中断直前 thinking セクションを削除。Codex 側 trim path は維持。詳細は [CHANGELOG.md](../CHANGELOG.md) と [02_clear_auto_handoff_plan.md](02_clear_auto_handoff_plan.md) |
|
|
138
|
-
| **npm 公開 (v0.4.1): typed `/clear` も baton を書く + 2 経路の優先順位入れ替え** | 2026-05-09 `/clear` を UserPromptSubmit hook で検出した時点で当該セッションの `session_id` を `handoff_batons` に書き込み、次 SessionStart が確定的にそのセッションを引き継ぐ。これで multi-window で「最新更新セッション ≠ /clear したセッション」になるシナリオで `findLatestClaudePredecessor` heuristic が誤った前任を選ぶ問題を解消。2 経路の優先順位を **baton path = primary、auto path = fallback** に変更 (auto path は VSCode 拡張メニュー由来など UserPromptSubmit に届かない経路のフォールバック)。`THROUGHLINE_DISABLE_AUTO_HANDOFF=1` は fallback path のみに作用するようになった (typed `/clear` / `/tl` は env と無関係に発火する)。あわせて `.vscode/tasks.json` を git 追跡から外し (gitignore)、`ensureMonitorTaskFile` が hook 発火ごとに絶対パスを書き換える挙動による別環境での dirty diff を解消。`src/prompt-submit.test.mjs` を新設し、`isClearCommand` / `isBatonCommand` 判定 14 件と subprocess+DB 実体テスト 3 件を追加。詳細は [CHANGELOG.md](../CHANGELOG.md) |
|
|
139
|
-
| **npm 公開 (v0.4.7): Codex monitor direct discovery + 80% auto-refresh** | 2026-05-09 Codex Stop hook auto-refresh の verified usage threshold を 90% から 80% に変更し、Codex native auto-compact より先に Throughline DB memory refresh を試行する。estimate usage / estimated context window では mutation しない。`throughline monitor` は `~/.throughline/state` に加えて `~/.codex/sessions/**/rollout-*.jsonl` を直接 discovery し、Throughline state が未生成の現在 Codex thread も表示する。既存 state がある場合は state の usage snapshot を保持しつつ discovered rollout path / mtime を合流する。Codex 表示 ID は `codex:01` ではなく raw thread id 先頭 8 桁 (`019e085c`) にした。Codex open turn の transient `output_tokens` は token count に overlay するが、モデル欄の `live+<tokens>` marker は表示しない |
|
|
140
|
-
| **npm 公開 (v0.6.1): Spotter auditor context projection** | `throughline auditor-context`を追加。exact session/projectと最新完了L2 pairのorigin/turn/hash freshnessを検査し、fresh時だけbounded user/assistant本文をversioned JSONで返す。DBはread-onlyで開き、作成・migration・WAL書き込みをしない。Spotter側はproject opt-inでのみ利用する。580 tests、CI 6/6、pack scan、registry global install / doctorを通過し、npm / tag / GitHub Releaseを2026-07-13に公開した |
|
|
141
|
-
| **npm 公開 (v0.6.2): factory diagnostics + local runtime error store** | `throughline factory-diagnostics --json` と `throughline runtime-errors ... --json` を追加。collection は canonical dotagents config の `collection.enabled: true` が明示された時だけ有効で既定OFF、store は network I/O を行わない。公開commit `e6ce6e3`、CI `29238704750`、npm `latest`、tag / GitHub Release、registry由来隔離installと診断snapshotを2026-07-13に確認した |
|
|
142
|
-
| **npm 公開 (v0.6.3): Codex diagnostics ready 集約 + Windows bounded observer** | 3 managed Codex hooks が canonical `ready` のとき hook summary / Codex connector を `ready` とし、未検査 Claude connector は明示 `unverified` のまま Codex-only overall から除外する。Windows runtime-error observer は、既存 state の使用前検証と新規 file の ACL 付与・read-back を維持しつつ、同一 mutation 内の重複 PowerShell ACL 検証を除いた。公開commit `fc83ddf`、CI `29284655280`(9/9 green)、npm `throughline@0.6.3`、tag / GitHub Release、npm shasum `4f3fcd2598a75f026358dae7f3eb3165242b580b` を2026-07-14に確認した |
|
|
143
|
-
| **npm 公開 (v0.8.4): Codex handoff host境界の明示化** | `$throughline` skillは現在のCodex UI surfaceからDesktop/VS Code/CLIを選び、`--open-host`を明示する。shell/永続PTYの継承環境はsurface判定に使わない。`codex-handoff-start`は互換の`openHost`を残し、requested / resolved hostをJSONとtextで報告する。古いVS Code由来PTY事故形と配布skillをfocused testで固定し、Claude-facing hook/`/tl`/baton/resume契約は変更しない。公開commit `5b840b6`、CI run `29721583754` 9/9 green、npm `latest` 0.8.4、shasum `1f2c39a22e45f3e02e8739ee5fd6ceefc6a71034`、tag / GitHub Release、registry由来global install、配置skill一致、`doctor --codex` exit 0を2026-07-20に確認した。判断証拠は [ADR 0017](adr/0017-codex-handoff-host-boundary.md) |
|
|
144
|
-
| **npm公開 (v0.8.6): 製品所有DB migration入口** | `throughline migrate --json` は既存DBだけをproduction migrationで現行schemaへ移行し、versioned bounded JSONを返す。DB不在は作らず`not_applicable`、現行は`already_current`、future schemaと失敗は非0。`factory-diagnostics`のread-only契約は維持する。0.8.5はdry-run後に別作業の未コミット文書が混入したためdeprecateし、同一runtimeをclean worktreeから0.8.6として再公開した。設計判断は [ADR 0018](adr/0018-product-owned-database-migration.md) |
|
|
145
|
-
| **公開済み (v0.8.7): Windows CI release latency** | completed-turn receiptの256件境界fixtureと実ACL検証を分離し、production mutationのPowerShellはdistinct state transitionだけに限定する。temporary ACL失敗時の旧store保持とdirectory/lock/final storeのnative ACL testを維持する。CIは9 matrixのままevent/ref単位concurrency、unit test 5分SLO/8分timeoutとする。設計判断は [ADR 0020](adr/0020-windows-ci-release-latency.md) |
|
|
146
|
-
| **npm公開 (v0.8.8): Codex hook timeout key修理** | Codex `hooks.json` の3 managed hookは秒単位の正規key `timeout`を30/30/300で書く。無視される旧`timeoutSec` entryは次回global installでcommand identityにより置換し、doctorは旧形式を要再install、factory diagnosticsはnot readyとする。Claude hooksとObserver wait deadline APIは変更しない。npm `latest` として2026-08-02T00:43Zに公開済み。tag / GitHub Releaseは未作成(要作成) |
|
|
147
|
-
| **npm公開 (v0.8.9): Codex hook診断のPATH非依存化** | 期待hook commandのnode表記は呼び出し元の`PATH`で変わるため、登録済みcommandとの文字列比較では最小PATH(launchd factory reporter等)から正規登録が「legacy command」と誤判定され、`codex_hooks`が恒常的に`not_ready`になっていた。比較を解析済みidentity(node実体realpath+CLI script realpath+event)へ変更した。別install/別event/旧PATH解決型/realpath未解決は従来どおり要再install扱い。hooks.jsonの書式とClaude-facing hookは変更しない。公開commit `5dbd3af`、CI run `30731697079` 9/9 green、npm `latest` 0.8.9、shasum `780f8e72d9bd4b0c4a331db48116a415a4bde34b`、tag / GitHub Release(v0.8.8分も遡って作成)、registry由来global installを2026-08-02に確認した |
|
|
148
|
-
| **未リリース: Codex current-session 75% trigger** | Codex 自動発火を token-monitor に依存させず、global install が Codex `UserPromptSubmit` / `PostToolUse` hooks も登録する。hook は当該 Codex session の rollout `token_count` を直接読み、verified 75% 以上なら同じ user turn または tool loop 継続前に `$throughline` workflow 実行指示を `additionalContext` で注入する。Stop hook の guarded auto-refresh は残す。`~/.codex/config.toml` は旧 `codex_hooks = true` に加えて現行 `hooks = true` も有効化する |
|
|
149
|
-
| **グローバル E2E 検証** | 2026-04-17 別ディレクトリから `throughline doctor` 全緑を確認 |
|
|
150
|
-
|
|
151
|
-
### ❌ 未完タスク
|
|
152
|
-
|
|
153
|
-
| 項目 | 備考 |
|
|
154
|
-
|---|---|
|
|
155
|
-
| **awesome-claude-code 登録申請** | 初回 public commit から 1 週間経過(2026-04-21 以降)に Web UI 経由で提出 |
|
|
156
|
-
| **外部環境での実運用検証** | 別 PC / OS での install、並行 `/clear` 時の merge chain 挙動、1M context 検出のロバストさ、VSCode 系以外のエディタでの token-monitor 挙動、macOS / Linux で OSC 18t がフォールバック経路と実幅取得の両方で正しく動くかの確認 |
|
|
157
|
-
| **GitHub Actions 自動 publish** | `release` タグ push をトリガー(Phase 3+、Trusted Publishing 使用) |
|
|
158
|
-
| **Claude Code プラグインマーケットプレース登録** | npm 公開の後継ステップ(Phase 3+) |
|
|
159
|
-
| **turn-processor.test.mjs の 10 秒タイムアウト解消** | `main()` が stdin を待ち続けるためテストファイルがハングする既存の問題。実装動作は無影響、テスト個別 9/9 は pass |
|
|
160
|
-
| **automatic context rollback / inject** | Codex Stop hook auto-refresh は verified usage 75% 以上で guarded rollback + Throughline DB memory inject を試行する。controlled rollback model-visible smoke で復活が未再現となったため、2026-05-06 incident 後の overbroad blocker は解除済み。estimate usage では実行しない |
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 検証方法(End-to-End)
|
|
165
|
-
|
|
166
|
-
初回 publish(v0.1.0 / 2026-04-17)は以下の実行で確認済み:
|
|
167
|
-
|
|
168
|
-
1. `npm pack --dry-run` で tarball 内容を確認(23 ファイル、秘密情報なし)
|
|
169
|
-
2. `npm publish` 実行 → `+ throughline@0.1.0`
|
|
170
|
-
3. `npm view throughline` でレジストリに反映されていることを確認
|
|
171
|
-
4. 別ディレクトリで `npm install -g throughline` → `throughline install` → `throughline doctor` 全緑
|
|
172
|
-
5. `~/.claude/settings.json` の hook が global スコープに登録されていることを確認
|
|
173
|
-
|
|
174
|
-
次バージョン以降は次の手順で:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
# 版上げ(例: patch)
|
|
178
|
-
npm version patch
|
|
179
|
-
|
|
180
|
-
# publish(granular access token with bypass 2FA を使う場合は OTP 不要)
|
|
181
|
-
npm publish
|
|
182
|
-
|
|
183
|
-
# 反映確認
|
|
184
|
-
npm view throughline
|
|
185
|
-
npm install -g throughline
|
|
186
|
-
throughline doctor
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
さらに別環境(macOS / Linux / 別 PC)での claude 起動・並行 `/clear` 挙動・1M context 検出のロバストさは未検証。
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## スコープ外(別 Phase)
|
|
194
|
-
|
|
195
|
-
- GitHub Actions による自動リリース(Trusted Publishing 推奨)
|
|
196
|
-
- `injection_log` 効果測定
|
|
197
|
-
- Claude Code プラグインマーケットプレース登録(Phase 3+)
|
|
22
|
+
| 導入・host配線 | `npm install -g throughline` → `throughline install` |
|
|
23
|
+
| project限定導入 | `throughline install --project` |
|
|
24
|
+
| 設定 | READMEの環境変数・host契約と、`throughline install` が管理する設定 |
|
|
25
|
+
| 状態 | `~/.throughline/`、`throughline status` |
|
|
26
|
+
| schema更新 | `throughline migrate --json`。既存DBだけを製品所有migrationで更新する |
|
|
27
|
+
| 診断 | `throughline doctor`、host別doctor、`factory-diagnostics --json` |
|
|
28
|
+
| runtime error収集 | `throughline runtime-errors enable\|disable --json`。製品所有configへ保存する |
|
|
29
|
+
| 復旧 | READMEのTroubleshootingと、診断が返す明示的な修復手順 |
|
|
30
|
+
| 更新 | `throughline self-update`。公式package更新、更新先global rootと公開PATHが同じ新CLI・versionを指すことの確認、host配線の再適用、既存DB migration、公開diagnosticsの`ready`確認までを一回で行う |
|
|
31
|
+
| 削除 | `throughline uninstall`。Throughline管理面だけを除去する |
|
|
32
|
+
| release判断 | この文書のrelease gateと `scripts/verify-release-commit.mjs` |
|
|
33
|
+
|
|
34
|
+
dotagentsは工場への配線と統合結果を所有するが、ThroughlineのDB、schema、migration、
|
|
35
|
+
設定、診断、復旧、releaseを代行・制御しない。runtime error collectionはThroughline所有configで
|
|
36
|
+
既定OFFとし、工場側は公開`runtime-errors ... --json`契約だけを利用する。
|
|
37
|
+
|
|
38
|
+
Windows nativeの更新はPowerShell 7から公式`npm.cmd`を呼び、`npm.ps1`や
|
|
39
|
+
Windows PowerShell 5.1へ切り替えない。更新前CLIを再利用せず、更新先global rootから解決した
|
|
40
|
+
新CLI、公開PATHから起動したCLI、そのversion、`throughline.self_update.v1`成功結果がすべて
|
|
41
|
+
一致した場合だけ完了とする。複数npm prefixが混在して公開PATHが旧実体を指す場合は失敗する。
|
|
42
|
+
|
|
43
|
+
## 明示的失敗の契約
|
|
44
|
+
|
|
45
|
+
想定外の状態、外部入力違反、I/O失敗、依存不足を成功扱いにしない。
|
|
46
|
+
|
|
47
|
+
- `try { ... } catch { /* ignore */ }` で例外を消さない。
|
|
48
|
+
- failureを記録しながらexit 0へ落とさない。
|
|
49
|
+
- 暗黙に別backend・別session・別pathへ切り替えない。
|
|
50
|
+
- DB不在を診断・migrationの副作用で新規作成しない。
|
|
51
|
+
- 外部連携は公開CLI・versioned JSONを使い、SQLiteやWALを直接操作しない。
|
|
52
|
+
|
|
53
|
+
## release gate
|
|
54
|
+
|
|
55
|
+
release候補は次の全条件を満たしたときだけ公開する。
|
|
56
|
+
|
|
57
|
+
1. `package.json`、`CHANGELOG.md`、README、CLAUDE.mdの現行版・schema・host契約が一致する。
|
|
58
|
+
2. 変更に直結するfocused testがgreenで、その後に `npm test` を最終確認として1回通す。
|
|
59
|
+
3. `npm run verify:release-commit` が、clean working treeかつHEADが`origin`既定ブランチの
|
|
60
|
+
祖先であることを確認する。既定ブランチへ着地していないcommitからpublishしない。
|
|
61
|
+
4. `npm pack --dry-run`でtarball内容、秘密混入、必要なREADME/docsの収録を確認する。
|
|
62
|
+
5. npm publish後にregistryのversionとshasum、tag、GitHub Releaseを確認する。
|
|
63
|
+
6. registry由来の隔離installで `throughline --version`、`throughline install`、
|
|
64
|
+
`throughline migrate --json`、`throughline doctor`を確認する。
|
|
65
|
+
7. 変更したhost面で実captureまたはfocused install/diagnostics smokeを行う。
|
|
66
|
+
|
|
67
|
+
publish済みでも、上の確認が終わるまではrelease完了としない。失敗時は同じ版を上書きせず、
|
|
68
|
+
原因を直して新しいversionとして公開する。
|
|
69
|
+
|
|
70
|
+
## host配線の現行契約
|
|
71
|
+
|
|
72
|
+
- Claude Code: user/project hooksとslash command。PATH解決型CLIを使う。
|
|
73
|
+
- Codex: UserPromptSubmit / PostToolUse / Stop hook、feature flags、`$throughline` skill。
|
|
74
|
+
絶対Node + installed CLI pathを使う。
|
|
75
|
+
- Grok: `~/.grok/hooks/throughline.json`と`grok-continue`。絶対pathを使う。
|
|
76
|
+
- Cursor: `~/.cursor/hooks.json`へsessionStart / beforeSubmitPrompt / stopをupsertし、
|
|
77
|
+
既存hookを保持する。注入は`additional_context`を使う。
|
|
78
|
+
|
|
79
|
+
詳細な挙動は [README.md](../README.md)、host不変判断は [ADR 0021](adr/0021-grok-host-capture.md) と
|
|
80
|
+
[ADR 0022](adr/0022-cursor-host-capture.md)を正とする。
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
| 文書 | 扱い |
|
|
12
12
|
|---|---|
|
|
13
|
-
| [07_codex_trim_implementation_plan.md](07_codex_trim_implementation_plan.md) | これまでの統合計画と実装履歴。完了済み成果と根拠は維持するが、今後の実装順はこの文書を優先する |
|
|
13
|
+
| [archive/07_codex_trim_implementation_plan.md](archive/07_codex_trim_implementation_plan.md) | これまでの統合計画と実装履歴。完了済み成果と根拠は維持するが、今後の実装順はこの文書を優先する |
|
|
14
14
|
| [06_codex_trim_rollback_fix_plan.md](06_codex_trim_rollback_fix_plan.md) | 2026-05-06 incident 後の修正計画。controlled smoke で rollback marker の model-visible 復活は未再現となり、overbroad blocker は解除済み |
|
|
15
15
|
| [08_codex_dual_support.md](08_codex_dual_support.md) | Claude / Codex 両対応の architecture brief。adapter 境界の基本方針として維持する |
|
|
16
16
|
| [09_rollback_context_trim_insight.md](09_rollback_context_trim_insight.md) | rollback / rewind を context delete primitive と見る設計メモ |
|
|
17
17
|
| [04_public_release_plan.md](04_public_release_plan.md) | 公開配布の状態表。実装済み behavior だけを公開説明に出す |
|
|
18
|
-
| [
|
|
18
|
+
| [CLAUDE.md](https://github.com/kitepon/Throughline/blob/main/CLAUDE.md) / [AGENTS.md](https://github.com/kitepon/Throughline/blob/main/AGENTS.md) | 作業者向け入口。Claude 正本を守りつつ、この文書を次フェーズ計画として参照する |
|
|
19
19
|
|
|
20
|
-
この文書は、以後の実装順について [07_codex_trim_implementation_plan.md](07_codex_trim_implementation_plan.md) を上書きする。
|
|
20
|
+
この文書は、以後の実装順について [archive/07_codex_trim_implementation_plan.md](archive/07_codex_trim_implementation_plan.md) を上書きする。
|
|
21
21
|
ただし、Claude primary を壊さない、Claude hooks / `/tl` / baton / DB / resume context を Codex 用に置き換えない、という既存の絶対条件は維持する。
|
|
22
22
|
|
|
23
23
|
## 現状認識
|
|
@@ -70,7 +70,7 @@ Codex 側で再実装しないこと:
|
|
|
70
70
|
|
|
71
71
|
1. この `新セッション引き継ぎ` を読む。
|
|
72
72
|
2. Codex 側をやり直さず、Claude `/rewind conversation only` の手動 UX 確認へ進む。
|
|
73
|
-
3. Claude 側に触る前に [
|
|
73
|
+
3. Claude 側に触る前に [CLAUDE.md](https://github.com/kitepon/Throughline/blob/main/CLAUDE.md) を読む。
|
|
74
74
|
4. Codex rollback incident の追加診断が必要な場合だけ、[06_codex_trim_rollback_fix_plan.md](06_codex_trim_rollback_fix_plan.md) の Phase 4 を参照する。
|
|
75
75
|
5. `.claude/settings.json` はユーザー環境差分を含み得るため、明示依頼なしに整理・置換しない。
|
|
76
76
|
|
|
@@ -78,7 +78,7 @@ controlled marker では VS Code restart 後の model-visible 復活も再現し
|
|
|
78
78
|
|
|
79
79
|
- `CLAUDE.md`
|
|
80
80
|
- `docs/05_codex_first_roadmap.md`
|
|
81
|
-
- `docs/07_codex_trim_implementation_plan.md`
|
|
81
|
+
- `docs/archive/07_codex_trim_implementation_plan.md`
|
|
82
82
|
- `docs/09_rollback_context_trim_insight.md`
|
|
83
83
|
- `docs/04_public_release_plan.md`
|
|
84
84
|
- `docs/audit-2026-05/codex-trim-rollback-incident-report.md`
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|---|---|
|
|
13
13
|
| [05_codex_first_roadmap.md](05_codex_first_roadmap.md) | 2026-05-06 以降の次フェーズ計画。Codex primary 実用化を先行する |
|
|
14
14
|
| [06_codex_trim_rollback_fix_plan.md](06_codex_trim_rollback_fix_plan.md) | 2026-05-06 incident 後の修正計画。2026-05-08 の controlled smoke 後、過剰な Codex trim blocker は解除し、restore-safety / host primitive audit は diagnostics として扱う |
|
|
15
|
-
| [07_codex_trim_implementation_plan.md](07_codex_trim_implementation_plan.md) | この文書と rollback trim の気づきを統合した旧計画と実装履歴。完了済み根拠として参照する |
|
|
15
|
+
| [archive/07_codex_trim_implementation_plan.md](archive/07_codex_trim_implementation_plan.md) | この文書と rollback trim の気づきを統合した旧計画と実装履歴。完了済み根拠として参照する |
|
|
16
16
|
| [09_rollback_context_trim_insight.md](09_rollback_context_trim_insight.md) | conversation-only rollback を「model-visible context の delete primitive」と見る設計メモ |
|
|
17
17
|
|
|
18
18
|
この文書は Codex adapter / sidecar integration の方針を定義する。今後の実装順は [05_codex_first_roadmap.md](05_codex_first_roadmap.md) を優先する。
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|---|---|
|
|
11
11
|
| [05_codex_first_roadmap.md](05_codex_first_roadmap.md) | 2026-05-06 以降の次フェーズ計画。Codex primary と Codex Rewind 互換を先行する |
|
|
12
12
|
| [06_codex_trim_rollback_fix_plan.md](06_codex_trim_rollback_fix_plan.md) | 2026-05-06 incident 後の修正計画。2026-05-10 の live token_count 実験後、Codex automatic current-thread mutation は無効化し、通常 `$throughline` は新スレッド handoff に戻す |
|
|
13
|
-
| [07_codex_trim_implementation_plan.md](07_codex_trim_implementation_plan.md) | この気づきと Claude / Codex 両対応計画を統合した旧計画と実装履歴。完了済み根拠として参照する |
|
|
13
|
+
| [archive/07_codex_trim_implementation_plan.md](archive/07_codex_trim_implementation_plan.md) | この気づきと Claude / Codex 両対応計画を統合した旧計画と実装履歴。完了済み根拠として参照する |
|
|
14
14
|
| [08_codex_dual_support.md](08_codex_dual_support.md) | Throughline を Claude primary のまま Codex adapter / sidecar に対応させる architecture brief |
|
|
15
15
|
|
|
16
16
|
この文書は「rollback は欠けていた delete primitive かもしれない」という洞察を残すもの。実装時は、未検証の host primitive を本線仕様にせず、次フェーズ計画 [05_codex_first_roadmap.md](05_codex_first_roadmap.md) の Codex Rewind 互換 Phase で実測してから本線 UX に進む。
|