Skip to main content

42 posts tagged with "ess"

View All Tags

0.12–0.14 — four areas, and a command line as a declared surface

· 5 min read
0.12–0.14 — four areas, and a command line as a declared surface | ESSess --help lists four commands, one per area, and every flat spelling stays a hidden alias that prints the same bytes. A component can declare that its callers are people at a terminal, and --target clap synthesizes the parser from that declaration. Release execution gets an explicit executor boundary.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-09-21-1000-four-areas-and-a-command-line.md · revision b89faaa411bd

Three releases about surfaces: the one this tool presents, and the one a specified component presents to a person at a terminal.

0.10–0.11 — the claims a generated scenario could not make

· 4 min read
0.10–0.11 — the claims a generated scenario could not make | ESSA command outcome says which entity fields it determines and from what, so a generated scenario asserts the values a row holds rather than only that the row exists. On the billing example the negative-total fault went from caught by 6 of 29 scenarios to 13. A wrong-state branch can also accept, and a view can take parameters.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-09-21-0930-the-claims-a-scenario-could-not-make.md · revision b89faaa411bd

A conformance suite is worth what its assertions are worth. These releases are about three claims the model had no way to state, each found by an implementation that passed while being wrong.

0.8–0.9 — a deployment described, and still nothing applied

· 3 min read
0.8–0.9 — a deployment described, and still nothing applied | ESSA physical realization binds one exact specification digest to the artifacts that implement it, and seven typed formats lower a semantic system to independently released Helm deployments. ESS projects the inputs and verifies the evidence; it builds nothing, publishes nothing, applies nothing.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-09-21-0900-a-deployment-described.md · revision b89faaa411bd

The releases through 0.7.1 established that a specification can judge an implementation, and that the same pattern points at a running cluster. What neither could say is which artifact implements which component, and what it takes to run it. These two releases say it, as typed data, without acquiring the ability to do anything about it.

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.

0.3.2 — one source of truth stops being a claim

· 3 min read
0.3.2 — one source of truth stops being a claim | ESSThe specification now produces the documentation and the contracts — Markdown with Mermaid, JSON Schema, OpenAPI 3.1, AsyncAPI 3.0 — all drift-checked in CI. And the three projections turned out to disagree with each other on all 17 comparable pairs.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch

Source-owned field note · website/blog/2026-08-20-1050-ess-the-projections.md · revision b89faaa411bd

"One source of truth" is a claim until something is actually generated from it. This release generates four things, commits them, and fails CI if they drift.