Repository navigation
0.61.0
Added
-
ess generate types --target rustandess generate schema types-bundletake a repeatable
--rust-raw-json <type>or<type>.<field>: the namedJsonvalues are realized as
EssRawJson, aBox<serde_json::value::RawValue>with text equality, so their bytes round-trip
with or withoutexact-numbers. A location naming no selected type or field, or noJsonvalue,
is refused by name; other targets refuse the flag. Without it the output is unchanged
(#577). -
The one-time response guide lists the disclosure cells synthesis adds for each
one_time_responsefield, the scenario id shape, how the count grows with actors, outcomes,
commands and views, and worked counts for three minimal models
(#573). -
History format
ess-history/3: an operation may recordinput(the command's input as sent),
events(each event a returned answer published, in order, with its payload) andarranged
(theexternal:branches its client arranged before sending it).ess verify conform check-historysteps such an operation with exactly that input, admits only a branch publishing
exactly those events, holds each payload field the branch maps from the input or a literal to
the value the model computes, and admits an external answer only where an arrangement of it
preceded the call's return. So on a model without entities a target answering a declared but
wrong outcome, publishing a wrong payload or answering an external branch nobody arranged no
longer passes. A number ininputor a payload has one spelling (100, never100.0) and an
object there repeats no key; either is refused by name. The generated Go and TypeScript
concurrent explorers record all three on every call. A writer selects the lowest format its
operations need, so a history without them keeps format 1 or 2 and its bytes; format 1 and 2
documents still read, and each new field in them is refused by name
(#576).
Fixed
- Concurrent exploration (
ExploreConcurrent) arranges anexternal:cause through
ConfigureExternalOutcomewherever the sequential walk would, and a seed reported failing by a
multi-seed run replays alone, withExploreOptions.Seed, the command sequence it drew inside
that run (#576). - Synthesis arranges views bounded by period parameters. An aggregate range whose bounds sit on
two fields (started_at < param.to, ended_at > param.from) is arranged as periods at, across and
inside both edges, each edge row refuted by its own bound. A row-level view whoseTimestamp
parameter a top-level ordering compares with a storedTimestampfield is sent the stored
instant's admitting edge and read once more just past it, expecting the row absent. A view whose
filter a scenario cannot decide no longer drops that scenario: ESS-SYNTH-005 names the read it
skips (#569). - The retry disclosure cell of a create whose identity the caller supplies sends the origin's
invocation again and expects the declaredexisting_instance:refusal; without one it is refused
naming the identity input and the missing declaration, instead of "no established surviving
subject" (#574). - rustls 0.23.46, for RUSTSEC-2026-0346 to -0349.
Changed
- CI: each test shard gets three 30-minute attempts per nextest archive download, the last one
failing the job, so a slow artifact download no longer fails shards whose tests pass.