docs/editing-changes.md
Every artifact in a change is just a Markdown file you can edit at any time. There is no locked "planning phase," no approval gate, no special edit mode to enter. Want to change the proposal after you've started building? Open proposal.md and change it. Realized the design is wrong mid-implementation? Fix design.md and keep going. That's the whole answer, and it's by design.
This page is for the moment you think "wait, can I go back and change that?" Yes. Here's how, for each common case.
You always have both:
Edit the file directly. Artifacts are plain Markdown in openspec/changes/<name>/. Open proposal.md, design.md, tasks.md, or a delta spec under specs/ in your editor and change it. Nothing else is required.
Ask your AI to revise it. In chat, just say what you want: "Update the proposal to drop the caching idea and add a rate-limit section," or "the design should use a queue, not polling." The AI edits the artifact for you, using the rest of the change as context.
Use whichever fits the moment. Small wording tweak? Edit the file. Substantive rethink? Let the AI revise with full context.
Just update it. Same change, refined.
If you're using the expanded commands, the natural flow is: edit the artifact, then run /opsx:continue to pick up from the new state, or /opsx:apply to keep implementing against the updated plan. If you're on the default core commands, edit the artifact and run /opsx:apply; it reads the current files, so it builds against whatever the artifacts now say.
The mental model: artifacts are the live plan, not a signed contract. The AI always works from their current contents, so editing them steers the work.
You: I want to change the approach in this change.
You: [edit design.md, or tell the AI:]
Update design.md to use a background job instead of a synchronous call.
AI: Updated design.md. The task list still fits; want me to continue applying?
You: /opsx:apply
This answers a very common question: there's no separate "update proposal" command because you don't need one. The file is the source of truth, and editing it (by hand or via the AI) is the update.
You don't have to "go back," because you never left. The workflow is fluid: review, edit, and implementation aren't sequential phases you're trapped in.
Concretely, after some /opsx:apply work:
openspec show <change> in your terminal for a consolidated view./opsx:verify (expanded command). It reports completeness, correctness, and coherence without blocking anything. See Workflows: Verify.There's no "review phase" to return to, because review is something you can do at any point, including after implementation.
This happens constantly and it's fine. You tweaked something in your editor, and now the code and the artifacts disagree. Bring them back in sync in whichever direction is true:
A fast way to surface mismatches is /opsx:verify: it reads your artifacts and your code and tells you where they diverge. Treat its output as a to-do list for reconciliation, then archive once they agree.
The principle: at archive time, your specs become the truth of record. So before you archive, make the specs honest about what the code does. Manual edits are welcome; just don't let them quietly desync the spec.
If a generated proposal misses the mark, you have three good moves:
/opsx:explore, think it through, and let a sharper proposal come out of that. See Explore First.That last move has its own decision guide, next.
Short version: update when it's the same work refined; start new when the intent fundamentally changed or the scope exploded into different work.
There's a full flowchart and worked examples in Workflows: When to Update vs Start Fresh and a deeper treatment in OPSX: When to Update vs. Start Fresh.
tasks.md is a living checklist, not a frozen plan. As you implement, you can add tasks you discover, remove ones that turned out unnecessary, or reorder them. The AI checks items off as it completes them during /opsx:apply, and it resumes from the first unchecked task if you come back later. Editing the list mid-flight is expected.
/opsx:continue, /opsx:apply, and /opsx:verify in detail