Skip to content

0.28.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 19:06
· 2485 commits to main since this release

Added

  • ess/6 models input eligibility beside an independently arranged external cause,
    and bounded enum subject history with explicit silent preservation. Conformance synthesis
    observes history separately from lifecycle and keeps same-state histories distinct.
    Suite formats 10/11 add no-error assertions and actual subject snapshots; the Rust, Go and
    TypeScript runners reject missing/duplicate subjects and changed values. Legacy documents
    retain their formats and reject the new vocabulary. The published source schema is regenerated.

  • website/docs/reference/spec-versions.md — what each format version number changed.
    Eleven format families have been revised past their first version, and ess/5 is the fifth
    number in one of them: nothing public said what any of them meant. The page carries one row per version, the release that introduced
    it, and what an older reader does with a newer document. Two facts a reader would otherwise
    hunt for: ess/3 and ess/4 both arrived in 0.23.0, and ess-conformance/6 through /9 did
    too, so a build advertising SUPPORTED_SUITE_FORMATS = [1..9] is not the record of nine
    releases.

  • WHATS-CHANGED.md, rendered from changes/*.yaml by cargo xtask whats-changed.
    CHANGELOG.md records every change at the level the change was made, which is 1466 lines and
    the wrong record for somebody deciding whether a release is worth adopting. The fragments
    already carry that judgement — a title, a summary, a kind and an impact — and until now they
    were write-only from this repository's side: nothing here read them and nothing here checked
    them.

  • beyond10x.github.io/ess/ serves this repository's own documentation site again.
    /ess/ has answered with a redirect to the unified site since the migration. The unified site
    renders docs/**/*.md, blog/*.md and static/**, so the browser lab, the landing page and
    the per-release index had no public address, and docs/examples/specification-to-contracts.md
    is excluded from the bundle outright because its MDX imports a React component.

    pages.yml already built the site on every push to main; it now also uploads it as an
    ordinary artifact. The generated .github/workflows/b10x-docs-site.yml fires when that build
    finishes and hands beyond10x/website the artifact of that exact run, which deploys it. A
    documentation change reaches /ess/ when it reaches main, with no dispatch and no wait on the
    organization's publication cycle. This repository still deploys nothing itself and holds no App
    credentials, and .github/workflows/b10x-docs-pages.yml is gone, because one Pages deployment
    answers /ess/ and two callers would race for it.

    The nineteen documents that both sites render carry <link rel="canonical"> at their
    /docs/ess/ address. /ess/lab, /ess/releases and the worked example, which the unified site
    does not carry, stay canonical to themselves.

  • Six release notes, for the nineteen minors that had none. /ess/releases stopped at 0.7.1
    on 21 August; 0.8.0 through 0.27.0 went unwritten. One note per release would have been nineteen
    pieces, several about a release whose only content is a fix, so the catch-up is thematic: a
    deployment described (0.8–0.9), the claims a generated scenario could not make (0.10–0.11), four
    areas and a command line (0.12–0.14), the scenarios an author writes (0.16–0.18), a pass over
    nothing (0.19–0.21), and the names nobody may invent (0.22–0.27). /changes/ keeps the
    per-release record; these say what the releases were for.

  • cargo xtask docs refuses release notes that have stopped. The newest note's release_tag
    may trail the newest release by at most BLOG_LAG minors, three today. Not one note per release,
    because a gate that fires on a release nobody wanted to write about is a gate somebody silences —
    but nineteen is not a gap, it is a stop, and nothing noticed.

  • cargo xtask docs, a checker for the release claims the public documents make.
    where-this-stands.md carries one generated block and the block was current at every release;
    everything a person wrote beside it had drifted five releases. The lane reads the three
    SUPPORTED_* constants and CHANGELOG.md and refuses three things: a supported format version
    with no recorded release, a supported version named in neither reference page, and a document
    that calls a released format unreleased. It also refuses an install walkthrough that names a
    version other than the newest release. It joins projection-check.

  • Seven changes/*.yaml entries, for 0.20.0, 0.21.0, 0.22.0, 0.23.0, 0.25.0, 0.26.0 and
    0.27.0. Atlas publishes that directory as the organization's change feed, so those seven
    releases were ones nobody outside this repository heard about.

Changed

  • cargo xtask release status checks two more things, in the same shape and the same report.
    A pushed tag must have a dated CHANGELOG.md section — release notes renders a release body
    from that section, so a tag without one can be neither published nor backfilled, and until now
    the section was verified for the workspace version alone. And every minor release must have a
    changes/*.yaml entry, with the one exemption named in source and the reason stated. The
    command now reports every class of defect it found rather than stopping at the first, because
    stopping at the first is how four versions reached this state unnoticed.

  • cargo xtask whats-changed --check joins projection-check, so a fragment edited without
    re-rendering fails the gate. It also enforces the 360-character summary bound that the public
    Docs System validator applies — a bound this repository could not see before, and which refused
    changes/source-driven-realization-0.19.0.yaml after its documentation bundle had already been
    built.

Fixed

  • The published documents said ess/2, ess/3, ess/4, ess-diff/3, ess-diff/4,
    ess-conformance/6–/9, ess-scenario/2 and ess-target-failure/3 were unreleased.
    They
    shipped in 0.20.0 and 0.23.0. Twenty-nine sentences across six pages carried the word; every one
    now names the release that introduced the thing it describes. The same held for the
    ess-inputs.yaml manifest, generated-output ownership, the output-management commands and
    ess verify bindings, all 0.21.0, and for suite/5, the original-byte carrier and paired replay,
    also 0.21.0.

  • ess/5 and ess-diff/5 were supported and documented nowhere. reference/formats.md
    stopped at ess/4 and ess-diff/4; guides/write-a-specification.md had no section on a
    variant carrying its own wire spelling. Both formats now have rows, and the authoring guide has
    the section.

  • The install walkthrough downloaded 0.13.2, fourteen minors behind. getting-started.md,
    examples/specification-to-contracts.md and guides/write-a-specification.md all named it as
    the current tag.

  • status/where-this-stands.md reported 0.22.1 as the latest release. It reports 0.27.0 and
    its assets, dated 20 September 2026.

  • Every published document declares a sidebar_position. The unified site generates its sidebar
    from the directory tree and cannot see website/sidebars.ts, so the order a reader met there
    was alphabetical rather than the authored one.

  • Three version tags existed only in one clone and were never pushed: 0.3.0, 0.5.0 and
    0.15.0. task release-status reads git ls-remote, so it never saw them, and the earlier
    note calling them "pushed tags with no release" was wrong about why. They are deleted locally;
    their commits are on origin/main and their changelog sections stand as the record. The code
    each names shipped in 0.4.0, 0.5.1 and 0.16.0.

  • Four releases that promised a download and carried none now carry one. 0.1.1, 0.2.0,
    0.2.1 and 0.4.0 predate the packaging job, which arrived in 0.6.0, so each had a release
    body and no archives. A workflow_dispatch backfill gated and packaged each tree at its own
    commit; every one now carries the four archives and SHA256SUMS.

Known

  • Three trees cannot pass today's gate, so three backfills failed. The release workflow's
    dispatch path runs the current ci.yml against the tagged source, and current is not what
    September's source was written against.

    Tag Run What refused
    0.1.0 35512364896 task site-lab, exit 200 — the browser lab at 2026-09-01 source
    0.21.0 35511832399 consumer_coverage::metadata::tests::current_compiled_provider_executes_one_guard_and_binds_its_opaque_proof_to_this_run
    0.22.0 35512351961 five cases in consumer_coverage::enforce::metadata_tests

    0.1.0 and 0.22.0 keep a published release with no archives; 0.21.0 keeps a tag with no
    release. None of the three tags is touched — deleting a tag that has been public for weeks
    breaks whatever pins it, to tidy a report. 0.21.0 is named in WITHOUT_RELEASE in
    crates/edge/ess-xtask/src/main.rs with that reason, so release status reports it as
    exempted rather than as an open defect.

  • 0.17.0's section says "The release workflow for it produced no assets" and that is no
    longer true
    — the release carries all five. The rest of that section stands: the tag holds
    one of the two features written under it, and both first ship in 0.18.0.

  • 0.17.0 is the one minor with no changes/*.yaml entry, named in WITHOUT_FRAGMENT with the
    reason. Its two features are recorded under 0.18.0, which is where they shipped.