session · v2.0.0 · 2026-09-30 · sha256 0a97547d7dd6a9ca
session v2.0.0A
Immutable. This exact content never changes and is served at /api/v1/blob/0a97547d7dd6a9ca.
--- name: "session" description: "Manage CocoSession multi-session continuity, iteration and cost budgets, terminal status, operator kill-switch state, one-shot steering, and predicate context. Supports `$session status`, `$session progress`, `$session steer`, `$session stop`, and `$session resume`." version: "2.0.0" author: "CocoPlus" tags: - cocoplus - cocosession - continuity --- Your objective is to manage CocoSession, the continuity and operator-control layer for long-running CocoPlus work. ## Commands - `$session status`: read `.cocoplus/session/PROGRESS.md`, `.cocoplus/session/CONTEXT.md`, `.cocoplus/session/iteration-budget.json`, `.cocoplus/session/budget-state.json`, `.cocoplus/session/status.json`, `.cocoplus/pod-state.json`, `.cocoplus/AGENT_STOP`, and `.cocoplus/STEER.md`; report handoff freshness, active predicate state, queued work count, iteration budget, cost-budget state, terminal status, kill-switch state, and pending steering. - `$session progress`: show the four handoff sections from `.cocoplus/session/PROGRESS.md`: Done, In Progress, Next, Notes. - `$session steer "<instruction>"`: write the instruction to `.cocoplus/STEER.md`. The UserPromptSubmit hook injects it once, appends a session event, then clears the file. - `$session stop`: create `.cocoplus/AGENT_STOP` with timestamp, operator, and reason. The PreToolUse hook blocks tool use while the sentinel exists. - `$session resume`: remove `.cocoplus/AGENT_STOP` after confirming the operator intends to resume. ## Continuity Contract Every CocoFlow or long-running operator session must be recoverable from files alone: 1. `.cocoplus/session/PROGRESS.md` is the human handoff. 2. `.cocoplus/session/CONTEXT.md` is machine-greppable predicate state in `CLASS.key=value` form. 3. `.cocoplus/session/task-queue.jsonl` records mid-session requests without replacing the active item. 4. New work is queued under Next unless the operator explicitly changes the current item. 5. `.cocoplus/session/iteration-budget.json` tracks cap, consumed turns, warning threshold, and stop state. 6. `.cocoplus/session/budget-state.json` tracks `normal`, `reserve`, or `exhausted` cost-budget state. Budget checks happen at stage boundaries only; in-flight stages are never interrupted. 7. `.cocoplus/session/status.json` and `.cocoplus/pod-state.json` use the canonical status vocabulary: `running`, `paused`, `completed`, `exited`, `failed`, `idle`, `retired`. Read `PROGRESS.md` before resuming any long-running work. Cite `CONTEXT.md` predicates verbatim; do not paraphrase them into new state. ## Iteration Budget `cocoplus.toml [session]` controls: ```toml max_iterations = 200 iteration_warn_at = 160 budget_limit = 0.0 budget_reserve_fraction = 0.10 budget_enforcement = "stage-boundary" ``` The PostToolUse hook increments the consumed counter. At `warn_at`, CocoSession records a proactive checkpoint request in `session/steps.jsonl`. At `cap`, it creates `.cocoplus/AGENT_STOP` and writes the final budget state so the operator gets a clean handoff instead of an exhausted context window. When `budget_limit` is set and `budget_enforcement = "stage-boundary"`, cost enforcement is seam-based. The reserve fraction is protected for landing work: final quality review, console state update, and handoff notes. A budget stop is `exited`, not `failed`, unless an execution error caused it. `PROGRESS.md` must include: ```markdown ## Iteration Budget Cap: 200 Consumed: 0 Warn At: 160 ``` ## ctx Supplement When ctx is available, CocoSession may read `cortex ctx show all` as a supplement to `PROGRESS.md`: - ctx tasks in task-list state map to `In Progress`. - ctx ready steps map to `Next`. - ctx discoveries map to session context additions. Hard constraints: - Never set `CTX_DIR` in CocoPlus production workflows. It changes `process.cwd()` and can break CocoPod-relative paths. - Set `CTX_STEP_ENFORCEMENT=false` for CocoFlow stage execution so ctx gates do not conflict with CocoFlow gates. - If ctx and CocoFlow disagree about the active task, CocoFlow takes precedence. ## Exit Criteria - [ ] `PROGRESS.md` has Done / In Progress / Next / Notes sections. - [ ] `PROGRESS.md` includes Iteration Budget when long-running work is active. - [ ] Cost-budget state distinguishes `normal`, `reserve`, and `exhausted`. - [ ] Terminal status uses the canonical vocabulary and does not collapse `exited` into `failed`. - [ ] `CONTEXT.md` uses one predicate per line. - [ ] Kill-switch and steering files are treated as operator controls, not permanent instructions. ## Anti-Rationalization | Shortcut / Temptation | Why It Fails | |-----------------------|--------------| | Treat the skill as complete because the file exists | Skill contracts must describe observable behavior and verification, not just command names. | | Skip artifact and safety checks for a small command | Small commands still mutate state or guide execution; preserve the same gates. |