Repository navigation
0.78.0
Structured input examples, rows a deployment provides, and lifecycle summaries.
6 added, 2 changed, 2 fixed.
Changed
- From
ess/33an input whose type is a struct (open or closed), aMap<…>orJson, through any newtype orOptional, may carry anexample:, and synthesis sends it at the plain instance (a downstream report, 2026-10-30). The example is held as a precondition literal is; an open struct's undeclared members are admitted and sent as written, in list example elements and precondition literals too, and aJsonexample is any value butnull. A struct example reaches synthesis through its declared members, so a guard on one keeps the scenario that refutes it. A union example stays refused. Belowess/33each keeps its refusal, its hint namingess/33; a model without such an example keeps its IR and suite bytes. - An entity may declare
provided: truefromess/33: the deployment holds its rows, and no command of the specification need create one. Belowess/33the key is refused asunsupported_format_versionnamingess/33, and a model without it keeps its IR bytes.ess verify diffreports adding or removing the marker as an unclassified change, which the default gate fails (a downstream report, 2026-10-30). - Synthesis sends a provided row where a
when_related: {via: input.<field>}guard reads one that no declared outcome creates: the scenario resolves an entity fixture{name, type, entity, state}before execution and sends its identity, and theexists: falsebranch is sent a fresh identity. Such a suite isess-conformance/60(ordinary) or/61(declared coverage); every other suite keeps its format and bytes, and every reader refuses an entity fixture under a lower major. A subject, an owner or a view population that needs a provided row nothing creates, and a guard over a provided row's fields, are refused by name; no decoy row stands beside a provided one, which the synthesis notes say. - The interpreted target answers an entity fixture by creating a row of the entity, in the state the fixture names, before the scenario begins, so
ess verify conform run --target interpretedpasses both branches of a related guard over a provided row; a type-only fixture stays unsupported there. - The generated Go and TypeScript conformance runtimes admit an entity fixture from
ess-conformance/60and pass itsentityandstateto the provider (FixtureFieldin Go,FixtureFieldin TypeScript), which answers the identity of a row of that entity resting in that state; under a lower major the keys are refused as unknown. - From
ess/33a lifecycle transition may carry a one-linesummary:, and a lifecycle state may carry one in its mapping form,{name, wire?, summary?}(a downstream report, 2026-10-30). A state's summary is the summary of its variant of<Entity>.State; guards,moves:and suites keep naming states and moves by name, and Entity Runtime lowering refuses a state only for a wire spelling. Belowess/33either is refused asunsupported_format_versionnamingess/33; a lifecycle without one keeps its IR bytes.ess verify diffreports a moved state summary as the state enum'svariant-summary-changedand a moved transition summary astransition-summary-changed, compatible, iness-diff/22. - A flat
summary:,wire:,display:orcode:on a named type is refused naming the spelling that reads it,naming: {summary: …}, rather than as an unknown field of the type's kind. A state written{name: …}with nothing beside its name is refused naming the bare form. - 3 more in the changelog.
Every change: CHANGELOG.md § 0.78.0