Skip to content

0.61.0

Choose a tag to compare

@b10x-bot b10x-bot released this 16 Oct 11:54
· 965 commits to main since this release
6ae2fe1

Added

  • ess generate types --target rust and ess generate schema types-bundle take a repeatable
    --rust-raw-json <type> or <type>.<field>: the named Json values are realized as
    EssRawJson, a Box<serde_json::value::RawValue> with text equality, so their bytes round-trip
    with or without exact-numbers. A location naming no selected type or field, or no Json value,
    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_response field, 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 record input (the command's input as sent),
    events (each event a returned answer published, in order, with its payload) and arranged
    (the external: branches its client arranged before sending it). ess verify conform check-history steps 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 in input or a payload has one spelling (100, never 100.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 an external: cause through
    ConfigureExternalOutcome wherever the sequential walk would, and a seed reported failing by a
    multi-seed run replays alone, with ExploreOptions.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 whose Timestamp
    parameter a top-level ordering compares with a stored Timestamp field 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 declared existing_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.