Spec 1.0: This page reflects the current stable portable core release.Spec Led Development is not just “write a spec.” It is a working loop:
- make the change
- add or tighten the proof
- reconcile the current truth
- verify that the effects still match the spec
- keep the same check in CI
1. Make the change
Start small. Change one feature, one bug, one workflow step, or one subject boundary. That keeps the next reconciliation step manageable.2. Add or tighten the proof
Once the change is clear enough, add or tighten the smallest test, guide, or command that proves it. Tests are not peer truth with the spec. They are evidence that helps the repo prove the current truth.3. Reconcile current truth
Start with the smallest subject that matters. That might be:- one endpoint
- one module
- one workflow
- one package-level contract
.spec/specs/*.spec.md.
The portable core keeps five claim types:
- subject
- requirement
- scenario
- verification
- exception
specled_ex provides mix spec.prime for session-start context and mix spec.next to point at the next subject, proof, or ADR update for the current Git change set.
4. Verify the result
Verification turns the spec into something operational. The repo checks whether the implementation still matches the authored claims. That check can point at:- source files
- tests
- guides
- commands
5. Keep the loop live
The same check should run locally and in CI. That is how the repo creates back pressure when code changes but intent, tests, or docs do not move with it. This is how drift gets caught early instead of staying hidden.How this helps review
This loop also makes pull requests easier to review. When a behavior-changing pull request includes the spec update, the reviewer gets three clear things:- the spec states the intended current truth
- the code shows the implementation
- CI shows whether the repo can prove the co-change
How this relates to TDD
There is overlap, but they are not the same thing. TDD focuses on executable behavior through tests. Spec Led Development adds a repo-level current-truth contract that code, tests, docs, review, and CI can all point at. It is not a replacement for TDD. It is a wider coordination layer around behavior and proof.Current truth versus derived state
Spec Led Development keeps authored and derived information separate. Authored current truth:.spec/specs/*.spec.md
.spec/state.json
The practical workspace
The portable core is intentionally small. At minimum, a workspace centers on:.spec/README.md.spec/AGENTS.md.spec/decisions/*.md
Where humans and agents fit
Humans still lead. Humans decide:- what the system is for
- what must stay true
- where ambiguity needs to be resolved
- draft specs
- implement code
- update tests
- repair drift