Skip to content

Close out the v0.6.0 publication - #243

Merged
docushell-dev merged 2 commits into
mainfrom
chore/v0-6-0-publication-closeout
Sep 7, 2026
Merged

Close out the v0.6.0 publication#243
docushell-dev merged 2 commits into
mainfrom
chore/v0-6-0-publication-closeout

Conversation

@docushell-dev

Copy link
Copy Markdown
Collaborator

v0.6.0 is live on all six surfaces. This moves the repository from describing 0.5.0 as published to describing 0.6.0, and applies the wording packet approved 2026-07-31 for exactly this moment.

Every claim verified against the live registries before landing — not asserted from the tree.

A live public surface was wrong

The release body still read This release prepares:, The intended v0.6.0 release surfaces are:, and listed both checksums as pending. docs/releases/v0.6.0.md is the canonical body, so it is rewritten to published tense with the four real digests and pushed to the release.

This CHANGELOG already records the identical defect at v0.5.0, whose body read "release candidate" until retrofitted. It recurred because release notes are written before publication and nothing rereads them at publication.

A prior false claim, corrected rather than repeated

The ledger declared ethos-package-*-0.4.0 and -0.5.0 closed out against a record that never mentions package tags — and those six tags do not exist, locally or remotely. Only the 0.1.0, 0.1.2 and 0.3.0 triples were ever created. check_release_state.py string-matches declared names against release.rust_crates and never consults git, which is how it survived two releases.

The 0.6.0 triple is created here, and the closeout record states the gap rather than inheriting it.

Gates stop being hand-pinned

gate before after
test_v0_6_0_version_activation.py 6th hand-written generation, premise now false retired for test_version_activation_lockstep.py, reading the ledger
test_public_surface_posture.py transcribed 0.5.0 literals ledger-derived + exact-set negatives
test_execution_status.py transcribed the v0.5.0 status prose ledger-derived
actions/verify/README.md "the fixed v0.4.0 Linux x64 release archive" version-neutral

Both durable assertions from the retired module survive — core metadata in lockstep, and the npm payload's four version fields moving as one set with a recorded boundary exception. That second one is the guard that forced 1d23604's revert; retiring it without replacement would have reopened the defect.

Honest limitations recorded, not smoothed over

  • The eight published *.inventory.json sidecars still read draft_not_release_ready — the writer hard-codes it and cannot describe an approved artifact
  • The closeout binds two source commits, because the npm payload landed two commits after the tag
  • Consumer acceptance is bound to 0.5.0 bytes, not 0.6.0
  • Release-prep §5.1 was removed by decision, not satisfied

Verification

make release-gates exits 0, including release-live-state-check against the real registry. npm test and the Action contract pass.

🤖 Generated with Claude Code

docushell-dev and others added 2 commits September 7, 2026 20:53
v0.6.0 is live on all six surfaces. This moves the repository from describing 0.5.0 as published
to describing 0.6.0, and applies the wording packet approved on 2026-07-31 for exactly this moment.

Every claim was verified against the live registries before landing: three crates on crates.io
(none yanked), the wheel and sdist on PyPI byte-identical to the local build, the npm tarball
downloaded and its vendored binaries confirmed byte-identical to the release archives with the
darwin binary reporting `ethos 0.6.0`, and the GitHub Release marked latest with 16 assets whose
checksums match the promotion record.

Corrects a live public surface. The release body still read "This release prepares:", "The
intended v0.6.0 release surfaces are:", and listed both checksums as "pending — recorded here from
the approved archives before publication". docs/releases/v0.6.0.md is the canonical body, so it is
rewritten to published tense with the four real digests and pushed to the release. This CHANGELOG
already records the identical defect at v0.5.0, whose body read "release candidate" until it was
retrofitted; it recurred because release notes are written before publication and nothing rereads
them at publication time.

The notes now also state that the eight published *.inventory.json sidecars still read
draft_not_release_ready. write_release_artifact_inventory.py hard-codes that and cannot describe an
approved artifact, so without the caveat the machine-readable evidence attached to the release
contradicts the release.

Retires test_v0_6_0_version_activation.py for test_version_activation_lockstep.py, which reads the
activated and published versions from the ledger. It was the sixth hand-written generation of one
gate and its premise is now false. Both durable assertions survive: core metadata in lockstep, and
the npm payload's four version fields moving as one set with a recorded boundary exception — the
guard that forced 1d23604's revert, which retiring without replacement would have reopened.

test_public_surface_posture.py and test_execution_status.py now derive every version literal from
the ledger instead of transcribing it, and the posture gate gains exact-set assertions that no
install command in README.md names any version but the published one. The retired module held the
only negative assertions against stale install strings.

The published GitHub Action pin follows the ledger to v0.6.0. actions/verify/README.md claimed the
Action downloads "the fixed v0.4.0 Linux x64 release archive" — three releases stale, asserted by
nothing — and is now version-neutral.

The closeout record corrects a prior false claim rather than repeating it: the ledger declared
ethos-package-*-0.4.0 and -0.5.0 closed out against a record that never mentions package tags, and
those six tags do not exist on either side. check_release_state.py string-matches declared names
against release.rust_crates and never consults git, which is how it survived two releases. The
0.6.0 triple is created here. The record also binds two source commits rather than one, because the
npm payload landed two commits after the tag, and states plainly that consumer acceptance is bound
to 0.5.0 bytes and that release-prep §5.1 was removed rather than satisfied.

make release-gates exits 0, including release-live-state-check against the real registry. npm test
and the Action contract pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: docushell-dev <hello@docushell.com>
Moving the Action pin to v0.6.0 broke it, and CI caught it because
`released-cli-action-dogfood` executes the Action for real rather than only asserting on its yaml.

`run_verify.py` read `checks` at the top level of the verification report. Since 0.6.0 every
verdict-bearing command emits an in-toto Statement and the report the Action parses is its
`predicate`; README.md documents exactly this under "Upgrading from 0.5". So the Action failed with
`verification report must contain a checks array` against the very CLI it pins.

It now unwraps the statement when `predicate` is present and no top-level `checks` is, and reads
the bare report otherwise. Detected by shape rather than by version, because the Action only knows
which binary it downloaded. Verified against a real 0.6.0 report: the CLI emits `_type`,
`predicate`, `predicateType`, `subject` with no top-level `checks`, and run_verify.py now exits 0.

No test covered the report shape, which is why a documented breaking change reached the published
Action unnoticed. The dogfood job is what caught it.

Also derives test_npm_binary_package_scaffold.py's published-npm assertion from the ledger and its
vendored-CLI assertion from the payload manifest. The two differ during a refresh window, and
transcribing either made the gate need a hand edit every release.

make release-gates, the Action contract, the Action unit tests, and npm test all pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: docushell-dev <hello@docushell.com>
@docushell-dev docushell-dev self-assigned this Sep 7, 2026
@docushell-dev
docushell-dev merged commit 1101f0b into main Sep 7, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant