Merge the duplicated Unreleased changelog sections, and backfill 47 missing entries - #1096
Merged
Merged
Conversation
…s it normalizeXPathEnumRefs' doc comment explains that the regex turned an already-quoted enum ref into a DOUBLED quote, and gave `''Value''` as the example. gofmt rewrote that to a curly closing quote, destroying the one thing the sentence exists to show: in a doc comment `''` is the legacy godoc digraph for a right double quote. Moved into an indented code block, which is a doc-comment code block and so exempt from the digraph rewriting. Verified against a standalone probe first, rather than assumed: the inline spelling is rewritten, the indented one is untouched, and gofmt is now idempotent over this file. This was the only gofmt-unclean file in the repo, and it was on main -- see the fmt-check commit for why nothing caught it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`lint-go: fmt` ran `go fmt ./...`, which edits in place and then exits 0. The target therefore could not fail on an unformatted file, in CI or locally, and main carried one indefinitely. Locally it was worse than useless: every `make build` silently dirtied the working tree, which is a trap for `git add -A`. lint-go now depends on fmt-check, which reports and fails. `make fmt` keeps rewriting, as the fixer. Two choices worth keeping: Tracked files only (git ls-files), so the ANTLR parser under mdl/grammar/parser -- generated at build time, deliberately not committed -- is excluded without a path filter that rots. An empty file list FAILS. A check that inspected nothing and passed is worse than no check, and that is the shape of the bug it replaces. Proven with controls, not just a green run: passes on the clean tree, fails naming the file when the preceding commit's fix is reverted, passes again when restored, and the empty-list guard fires. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ll 47 entries The [Unreleased] section had drifted twice over, both from the same bad merge, and both invisible to anything that runs in CI. STRUCTURE. It carried two `### Added` blocks and two `### Fixed` blocks, a duplicated `run --local --watch` entry, and — inside that entry — a duplicated paragraph. Neither duplicate was byte-identical to its twin: one copy of the entry had lost its four-paragraph body, and the later copy of the paragraph carried a clause the earlier one did not. Collapsing by first-seen would therefore have deleted content, which is exactly what the first attempt at this did; both are collapsed keeping the fuller text. COVERAGE. Grepping the section for each of the 117 non-merge commits since v0.21.0 found 47 with no entry at all, including every large one: offline synchronization (the SYNC block, ON SYNC ERROR, the catalog tables), SOAP request bodies and SOAP on the codec engine, MERGE/JOIN join points, DESCRIBE MICROFLOW ... NORMALIZED, view-entity associations, brain brief, SHOW GLYPHS, and DROP ... IF EXISTS. A reader of the changelog would have concluded none of it shipped. Each new entry is written from its commit's own body, so the measurements, CE numbers and controls are the ones that were actually taken. Existing entries are reused verbatim and keep their relative order; new ones are placed at roughly their commit's recency. Now 17 Added, 5 Changed, 60 Fixed. Verified that every line removed by this change reappears elsewhere in the file (the diff is pure moves plus the three intended dedups) and that the [0.21.0] section onward is byte-identical, md5 before and after. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BNDe35kDNsMX5cz4Ahn4rk
Verified every `mendixlabs/mxcli#N` in the backfilled entries against the body of the commit each entry was written from. Three did not match, all introduced by the backfill itself: - the pluggable-property casing fix is #1069, not #1080 (#1080 is diff-local, and already had its own entry citing it correctly); - the MDL-WIDGET11 design-properties fix cites no issue — #999 belongs to the MDL-WIDGET27 entry beside it, which had it right; - the legacy-engine access-rule reconcile cites no issue either. The other 44 entries check out. A wrong number here is worse than none: it closes the wrong issue when someone greps the changelog for what shipped. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BNDe35kDNsMX5cz4Ahn4rk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
[Unreleased]section ofCHANGELOG.mdhad drifted twice over, both from the same bad merge, and both invisible to anything that runs in CI.Structure
It carried two
### Addedblocks and two### Fixedblocks, a duplicatedrun --local --watchentry, and — inside that entry — a duplicated paragraph.Neither duplicate was byte-identical to its twin, which is the part worth knowing: one copy of the entry had lost its four-paragraph body, and the later copy of the paragraph carried a clause the earlier one did not. Collapsing by first-seen would therefore have deleted content — which is exactly what the first attempt at this did, caught by the verification below rather than by care. Both are now collapsed keeping the fuller text.
Coverage
Grepping the section for each of the 117 non-merge commits since v0.21.0 found 47 with no entry at all, including every large one:
SYNC (…)block,ON SYNC ERROR THROW|CONTINUE,CATALOG.OFFLINE_ENTITY_CONFIGSand thesyncreference edgesend mapping), andcall web serviceon the codec enginemerge <label>/join <label>join pointsDESCRIBE MICROFLOW … NORMALIZEDmxcli brain brief,brain staged --slice,--jsonSHOW GLYPHS/DESCRIBE GLYPH+ MDL078DROP USER ROLE … IF EXISTSA reader of the changelog would have concluded none of it shipped.
Each new entry is written from its own commit's body, so the measurements, CE numbers and controls are the ones that were actually taken rather than reconstructed. Existing entries are reused verbatim and keep their relative order; new ones are placed at roughly their commit's recency.
The section is now 17 Added, 5 Changed, 60 Fixed — 82 entries.
Verification
[0.21.0]section onward is byte-identical, md5 before and after, so no released section was touched.make sync-changelogandmake buildpass; the embeddedcmd/mxcli/changelog.mdis in sync.Note on scope
This branch also carries two small commits from the same session that are a separate concern from the changelog —
fix(microflows): write the doubled-quote example where gofmt preserves itandfix(build): make lint-go verify formatting instead of rewriting it. They were the only gofmt-unclean file in the repo and the missing check that let it sit on main. Happy to split them into their own PR if you would rather they landed separately.🤖 Generated with Claude Code
https://claude.ai/code/session_01BNDe35kDNsMX5cz4Ahn4rk