案件、タスク、記録
Epismo を実行 runtime にせず、共有に役立つ状態だけを残します。
案件は実際の一案件です。immutable なプレイブック Version に固定して開始することも、title だけの ad hoc 案件として開始することもできます。プレイブック-backed 案件はプレイブック ID と Version ID を保持しますが、Step の進捗は追跡しません。
案件 lifecycle
案件の status は open または closed です。close 時の outcome は completed、cancelled、abandoned です。completed にするには全タスクが closed である必要があります。cancel または abandon では、残っている open タスクを案件 transition の一部として閉じます。案件を reopen してもタスクは reopen されません。
archive は close とは別の操作です。archive した案件はすべての一覧、件数、handoff graph から外れ、読み取りでも解決されなくなりますが、そのタスク・記録・handoff は削除されず保持されます。archive できるのは案件の開始者と現在の担当者だけで、web app から実行します。
タスクや記録が一件もないまま案件を完了できます。案件の存在と outcome だけを残せばよい場合は、この軽量な形を使ってください。
案件 mutation は optimistic concurrency を使います。最新の lockVersion を送信し、conflict 後は古い intent をそのまま再送せず、案件を読み直して変更がまだ妥当か判断してください。
タスクは必要時だけ作る
タスクは案件内で明示された仕事です。kind は work または review で、User への assignment、source Step への link、review の場合は対象記録への link を持てます。
案件開始時に各 Step のタスクは作られません。責任、引き継ぎ、レビュー、個別追跡する仕事を見える状態にする必要があるときだけタスクを作ります。複数タスクを同時に open にでき、ひとつを閉じても案件は自動進行しません。
タスク更新も lockVersion を使います。closed タスクを reopen できるのは親案件が open の間だけです。
案件の引き継ぎ(handoff)でつなぐ
案件は handoff(fromCaseId -> toCaseId)によって有向非巡回グラフ(DAG)として接続できます。各案件の ACL と lifecycle を保ちながら、複数段階のワークフローやチーム間の連携を表現できます。
- 循環防止: トランザクション分離と到達可能性チェックにより、サイクルや自己参照の接続を厳格に拒否します。
- 候補探索: 事前に接続可能な上流・下流の案件候補を探索できるため、試行錯誤なしに安全な接続先を決定できます。
- 引き継ぎグラフ: 指定した案件を起点に、
scope(self、ancestors、descendants、neighbors、connected)に応じた DAG を取得できます。
記録が引き継ぎ面になる
記録は案件 timeline 上の immutable かつ append-only な entry で、タスクまたは source Step にも紐付けられます。application-defined な kind、任意の human-readable content、structured data、origin(user、agent、system)、creator、client identity、作成日時を持ちます。
成果、根拠、判断、review comment、file・object 参照、handoff summary、意味のある error、coordination activity を記録に残してください。chain-of-thought、全 tool call、生 shell output、credential、retry 履歴、heartbeat、runtime graph を自動保存しないでください。
記録の訂正は新しい記録を追記して行います。記録は案件内で一覧し、安定 cursor とタスク、author、kind、origin、ACL、sort order の filter を利用できます。引き継ぎ scope(ancestors や connected など)を指定することで、各案件に対する閲覧権限を個別に評価しながら接続先案件の記録も含めて取得できます。