CASP は、各プロジェクトが実際にどこにあるかについて、つねに真である一枚の像を保ち続ける — いつでも、git に照らして検証される。一週間後でも数か月後でも、どのスタックでも、いくつのエージェント・セッション・仲間にまたがっても、開けば状態は真だ — さもなければ casp check が、真になるまで push を阻止する。
一週間ぶりにプロジェクトへ戻る — あるいは五つを同時にこなす。エージェントは現実とずれた状態ファイルを読み、すでに出荷済みの作業に自信満々で着手し、あなたはその後始末に午後をまるごと費やす。
ボードもカードもスプレッドシートも、あなたを救わない。コンテキストの再構築は手作業で、しかもエージェントはそのどれも読めない。状態は、機械可読で、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
}
CASP は自己検証ループの決定論的な土台だ — 「自分の作業を検証せよ」のうち、モデルが自分自身を検査するのではない唯一のチェックである。git に照らした状態を、ループ内の検証が構造上届かない push の境界で確かめる。隣接する領域 — 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 テンプレートにより、すべてのセッションは — 人間でもエージェントでも — 同じ形の成果物を生む。構造は提案されるのではなく、強制される。仕様を、セッションプロンプトの待ち行列に変える — その一つひとつが、自分の前に何が来るかを宣言する、リポジトリ内のファイルだ。casp next はその待ち行列の先頭をエージェントに渡し、すでに出荷済みのスライスを渡すことを拒む。
casp next はプロンプトを表示するだけだ。実行することは決してない — 実行するのはあなたのエージェント。CASP は引き継ぎを信頼に足るものにする部分であって、オーケストレーターではない。
各セッションの終わりに、エージェントはログを追記し、状態を更新し、待ち行列の次のプロンプトを書き起こす — あなたはゼロから書くのではなく、一行を調整するだけ。フェーズの一覧は roadmap.md に残るので、どのエージェントも作業の順序を把握できる。
以下のすべての数字は、各プロジェクトの 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