comet-state.yaml. After each action an Agent completes, it reads the latest continuation and continues with implementation, acceptance, or archiving. Even when a conversation is interrupted, the Agent is replaced, or the local Runtime is lost, the work can continue from the progress recorded in the file.
At the milestones that matter — Shape confirmation, each acceptance round, and archive approval — Comet records the current stage and result in comet-state.yaml. That recorded progress is the recovery point; after an interruption, the work continues from the most recent one.
Whether the next step needs you
Commands such ascomet native new, status, next, archive, and doctor all return continuation.v2. It describes the process status, the Agent action, and what you need to know at the same time. You do not need to read every field literally: the disposition field in continuation.v2 says which category this result belongs to, and checking it tells you whether this round needs you:
Except for
await-user and blocked, no result needs your involvement. For these two, the Runtime returns the reason and the next choices; use doctor when a block needs diagnosis, as described later in this page. The complete field table for the same continuation.v2 is at the bottom of the page, in the “For Agents and automation” section.
Where the recovery points are stored
The state of an active change that can be carried across sessions and devices lives in the change directory and stays with the project code:brief.md: the goal, scope, user decisions, and acceptance requirements;specs/<capability>/spec.md: the complete target behavior after archiving;comet-state.yaml: the stage, state version, acceptance results, Loop progress, Builder handoff, blocking causes, the last 50 execution records, and next step;verification.md: the user-readable acceptance report generated by the Runtime.
comet-state.yaml is the authoritative state of the recovery flow, and the progress it records is the recovery point. You do not need to create checkpoint files by hand: the comet native checkpoint command has been removed. verification.md is only for reading; when it is missing or stale, it can be rebuilt from the YAML.
Local execution information is stored separately in .comet/runtime/native/ and only matters on the current device:
comet-state.yaml.
Recovery behavior after an interruption in any stage — Shape, Build, Verify, or archive-ready — is described together in Recovery playbook.
Continue after switching devices or sessions
A new session on the same device can usually continue the current requirement directly: Comet first locates the active change, then returns the workspace and the next action. To inspect it manually, run:- the project code and its branch or worktree;
.comet/config.yaml;- the
brief.md, Specs, andcomet-state.yamlin the change directory; - the generated
verification.md, which can also be rebuilt on the target device.
.comet/runtime/native/. The Runtime checks the project root, the branch, the worktree, and the change binding. When the binding matches, it rebuilds the local execution state from the progress recorded in comet-state.yaml. When the binding does not match, the code is not synchronized, or an active/archive directory conflicts with a same-name directory, it keeps the existing files and waits for you to handle it.
How a regular change advances on its own
The main flow of a regular change is as follows:await-user or blocked.
When the platform cannot prove to the Runtime that the Verifier executed independently of the Builder, even an all-pass Verifier result still needs your explicit acceptance. At that point you are given three mutually exclusive options:
- accept the current result and prepare to archive;
- keep the requirements and return to Build to revise the implementation;
- revise the requirements or acceptance criteria and return to Shape.
What you see when local state is abnormal
Each localstate.json is tied to a change and a state_version. When the Runtime reads it, it distinguishes two situations:
- State matches: continue from the progress currently recorded;
- File missing, invalid, or stale: rebuild the local execution state from
comet-state.yaml.
archive-ready result that lost its local execution basis, see Recovery playbook.
Stale commands are rejected
Every command that involves a user decision or a stage transition is bound to the state version and the expected action it was generated with, and the Runtime validates both before executing. Therefore, a confirmation from an old conversation, a late Verifier result, or a command that has already expired cannot be written into the new state. What you will see: the command is rejected with a message that the state version or expected action does not match. What to do: do not retry the old command. Re-read the latestcontinuation and continue with the new action.
The paging cursor of status --details is also bound to the state version; after the state changes, an old cursor is rejected, so acceptance items, history, and workspace information from different versions are not mixed together. For the protocol-level details of how versions are written and validated, see Runtime protection and fault recovery.
Diagnosing abnormal situations
Day-to-day progress follows the latestcontinuation. When abnormal situations occur — Runtime files are missing or from an old version, a change needs migration, an archive or directory move was interrupted, or the state-to-workspace relationship cannot be determined — the Agent runs the read-only diagnostic command comet native doctor <change-name> to get the cause and a repair suggestion; when the continuation asks for diagnosis, it says so as well.
Run with --repair only when the diagnostic result explicitly returns a safe repair action. When the state is corrupted, same-name directories conflict, or the recovery source is unclear, preserve the scene and handle the blocking cause the Runtime returned.
continuation.v2 field table (for Agents and automation)
The fields below are consumed by Agents and automation. For manual work you only needdisposition from the first section.
continuation.v2 complete fields and disposition handling
continuation.v2 complete fields and disposition handling
disposition has four outcomes:continue does not necessarily correspond to a Shell command. After entering Build, runnerAction may ask the Builder to finish the implementation first; after entering Verify, it may ask to start a new read-only Verifier. The Agent should read these fields together and not look only at commandArgs.
