release: engine 0.5.0 - #1861
Conversation
Bumps __version__ and the toolkit and harness pins to 0.5.0, assembles the changelog fragments, and renames [Unreleased] to [0.5.0]. Tag v0.5.0 on the merged commit once its push run on main is green.
|
QA: code-review subagent xhigh, head 185d0ac, verdict FIX FIRST. (1) tests/test_install_docs_pin_the_current_version.py fails 6/57: install-guide pins still name 0.4.0. (2) Console 0.3.0 does not work with an engine newer than 0.4.0 (webconsole CHANGELOG [Unreleased]), so console 0.4.0 must release in lockstep. (3) The [0.5.0] notes section is about 233k characters; GitHub caps a release body at 125k, so gh release create would fail at tag time. Enqueue this PR ALONE: a fragment-carrying PR ahead of it in the same group fails its pr-check. A Builder is fixing all three on this branch. |
The console's Unreleased entry said it needs an engine newer than 0.4.0
and that console 0.3.0 does not work with that engine. So the console
is cut in the same pull request as engine 0.5.0, following
packaging/messagefoundry-webconsole/RELEASE.md.
- __version__ 0.3.0 -> 0.4.0 (step 0).
- SUPPORTED_ENGINE_SEAMS is unchanged at {10a6cc7c95459dcc}, which is
the ENGINE_UI_SEAM engine 0.5.0 ships (step 0).
- Console changelog: Unreleased becomes "[0.4.0] - 2026-09-30 - Early
Access", quoting the shipped seam, under a fresh Unreleased that keeps
the pointer line. Compare links gain a webconsole-v0.4.0 row.
- Engine floor: messagefoundry>=0.5.0, no ceiling, no marker (step 2).
The release-webconsole job refuses a wheel without one.
- Console README and docs/WEBCONSOLE-PACKAGE.md say the floor exists.
- Engine changelog: the seam entry names the shipped value and console
0.4.0 instead of saying the value can still move.
Owner steps left: step 1 (engine [webconsole] extra) and step 3
(re-lock) need console 0.4.0 on PyPI first; step 6 tag
webconsole-v0.4.0 after engine v0.5.0 is on PyPI.
tests/test_install_docs_pin_the_current_version.py failed 6 of 57 on the release branch: the guides still pinned engine 0.4.0 after __version__ moved to 0.5.0. - INSTALL-GUIDE: the pip pin, the early-access note, both $V verify blocks, the requirements.txt example and the console pin. - EARLY-ADOPTER-GUIDE: the pip pin, its prose mentions and $V. - USER-GUIDE: the engine, harness and console pins. - SERVICE and README: the pair is console 0.4.0 with engine 0.5.0, and README's without-a-console bullet now covers console 0.3.0.
The engine release step feeds this version's CHANGELOG section to `gh release create --notes-file`. The 0.5.0 section is about 233,000 characters. GitHub answers a longer body with "body is too long (maximum is 125000 characters)", and the step sits before the PyPI publish, so the v0.5.0 tag would have stopped there. - scripts/release/release_notes.py rewrites notes.md in place. A body within 120,000 characters is left as it was. A longer one keeps its opening lines, whole, and ends with a link to the full section in CHANGELOG.md at the tag. - Both the engine and the console release steps call it between the awk extraction and the first gh release call. No step is added; the event and ref guards, Sigstore and SLSA steps are untouched. - tests/test_release_pipeline.py section 10 checks the call sits in that order in every step that uses --notes-file, runs the engine step's own lines under bash on an over-long fixture (with a control arm that proves the fixture is over GitHub's limit), and checks the cut lands on a line end at or under the limit.
From the code-review subagent's pass over this branch: - The floor does not make pip refuse an older engine. pip upgrades the engine instead, and an unpinned upgrade takes the newest release, whose seam may differ. The console README and changelog note now say that. - The 0.4.0 BREAKING entry said the seam value "can move again before the release". It now names 10a6cc7c95459dcc. - docs/WEBCONSOLE-PACKAGE.md still said the package on main declares a bare dependency, and RELEASE.md said neither package sets a floor. Both now say the console sets one from 0.4.0 on. - The pyproject comment said the floor landed in the commit that bumps the engine; it landed in the same pull request, one commit later.
The code-review subagent measured the first cut on the real 0.5.0 section: keeping the first 120,000 characters dropped both Security blocks and 54 of the 78 BREAKING markers, and split an entry mid-sentence. - release_notes.py now reduces an over-long body to its headlines: every heading, and each top-level entry's bold title with its body dropped. The 0.5.0 section comes to about 23,000 characters, keeping 73 of 78 BREAKING markers (the other 5 sit in entry bodies). Only if the headlines still do not fit is the text cut, at a line end. - The two workflow calls were one line with a run of spaces where the backslash continuation had collapsed. They are two lines again. - Tests: the executed check now runs the console step too, the fixture puts a BREAKING Security entry last so a plain cut would lose it, and the order check also refuses any use of notes.md after the bound other than --notes-file.
# Conflicts: # docs/EARLY-ADOPTER-GUIDE.md
…now ships Merging origin/main brought two things the release must carry: - changelog.d/1504.removed.md, a new fragment (BACKLOG #1504). `changelog_fragments.py assemble` put it under Unreleased; it now sits under [0.5.0] as its only Removed block, and Unreleased is empty again. - PR 1862 moved the engine UI seam from 10a6cc7c95459dcc to 32ad621e6081555e, with SUPPORTED_ENGINE_SEAMS. The engine changelog, the console [0.4.0] entry and the console README now quote 32ad621e6081555e, and the console changelog notes why it moved.
Round 2 of the code-review subagent, two of its nits: - headlines() kept only headings and entry titles, so a shrunk console page would lose the "Requires engine X. Supported engine UI seam" preamble. Top-level paragraphs are now kept whole. - The footer said "each entry's title only" even when the titles were then cut too. It now adds "and not every title" in that case. Declined, as latent and needing malformed input: a `**` inside a code span in a title, a `#` line inside a code fence, `*` or numbered top-level bullets, and an unclosed title spilling into a nested bullet.
Main moved again during this PR (PR 1858, the 2026-09-30 dependency batch) and brought two fragments: annotated-types-cap-lift.changed.md and hl7apy-choice-groups.fixed.md. `changelog_fragments.py assemble` put them under Unreleased; they now sit at the top of [0.5.0], and Unreleased is empty. The engine UI seam did not move (32ad621e6081555e).
|
QA: code-review subagent xhigh, head 7e2ba13, verdict PASS WITH NITS (two rounds, nothing blocking); console 0.4.0 cut in lockstep with engine floor >=0.5.0 and seam 32ad621e6081555e, install pins at 0.5.0/0.4.0, release body shrunk to entry titles under 120,000 chars for both engine and console release steps. Rounds reviewed 185d0ac..96d6923; the two later commits only merge origin/main and move its fragments under [0.5.0]. |
Final merge of origin/main (57c4063) before the release. `changelog_fragments.py assemble` folded 17 fragments into Unreleased. They now sit at the top of [0.5.0], and Unreleased is empty. `check --no-pending` and `pr-check` pass. The engine UI seam did not move (32ad621e6081555e). The console changelog entries main added under the console's [0.4.0] Changed block ship in 0.4.0, which is where they landed. release_notes.py on the new [0.5.0] section: 256,115 characters shrunk to 25,617, with all 78 BREAKING markers kept.
From the code-review subagent's pass over the final merge: - README's supply-chain note named one engine SBOM. The release now signs and ships two, Linux- and Windows-resolved (main's PR 1849). - docs/MENTAL-MODEL.md still pinned messagefoundry==0.3.2 in its install line; it now pins 0.5.0. The pin test does not read that file. - The 0.5.0 section is now about 256,000 characters, not 233,000. The workflow comment, the release_notes.py docstring and the test docstring say so.
|
QA: code-review subagent xhigh, head 9039545, verdict PASS WITH NITS (one round over 7e2ba13..HEAD, nothing blocking); merged main 57c4063, folded 17 fragments under [0.5.0] (set-compared: none lost or duplicated), seam unchanged at 32ad621e6081555e, release body 256,115 -> 25,617 chars with all 78 BREAKING markers; three stale texts fixed in 9039545. |
The tags will be cut on 2026-10-01, so both release headings move from 2026-09-30. No other text quotes either date beside these versions; the 2026-09-30 in tests/test_changelog_fragments.py dates a synthetic 0.4.1 fixture and stays.
Release pull request for engine 0.5.0. Bumps
__version__, the toolkit pin and the harness pin; assembleschangelog.d/intoCHANGELOG.md; renames[Unreleased]to[0.5.0]and adds a fresh empty one; adds the[0.5.0]compare link.After merge: tag
v0.5.0on the merged commit once its push run onmainis green. The first upload claimsmessagefoundry-toolkiton PyPI.Docs install pins (
INSTALL-GUIDE,EARLY-ADOPTER-GUIDE,USER-GUIDE,READMEpairing note) still say 0.4.0 and follow in a separate PR.