OpenSpec Lifecycle
Discovery path: OpenSpec is a full-mode feature. In om (slim mode), the agent won't reference it. When you want spec-driven development — defining acceptance criteria before writing code — switch to full mode with /warp and ask the agent to create or manage an OpenSpec change.
OpenSpec is the spec-driven development system in Omegon. Specs define what must be truebefore code is written — they are the source of truth for correctness. The full lifecycle: propose, specify, plan, test, implement, verify, archive.
Lifecycle Stages
- Propose — create a change with a name, title, and intent
- Spec — write Given/When/Then scenarios defining acceptance criteria
- Plan — write
design.md(architecture) andtasks.md(scenario-owned work items) - Test — register failing test files before implementation
- Implement — execute directly, with a bounded delegate, or through cleave when coordinated worktree isolation is justified
- Verify — assess every scenario against implementation and test evidence
- Archive — move completed change to baseline
Runtime Surface
OpenSpec lifecycle operations are exposed through the agent toolopenspec_manage. The older /opsx:* slash commands are not part of the current Rust runtime.
| Action | Description |
|---|---|
status | Show all active changes with lifecycle stage |
get | Show details for one change |
propose | Create a new change proposal |
add_spec | Add specs with Given/When/Then scenarios |
register_tasks | Register task progress from tasks.md |
register_test_file | Register a required test file before implementation |
archive | Archive a verifying change to baseline |
Spec Format
## Scenario: Provider routing selects best match
Given a routing request for grade "B"
And providers [anthropic, openai-codex, ollama] are available
When the route controller scores providers
Then the selected route preserves the requested grade intent
And the served bridge reports the authenticated provider/model that actually handles turnsDirectory Structure
openspec/
├── changes/
│ └── my-feature/
│ ├── proposal.md # Intent and scope
│ ├── specs/
│ │ └── routing.md # Given/When/Then scenarios
│ ├── design.md # Architecture notes
│ └── tasks.md # Work items tracked by register_tasks
└── baseline/
└── archived-change/ # Completed changesIntegration with Design Tree
The primary entry point for tracked work is design_tree_update(implement)on a decided design node. This scaffolds the full OpenSpec change directory automatically, linking the design node to the implementation lifecycle.
- Design node reaches
decidedstatus design_tree_update(implement)creates the OpenSpec change- Specs are generated from the node's decisions and acceptance criteria
openspec_manage(register_tasks)records task progress from tasks.md- Continue implementation directly, through a bounded delegate, or with cleave for coordinated child scopes
- Assess implementation and tests against the original scenarios
openspec_manage(archive)closes the loop
Reconciliation
After implementation or assessment, the lifecycle may need reconciliation:
- If scenario assessment finds issues, reopen implementation and update lifecycle state
- If cleave adds files not in the original scope, tasks.md is updated
- Archive refuses to proceed if tasks are incomplete or design-tree binding is stale