0.24.0
Added
-
A release workflow, so a tag cuts its own GitHub Release.
.github/workflows/release.ymlfires on a version tag, runsci.ymlitself — called rather than copied, so a tag cannot ship against a shorter gate thanmaindoes — and creates the release with the tag's own section of this file as its notes.No binaries are attached. Every release this repository has cut carries none, and
protocolis built from source (cargo build --release -p protocol-cli). Adding archives later is a matrix job beside this one. -
cargo xtask notes <version>, which prints one release's notes: its CHANGELOG section, reflowed. Release notes render as GFM, where a single newline becomes a<br>, so a file hard-wrapped at 100 columns arrives broken after "added" and before "the", in spots no author chose. The file stays wrapped — that is the right shape for something reviewed in a diff — and only the notes are joined.cargo xtask notes --self-testholds the eight shapes the reflow must not damage: fenced code, tables, headings, blockquotes, list-item boundaries, paragraph joining, blank-line separation, and a line ending in two spaces. It runs in the workflow before the notes are generated, because the failure it catches is silent — nobody re-reads a release they already cut.
Fixed
-
The delivered-waves check reads the tags when the run is on a tag. The first run of the new release workflow failed here, against a
docs/status.mdthat was correct in the commit it was checking. The job already asked forfetch-depth: 0andfetch-tags: true, and on a tag ref — which is howrelease.ymlcalls the gate — that still left the other tags behind, so a 34-row record was compared against a near-empty tag list. An explicitgit fetch --tags --force --prunedoes not depend on which ref triggered the run, and the step now prints how many tags it can see. -
A deliberate line break is no longer eaten by the reflow. A line ending in two spaces is Markdown's own request for a break; the reflow ended the paragraph there but dropped the two spaces, leaving the break standing on the very GFM quirk the reflow exists to remove. The spaces are kept now. Found by the self-test above on its first run.
Documentation
-
The website describes the tooling as it now is. It had drifted badly: since
0.13.0the repository gained 7,805 lines and the site gained three. What changed:page what it now says Lifecycles, decided as data (new) the ladder is a YAML file, decided by entity-core; evidence-gated and date-gated rungs; the journal; and what that kernel explicitly does not doCLI reference protocol reverse— four verbs, 2,782 lines, and no mention on the site at all until now — plusartifact historyandartifact evidenceWhere this stands current as of 0.23.2rather than0.10.0-horizons-dogfood-lab; the ladder, the engine's four new mechanisms, and adoption from the other endRoadmap the delivered table ran to 0.10.0and now runs to0.23.2Limitations the markdown store does have a journal and a history since 0.19.0; the contract gap is unchanged and says soVocabulary artifact kinds and statuses are open to authors, and why evidence_kindsis closed/releasesone post per release — all 33 tags, plus this one. Three existed; 30 were written for this release -
A release post says which release it is. Each carries
release_tagandrelease_commitin its front matter, and its filename carries the hour and minute, sowebsite/blog/sorts in release order in an editor and underlsalike — several releases were cut on the same day, and a date-only prefix put them in alphabetical order instead. The timestamp is the tagged commit's committer date rather than the tag's own: the first three tags were cut in one batch and share a creation timestamp to the second, which sorted two releases wrong. File modification times are set to match. -
Every release now has a page explaining, in prose, what changed from the one before it. The site had three posts covering
0.5.0,0.6.0and0.7.0, and thirty tags with nothing. The backported posts are marked as written retrospectively and carry no command output: the code has moved on, and inventing a transcript for a released version would be worse than describing it. Posts for0.13.0onward carry real output. -
Counts that had drifted, each re-derived from the thing it describes: top-level CLI verbs 17 → 20; artifact lifecycles 8 → 12; this repository's own plan 59 → 101 artifacts; the document tree 45 → 49 files; the gate ten → twelve steps, in
AGENTS.md,README.md,docs/status.md,docs/guide/adopting.mdand four website pages.AGENTS.mdalso still claimed the billing suite runs 27 scenarios where its own guard asserts 29. -
The boundary with
metaharnessis written down rather than remembered. Two rules, because both were being reconstructed differently each time they came up: harness-specific transcript readers belong there and the normalisedmetaharness.event/1stream is the production path here (the two direct vendor readers that predate it are named, with what each is for and what it is checked against); and the evaluation machinery and corpus are here while the paid runs and their results are there — a finer split than "evals moved", and the table now says which is which.