0.79 — Nested-member claims, Binary64 in conformance suites, and typed authored inputs
· 4 min read
0.79 — Nested-member claims, Binary64 in conformance suites, and typed authored inputs | ESS0.79.0 adds scenario format ess-scenario/6 and suite pair ess-conformance/62 and /63: an authored claim may name a nested member by its path, an authored literal input is held to its type, and a model that reaches a finite Binary64 runs a conformance suite.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch
0.79.0 adds no source format: a specification keeps its meaning, its IR bytes and its compiled
digest. It adds scenario format ess-scenario/6 and suite pair ess-conformance/62 (ordinary) and
/63 (coverage). The changelog lists
every change; this note covers what the new formats carry and the fixes that came with them.
Nested-member claims
- From
ess-scenario/6a claim in an act'sresponse:, an event'spayload:, an error'sfields:or a row may name one member of a nested value by its dotted path,checkpoint.checkpoint_id: cp-1, under one rule on all four surfaces: a field is claimed whole or by its paths, not both. - A response path is carried by
ess-conformance/62and/63; event, error and row paths compile to dotted keys older suites already read, so those suites keep their format. - A partial nested literal in a
response:is refused asESS-AUTHOR-014, naming each member it leaves out at its path.
Binary64 through a conformance suite
- A model that reaches a
Binary64in an entity's fields, a command's input or response, an event's or error's fields, or a view now synthesizes, authors and runs a suite atess-conformance/62(coverage/63). - Rust, Go and TypeScript compare it by its nearest binary64 under IEEE equality (
-0equals0); a token with no finite image, such as1e400, is refused by name. An authoredBinary64literal of magnitude 2^53 or more is refused asESS-AUTHOR-015, because view and event assertions compare an integer token exactly. - A
Binary64reached through an entity identity, a view parameter, an actor attribute, a binding or a conversion is still refused (ESS-AUTHOR-036).
Authored inputs meet their type
- From
ess-scenario/6an act's literal input that its declared type refuses, at any depth and beside an$instancereference, is refused asESS-AUTHOR-015at its member path. - A refusal guard that only out-of-type inputs meet is refused as
ESS-SYNTH-003, naming the field, the type and the constraint.
Synthesis fixes
- Both branches of a
!=or==guard that compares an input with its ownexample:are written, for text,Uuid,Timestamp,DurationandBytes, and for a struct member a structured example reaches. - An input-guarded refusal beside exhaustive held-state branches, and the byte-length children of an
anyover alphabet-bounded texts, are witnessed where they were refused. - An accepting branch read after
unknown_instance:is arranged with its row stored first; guards on related identities, parent rows and cascades get the rows they read. - An authored scenario that repeats a key in a mapping is refused as
ESS-AUTHOR-047.