新しいモデルは、何時間も、ときには何日も、筋を見失わずにロードマップ全体を遂行する。だからこそ状態のずれは、軽くなるどころかより重くのしかかる。チェックポイントの間でエージェントが多くをこなすほど、記録された状態が静かに git と一致しなくなる余地が広がる。casp check は、そうなった瞬間に push を阻止する決定論的なゲートだ — 今日の Claude Code でも、次に登場するあらゆるモデルでも。
一週間ぶりにプロジェクトへ戻る — あるいは五つを同時にこなす。エージェントは現実とずれた状態ファイルを読み、すでに出荷済みの作業に自信満々で着手し、あなたはその後始末に午後をまるごと費やす。
ボードもカードもスプレッドシートも、あなたを救わない。コンテキストの再構築は手作業で、しかもエージェントはそのどれも読めない。状態は、機械可読で、git ネイティブで、そして真実であると証明できる必要がある。
CASP は、セッションをまたいで生き残り、静かにずれることのない、唯一の筋をどのプロジェクトにも与える。{
"phase": "13 — camera streaming",
"next_prompt": "phases/14-camera.md",
// shipped in v13.4
"last_commit": "a1f3c9",
// not in git history
"migrations": ["0001"…"0007"],
// git stops at 0006
}
隣接する領域 — Mem0、Letta、Zep、そして新しい git ネイティブの「メモリ」系プロジェクト — はいずれも、起きたことを保存する。だが、保存した状態がいまも git の現実と一致しているかを検証するものは、ほとんどない。その検証こそが casp check であり、push のたびに必須だ。
あなたの next_prompt が、すでに出荷済みの — あるいは存在しない — ファイルを指している。CASP は間違ったセッションの開始を拒む。
last_commit が履歴にない、マイグレーション一覧が同期していない、未コミットの状態 — 推測ではなく、git そのものと照合して検査する。
あいまいな類似度スコアは一切なし。状態が嘘をついている間は push を止める、固く再現可能な合否ゲート。
CASP はあなたのワークフローの何も置き換えない。ほかの何ものも埋めていない唯一の隙間を埋める — プロジェクトの検証された現在形を、エージェントが読んで動ける形で。
データベースなし。サービスなし。ベクトルストアなし。エージェントがどのセッションでも最初の一行で読める、三つの素朴なファイル。
機械可読、プロジェクトごと。現在のフェーズ、次のフェーズ、実行すべき正確な next-prompt、出荷済みのフェーズ、適用済みのマイグレーション、最後のコミット、最後のセッション ID。
「いま自分はどこにいるか」を一画面で。開けば、五秒で筋が戻る — 考古学は不要だ。
出荷すべき次の3つに、フェーズのスコアボードを添えて。エージェントは作業の順序を常に把握している。
session-prompt、session-log、audit-brief テンプレートにより、すべてのセッションは — 人間でもエージェントでも — 同じ形の成果物を生む。構造は提案されるのではなく、強制される。本物のプロダクトは、一つの機能ではない。API、web クライアント、mobile にまたがる数十のフェーズが、入れ替わるセッションとエージェントによって数週間かけて出荷される。CASP はそのすべてを貫く、検証された唯一の順序を保つ — どのエージェントも次がどのフェーズかを知り、出荷済みのフェーズを二度と出荷し直さない。
そしてループは自ら閉じる。各セッションの終わりに、エージェントが次のセッションのプロンプトをあなたの代わりに書く — あなたは一行を調整するだけで、ゼロから書き起こさない — セッションログを追記し、状態を更新する。次のセッションを開けば、前回が止まったまさにその場所から再開する。ロードマップが実行し、あなたは監督する。
以下のすべての数字は、各プロジェクトの state.json から直接読み取ったもの — エージェントが読むのと同じファイルで、最後の push で git と照合済みだ。マーケティング用の計算は一切ない。
コートジボワールの運輸会社向けの、顧客向け車両管理 ERP — web + mobile、マルチモジュール、マルチロール。運転手、車両、コンプライアンス、出納、整備、係争、会計。
どのモジュールも検証されたフェーズだ。エージェントはコックピットを読み、next_prompt から次のフェーズを実行し、出荷済みのモジュールを一度も出荷し直していない — 一日に六セッションこなした日でさえ。
ZeroSuite の社内向け運用 & ローンチオーケストレーション基盤 — 実在のチームが手がける数か月にわたるロードマップで、ローンチモードのゲーティングと、追跡されるローンチ後のバックログを備える。
40 超のフェーズと三人を貫く、検証された唯一の筋 — さらに58 項目がローンチ後へ明示的に先送りされ、そのどれ一つ失われていない。これこそ CASP が想定して作られた「大規模なマルチユーザープロジェクト」の事例だ。
同じプロトコル、まったく異なる二つのプロダクト。共有しているのはコックピットだけだ。
メモリツールはあなたが誰かを覚える。CASP はプロジェクトがどこに立っているかを追い — そしてそれを証明する。異なる成果物、異なる操作、防ぐ失敗も異なる。
一音節、同綴異義語なし、英語でもフランス語でもスペイン語でも同じ。
state.next_prompt から次のセッションを自動で開始する。CASP は Claude Code 用のスラッシュコマンドを同梱し、状態をあなたがすでに働く場所に置く。
読み取り専用のステータス — エージェントは一行を書く前に、現在の筋を読む。
state.next_prompt から直接、次のセッションを自動で開始する。コピペも、当て推量もなし。
対応するのは Claude Code · Cursor · Aider · Continue — ファイルを読むものなら何でも。
一体のエージェントが誤れば、午後を一つ失う。百体のエージェントが百のリポジトリで誤れば、四半期を失う。CASP は、自動化のループに差し込む決定論的なガードレールだ — どのプロジェクトでも同じ形で。
casp check は、lint やテストと同じ枠に収まる。嘘をつく状態はマージできない — ドリフトは個々人の規律任せにせず、組織レベルで阻止される。
自律エージェントは間違いを増幅する。CASP はそのすべてに、読むべき同じ検証済みの筋と、push 前の同じ固いゲートを手渡す。二重作業という税のない自動化。
状態遷移はどれも git のコミットだ。各プロジェクトがどう動いたかの、完全で、差分が取れ、巻き戻せる記録 — git log がそのままあなたのコンプライアンス証跡になる。
完全ローカル、テレメトリーなし、クラウドなし、アカウントなし。審査するものも、持ち出すものもない。セキュリティレビューは一行で済む。決してマシンの外へ出ない。
jobs: state-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } # casp checks against full git history - run: npx @justethales/casp check # ✗ fails the build the moment state drifts
一つのプロトコル、すべてのリポジトリ。検証された同じ形を、組織全体で。
プロトコルは、予測可能であることで採用を勝ち取る。これらは曲げない。
CASP は、あなたのリポジトリが何であるかを検査する。やろうとしたことは決して検査しない。毎回、git と照らした事実を。
正準の成果物は、提案ではなく強制される。どのセッションも同じ形で出てくる。
バリデーターは任意ではない。嘘をつく状態が、あなたのリモートに届くことは決してない。
決定論的、git ネイティブ、完全ローカル。テレメトリーなし。クラウドなし、アカウントなし、請求なし。
インストールして、init すれば、エージェントは最初の一行で真実を読む。
$ npm i -g @justethales/casp $ casp init # scaffold the layer $ casp status # where am I right now $ casp check # prove the state is true