Skip to content

release: 0.3.2 - #20

Merged
wshallwshall merged 2 commits into
mainfrom
release-v032
Jul 28, 2026
Merged

release: 0.3.2#20
wshallwshall merged 2 commits into
mainfrom
release-v032

Conversation

@wshallwshall

Copy link
Copy Markdown
Collaborator

Patch release. Full notes in the CHANGELOG entry this commit adds.

Headline (adopter-facing, shipped in 0.3.1): messagefoundry init scaffolded a fail-closed provenance gate naming the retired private vault, so every project scaffolded by 0.3.1 gets a supply-chain check that fails on its owner's first CI run. Remediations are spelled out in the entry: re-run init, edit the one --repo argument, or set MEFOR_VERIFY_ENGINE=off.

Also carries: the vuln-metrics empty-window fix (#14), the idempotent GitHub release step (#15), and the load harness no-loss stranding bound (#17).

Version consistency was verified against a refreshed editable install rather than waiving the known post-bump metadata mismatch — test_version.py passes locally here (17 passed across test_version / test_release_pipeline / test_scaffold).

Tag to follow after this merges: annotated v0.3.2, message MessageFoundry 0.3.2, matching v0.3.1's style.

🤖 Generated with Claude Code

A patch release for one adopter-facing defect shipped in 0.3.1, plus two gates
that were passing without being able to fail.

The headline is the scaffolded supply-chain gate: `messagefoundry init` wrote a
fail-closed provenance check naming the retired private vault, so every project
scaffolded by 0.3.1 got a gate that fails on its owner's first CI run. The
CHANGELOG spells out the three remediations (re-run init, edit the one --repo
argument, or MEFOR_VERIFY_ENGINE=off).

Also carries the vuln-metrics empty-window fix, the idempotent GitHub release
step, and the load harness's no-loss stranding bound.

Version consistency verified against the refreshed editable install rather than
waiving the known post-bump metadata mismatch: test_version.py passes here.
@wshallwshall
wshallwshall enabled auto-merge (squash) July 28, 2026 18:11
@wshallwshall
wshallwshall disabled auto-merge July 28, 2026 18:13
The entry read 2026-07-27, copied from the 0.3.1 heading; the release commit is
dated 2026-07-28. release.yml generates the GitHub release notes verbatim from
this CHANGELOG section, so the wrong date would have been published as the
release notes rather than staying a local typo.
@wshallwshall
wshallwshall enabled auto-merge (squash) July 28, 2026 18:14
@wshallwshall
wshallwshall merged commit dd9e5e7 into main Jul 28, 2026
31 checks passed
@wshallwshall
wshallwshall deleted the release-v032 branch July 28, 2026 22:57
wshallwshall added a commit that referenced this pull request Aug 7, 2026
…napshot, file #1095 (#276)

Three corrections to the ledger's own accuracy, in one commit because they
cross-reference: #1094 and the ranking note both point at #1095, so splitting
them leaves an intermediate commit citing an item that does not exist yet.

1. #1094 CLOSED as already satisfied when filed; no work performed.

   Its premise is false on origin/main. The repoint it asks for merged as
   befe997 (PR #271) ONE COMMIT BEFORE the item itself landed (7ecff8a, PR
   #272) -- a filing race, not a wrong finding. Re-verified after both: CLAUDE.md
   section 12 now reads "BACKLOG #26 -- closed, so it lives in
   docs/archive/backlog/BACKLOG-CLOSED.md, not in the live ledger", same for #27.

   Banner flipped from the OPEN glyph to a CLOSED one -- replaced, not added, so
   the item still declares exactly one status. The analysis is kept: its point
   that no gate in this repo can catch the class is the argument any future
   check has to answer, and it is now attached to #1095 at true scale.

2. The "Connector & feature-breadth gaps vs. Mirth Connect" section marked a
   historical snapshot.

   All TEN backlog numbers it cites -- #7, #20-#27, #35 -- have closed and moved
   to the archive; none is in this file. So "#7 above" and "#35 below" are false
   directions out of the document, and "P1 -- close first" names work that
   shipped: #20 (FHIR, ADR 0022) and #21 (observability, PR #407). The section
   marks #24 and #35 SHIPPED inline, which makes the unmarked #20/#21 read as
   still open. A reader planning from this picks up finished work.

   Deliberately NOT repointed per-number. Every cited item is archived, so
   attaching an archive path to only the two decline-by-design lines would assert
   by contrast that the other eight are live. Uniform staleness is at least
   detectable; differentiated staleness is not.

3. #1095 filed for the systemic class. Number allocated via
   scripts/coord/alloc.ps1, never grepped.

   Measured on origin/main with parse_items (imported, not re-derived): of 129
   path-bearing BACKLOG.md citations, AT LEAST 69 distinct sites across AT LEAST
   35 files name the live ledger for an archived item. Plus 13 hrefs that do not
   resolve at all, 12 line anchors past EOF (file is 6318 lines; one cites 8429),
   and 31 in-range anchors that drifted onto unrelated text.

   The item's central point is DETECTABILITY, because getting this wrong means
   someone closes it with a linter having fixed a third of it: the 13 broken
   hrefs and 12 past-EOF anchors are catchable, but the 69 wrong-file citations
   and the 31 drifted anchors are NOT -- those links resolve perfectly, and what
   rots is the number or the line beside them.

   It also records that the test is "does the cited FILE contain the item", not
   "is the item CLOSED". Those differ: #1073 is closed and still legitimately in
   the live ledger, so a sweep keyed on closure would corrupt correct citations.

   Prior art found and named rather than duplicated: MIG-35 is already "the
   BACKLOG-reference classifier" folding into MIG-74 in the master test plan
   (:128). The item notes MIG-74 as worded -- "every doc path resolves" -- would
   pass the largest class untouched, since those paths do resolve.

Verification:
  - parse_items diffed before and after: exactly two items changed state, #1094
    (open -> closed) and #1095 (new). No unintended banner churn.
  - backlog_status_check.py: OK, 365 items, each declaring exactly one status.
  - All 7 link targets introduced were resolved from docs/, with a known-missing
    path run through the same checker to prove it can report a miss.
  - The MIG-74 quote was confirmed verbatim in the source file, not paraphrased
    from an agent's summary.
  - Line endings normalized to CRLF to match the file; diff stayed at 50/2
    rather than whole-file churn.

Not included: the ~69-site sweep itself and any gate. Those are #1095's scope,
and a partial repoint is worse than none for the reason given in item 2.
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