Specs won. We are not here to reargue it.
By mid-2026 the argument is over. GitHub's Spec Kit — an MIT-licensed, agent-agnostic toolkit — passed a hundred thousand stars this June. Amazon made Kiro, its spec-first IDE, generally available on 17 November 2025, turning prompts into EARS-notation requirements. OpenSpec holds tens of thousands more. Every major coding agent now ships some flavour of spec-driven development, and the phrase of the year is "the spec is the prompt."
That consensus is the starting condition, not the product. Every one of those specs is prose — structured Markdown held together by convention and good intentions. The tools disagree about format, lifecycle, and tooling, but they agree completely about substance: a spec is a document a person reviews. We think that leaves the two hardest questions untouched.
When are two specs the same spec?
Rename a variable in a Markdown spec and the diff lights up, though nothing about the claim changed. Quietly weaken an acceptance criterion and the diff is one line among forty. Prose specs answer "did the meaning change?" with a review meeting. And on the other side of the loop: what shows a run actually obeyed the spec? A passing test suite is a sample, not a proof of what happened. We think both questions deserve arithmetic.
Identity, not diff review
A spec here canonicalizes to a graph, and the graph hashes to an identity — a sem- string. Reformat the document, reorder clauses, rename freely: the identity holds. Change what the spec claims and the identity moves. "Did the meaning change" becomes string comparison, which means CI can answer it.
Evidence, not assurance
A run against a spec seals into a film — a bundle someone else can replay on their own machine and get the same result, byte for byte. Conformance stops being a claim in a README and becomes an artifact you hand over. The receipt side of this story lives at fleetprompt.com.
WRL underneath, Markdown on top — and nothing in between.
The machinery is the WRL / TRVM / TRAAVIIS stack, documented at traaviis.com. The friendly surface is SPEC.md, and it is already built. Honesty requires the order to be stated plainly: both ends exist and nothing joins them. The machinery derives identities. The front end parses Markdown. No compiler runs between the two, so today a SpecPrompt spec is a validated document and not yet a checksummed one.
- WRL is the spec language. A program — or an agent's contract — is a network of riders separated by walls. Its meaning is a content-addressed canonical graph; its identity is derived from that graph, not from the bytes of the source file.
- TRVM is what reduces it. A term-rewriting runtime on the interaction calculus, where every step is a local rewrite and the result is schedule-independent — the property that makes "replay it yourself" a coherent offer rather than a hope.
- The document boundary is typed. The world (what the spec claims) and the scenario (what a particular run feeds it) are different documents, and mixing them is a typed rejection. An LLM's output enters as a claim, canonicalized at OBSERVE — so a film stays byte-exact even when the model behind it is not deterministic.
-
Acceptance tests are films. A spec's acceptance runs
seal into replayable bundles via TRAAVIIS's verifier,
trvs. The bundle either replays to the same identity on your machine or it doesn't. There is no third state to argue about. - The front end is built; the compiler to WRL is not. SPEC.md — parser, validator, linter, differ, a CLI and eight MCP tools, 93 tests across Elixir and TypeScript, deployed at app.specprompt.com — is a real toolchain, built against the prose-spec consensus above and sharing its limits. What it cannot do is compile to WRL. That compiler is named, shaped, and unwritten, and it is the only thing standing between the two halves of this page.
What the numbers actually are, on 2026-08-09.
One demo world exists. Its identity, sem-8ae91fe9cbc5fd08,
is derived identically on the Arch Linux workstation that builds the T&R
image and on a booted T&R guest — two operating systems, one string. The
verifier's own doctor reports status ready on the
guest: engine v0.7.0-alpha.5, reference interpreter and native
runtime both present.
What exists, and what is a name.
| Piece | What it is | Status |
|---|---|---|
| WRL | the spec language — meaning as a canonical graph | real · upstream |
| TRVM | the term-rewrite runtime that reduces it | in the T&R image |
| trvs / TRAAVIIS | seals a run into a replayable film | alpha · v0.7.0-alpha.5 |
| Identity check | same sem- id on two operating systems | measured · once |
| SPEC.md toolchain | parser, validator, linter, differ, CLI, 8 MCP tools — 93 tests, live at app.specprompt.com | built · superseded |
| Spec registry | publish and browse specs — deployed, without films | built · superseded |
| Markdown → WRL compiler | prose in, identity out — the join between the two halves | not built |
| Diff by identity | “did the meaning change?” as a string compare | not built |
| Second implementation | independent derivation of the same identities | not built |
What doesn't work yet, on the same page as what does.
A page that only publishes its wins is asking you to take the wins on faith. These are the current holes, stated at the size they actually are.
The product on this domain is the previous one
What is deployed is the SPEC.md toolchain — real, tested, and built for the prose-spec world this page argues past. The compiler that would give a spec a derivable identity is a plan with a shape and zero lines of code.
Identity covers the world, not the model
An LLM's output enters a run as a claim canonicalized at OBSERVE. A sealed film makes the run replayable — it does not make the model deterministic, and this page should never be read as saying so.
One implementation
"Same identity on two machines" currently means one codebase agreeing with itself. Until a second, independent implementation derives the same sem- ids, the semantics rests on one program.
Ergonomics unproven
Whether working engineers will accept graphs-with-checksums over prose they can skim is untested with anyone but us. The Markdown front end exists precisely because we suspect the answer is no.
Drift detection is demo-sized
Catching spec-versus-implementation drift by identity has run against exactly one world. Every claim about it scales from a sample of one.
The old roadmap slipped
The previous page promised a v1.0 format in Q1 2026 with parsers in two languages. The parsers shipped — Elixir and TypeScript, same output. The v1.0 format did not, and the quarters passed. The dates are gone; the status table above replaced them.
If the unsettled question is your question too.
The machinery is public and documented; the front end will grow in the open. If you maintain specs for agents and the phrase "did the meaning change?" costs your team meetings, we would like to hear how — that conversation shapes what the compiler accepts.