OpenSpec Lifecycle
OpenSpec is the spec-driven development system in Omegon. Specs define what must be true before code is written — they are the source of truth for correctness. The full lifecycle: propose, spec, fast-forward, cleave, assess, archive.
Lifecycle Stages
- Propose — create a change with a name, title, and intent
- Spec — write Given/When/Then scenarios defining acceptance criteria
- Fast-Forward — generate
design.md(architecture) andtasks.md(work items) from specs - Execute — implement via
/cleave(parallel) or direct coding - Verify —
/assess specchecks that implementation satisfies all scenarios - Archive — move completed change to baseline
Commands
| Command | Description |
|---|---|
/opsx:propose | Create a new change proposal |
/opsx:spec | Generate or add specs (Given/When/Then scenarios) |
/opsx:ff | Fast-forward: generate design.md and tasks.md |
/opsx:status | Show all active changes with lifecycle stage |
/opsx:verify | Verify specs are satisfied by implementation |
/opsx:archive | Archive completed change to baseline |
Spec Format
## Scenario: Provider routing selects best match
Given a routing request for tier "victory"
And providers [anthropic, openai, ollama] are available
When the routing engine scores providers
Then anthropic is selected (highest capability match)
And ollama is ranked last (local tier only) Directory Structure
openspec/
├── changes/
│ └── my-feature/
│ ├── proposal.md # Intent and scope
│ ├── specs/
│ │ └── routing.md # Given/When/Then scenarios
│ ├── design.md # Generated architecture (from /opsx:ff)
│ └── tasks.md # Generated work items (from /opsx:ff)
└── baseline/
└── archived-change/ # Completed changes (from /opsx:archive) Integration 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
/opsx:ffgenerates design.md and tasks.md/cleaveexecutes the tasks in parallel/assess specverifies against the original specs/opsx:archivecloses the loop
Reconciliation
After implementation or assessment, the lifecycle may need reconciliation:
- If
/assess specfinds issues,reconcile_after_assessreopens work - 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