Skip to main content

0.10.0 — evidence gets a shelf life, and the first governed run stops

· 3 min read
0.10.0 — evidence gets a shelf life, and the first governed run stops | AEPA fact decays to Unknown past its horizon, never to False, and no API can extend one. Then the protocol governs a real story out of this repository's own backlog — and blocks four states short of where it was meant to.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-21-2343-horizons-and-the-first-governed-run.md · revision 824869fecbd2

Two things, and the second is the one that matters.

0.9.0 — something walks the workflow, on evidence alone

· 3 min read
0.9.0 — something walks the workflow, on evidence alone | AEPThe reference driver exists: protocol drive walks a workflow, blocks with the engine's reasons verbatim, and is held to the protocol verbs by enforcement hooks. Preceded by an adversarial review of six architecture decisions, with all seventeen corrections applied before a line was built.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-21-2120-the-reference-driver.md · revision 824869fecbd2

Everything before this release answered questions. This one walks a workflow — and the design of it was argued out and corrected before any of it was written.

0.8.0 — the repository starts planning itself, and a transcript gets judged

· 3 min read
0.8.0 — the repository starts planning itself, and a transcript gets judged | AEPPlanning artifacts become markdown in the repository, moved only through lifecycle-validated verbs. And an agent transcript normalises into an event IR judged against a typed specification — the third observation domain after a specification and a cluster.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-21-1708-the-plan-and-the-transcript.md · revision 824869fecbd2

Two waves in one release, and they are the same idea applied twice: take something that was prose and make it a typed thing a program can refuse.

0.7.1 — the same pattern, pointed at a Kubernetes cluster

· 3 min read
0.7.1 — the same pattern, pointed at a Kubernetes cluster | ESSA running cluster is observed, compiled, diagnosed, held to an authored desired state three-valued, and answered with patches. Nothing here holds a credential, reaches a network, or applies anything — the diff is the deliverable.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-21-0745-a-cluster-described-and-answered.md · revision b89faaa411bd

The ESS half of this repository compiles a specification and judges an implementation against it. This release does the same thing to a running Kubernetes cluster, which is the first evidence that the pattern was general rather than a description of one problem.

0.7 — one specification, two applications

· 14 min read
0.7 — one specification, two applications | ESSRelease 0.7.0-ess-wave-7 closes the loop over generated code: every generated artifact carries the digest of the model slice it derives from, ten construct families join the semantic delta — and the wave ends with a demonstration rather than a claim: one specification synthesised to Rust and to Go, two binaries answering the same seven HTTP exchanges identically and publishing byte-identical contracts.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-21-0623-one-spec-two-apps.md · revision b89faaa411bd

Release 0.7.0-ess-wave-7 is the wave where the machinery built over six releases stops pointing at itself. It opens with bookkeeping — every generated artifact now carries the digest of the model slice it derives from, and the semantic diff learns four more construct families — and it ends with the demonstration all of that bookkeeping was for: one application specification, synthesised to Rust and to Go, two binaries built and started in the gate, writing one startup record, answering seven HTTP exchanges identically, and publishing the same contract byte for byte. Nothing below is asserted from memory: every output was produced by running the released code, and the block that was not run for this post says which committed file it is.

0.6.1 — no new capability, the existing claims made mechanical

· 3 min read
0.6.1 — no new capability, the existing claims made mechanical | ESSThree invariants that were enforced by nothing are enforced by scans. The model digest widens to the full SHA-256. Property tests with fixed seeds. And the fault matrix reaches thirteen rows, zero uncaught.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-21-0040-hardening-the-register-emptied.md · revision b89faaa411bd

A release with no new capability. Everything here takes a claim the repository was already making and makes it mechanical — enforced by something that fails, rather than by a doc comment that asserts.

0.6 — the code that was never yours to write

· 11 min read
0.6 — the code that was never yours to write | ESSRelease 0.6.0-ess-wave-6 adds one verb: ess synthesize. The specification that already writes its documentation, its contracts and its tests now writes the structural part of the code — and the generated system passes the suite the specification generated before this code existed.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-20-2316-structural-synthesis.md · revision b89faaa411bd

Release 0.6.0-ess-wave-6 adds one verb to the CLI. ess synthesize turns a compiled specification into a plan and a Rust workspace: the types, the states, the ports — the part of an implementation that was never anyone's to write — plus a typed list of exactly what remains. The specification that already writes its documentation, its contracts and its tests now writes code, and the claim that matters is executed rather than asserted: the generated system passes the conformance suite the specification generated two waves earlier, before any of this code existed.

This post is a tutorial, run against the normative example that ships in the repository, so every output below is reproducible — and checked by tests, not pasted from memory.

0.5 — what moved, and what that invalidates

· 10 min read
0.5 — what moved, and what that invalidates | ESSRelease 0.5.0-ess-wave-5 adds two verbs: a semantic diff over two revisions of a specification, and an impact closure that says which conformance results a change puts back to owed — with the path that explains each one.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-20-2039-semantic-diff.md · revision b89faaa411bd

Release 0.5.0-ess-wave-5 adds two verbs to the CLI. ess diff answers what actually moved between two revisions of a specification — as typed changes over the compiled models, not as text. ess impact answers the question that makes the first one worth asking: which verification results does that movement invalidate, and by exactly what path.

This post is a tutorial on both, run against a fixture that ships in the repository, so every output below is reproducible — and checked by tests, not pasted from memory.

0.4.0 — the specification judges the implementation

· 3 min read
0.4.0 — the specification judges the implementation | ESSA specification generates its own conformance suite, runs it, and produces a standalone report. This retrospective records the pre-extraction milestone.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-20-1809-the-specification-as-oracle.md · revision b89faaa411bd

Historical release note. ESS now publishes a standalone conformance report; workflow consumers translate that report at their own boundary.

This is the release where a specification first generated its own conformance suite, ran it against an implementation, and produced a report a workflow consumer could translate into its own evidence vocabulary.

Both halves are proven, which matters more than either alone:

  • a correct implementation passes 27 of 27 scenarios and the task completes;
  • the same implementation with one fault injected fails the scenario that exists to catch it, and the engine refuses to let the task complete, naming the principle that refused.

0.3.3 — twenty gates, closed before the oracle was allowed to start

· 3 min read
0.3.3 — twenty gates, closed before the oracle was allowed to start | ESSNot a feature wave. A mutation review ran twenty single-edit changes against the load-bearing rules; seven survived, two survived the whole gate. What a user notices is mostly things this repository used to accept and now refuses.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-20-1318-reconciliation.md · revision b89faaa411bd

Wave 4 was going to make the specification judge generated code. Before that could start, four independent reviews opened twenty gates, and this release closes them.

It is not a feature wave. What a user notices is mostly things this repository used to accept and now refuses.