Spec 1.0: This page reflects the current stable portable core release.Start smaller than you think. Do not begin by trying to specify the whole repo. The best first step is one subject, one small reconcile loop, and one clear piece of behavior that matters. A good first pass looks like this: choose one subject, make one small change, tie it to real evidence, reconcile the current truth, and run the check before you widen the scope.
The shortest path
- Choose one important subject.
- Add the
.specworkspace with the tooling for your stack. - If you are entering an existing repo or branch, get context first. In
specled_ex, runmix spec.prime --base HEAD. - Make the smallest code, docs, or test change that matters.
- Add or tighten the smallest proof when behavior changed.
- Run the guided reconcile step for your stack. In
specled_ex, that ismix spec.next. - Update one current-truth subject if needed, then run the strict check. In
specled_ex, that ismix spec.check --base HEAD.
Choose your starting point
Greenfield
Start with one feature and one subject instead of modeling the whole system.
Brownfield
Retrofit one critical area first and use current behavior as the baseline.
Bug Fix
Lock the regression into the spec, tests, and checks together.
New Feature
Define the feature boundary first, then implement only what the spec calls for.
A good first subject
Pick something that is:- user-visible
- important enough to matter
- small enough to understand in one sitting
- already covered by at least some code or tests
- one endpoint
- one module contract
- one workflow
- one package-level behavior
A very small example
You do not need much to start.What not to do first
Avoid these traps:- modeling the whole repo on day one
- writing aspirational specs that do not match shipped behavior
- adding a lot of process before you have one working reconcile loop
- treating the spec as a replacement for tests
Next steps
Once the first subject is stable:- add the next subject near the same surface
- tighten weak verification
- add ADRs only when cross-cutting decisions actually need them
- keep the loop in CI so drift stays visible