Re-probe BUG-76 and BUG-121 on mxcli v0.21.0 — both still open, and BUG-76's diagnosis was wrong - #29
Merged
Conversation
Both are still open on mxcli v0.21.0 (released 2026-09-06), probed on a throwaway project copy against Mendix 11.13.0. BUG-121: the same script executed through v0.20.0 and v0.21.0 produces a byte-identical workflow unit — zero diff from bson dump after blanking the $ID GUIDs — so the runtime behaviour cannot have changed. The re-probe also corrects the entry's own title: the path contents ARE present in the stored BSON on both versions, so "writes the paths but not their contents" names the symptom, not the mechanism, and the mechanism is still unidentified. BUG-76: the "unconditional storage corruption" diagnosis in this entry is wrong. It was corrected on a client project on 2026-09-02 but never promoted here. It is a pincer between two spellings: bare outcomes pass mxcli check and make the model unloadable, while qualified outcomes are rejected by rule MDL-WF03 at check and load clean via exec --no-check with one CE0117 for the empty expression. mxcli mandates the spelling the loader rejects and rejects the spelling it accepts. That implies two independent fixes, not one. The issue is already filed upstream as mendixlabs/mxcli#1031, so this goes into the draft as a comment to post rather than a rewritten body. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WnXVbv8EzsZJwy713L6WVw
…arvest-2026-09-07 # Conflicts: # CHANGELOG.md # bug-logs/pending-github-issues/bug121-parallel-split-writes-paths-without-contents.md
The three master-side notes that recorded BUG-76 as "shape-dependent, not isolated" now cite the 2026-09-02 re-diagnosis (bare vs qualified outcome spelling) and the 2026-09-08 v0.21.0 re-probe carried by this branch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…arvest-2026-09-07 # Conflicts: # CHANGELOG.md
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.
Direct lane (changes to
skills/,bug-logs/,bin/,project-bin/,project-tests/, pipelines)What changed and why (one paragraph):
mxcli v0.21.0 shipped on 2026-09-06, and a project that has been building around two workflow
blockers needed to know whether it could stop. It cannot: both are still open, and this PR records
that with the evidence, plus one correction to a diagnosis this log has been carrying since
2026-08-13. BUG-121 (
PARALLEL SPLIT) is unchanged in the strongest sense available — the sameprobe script executed through v0.20.0 and v0.21.0 on two separate throwaway copies produces a
byte-identical workflow unit, zero diff lines from
bson dumpafter blanking the$IDGUIDs,so the runtime behaviour cannot have changed and no live run was needed to settle it. That probe
also turned up something worth handing to whoever fixes it: the path contents are present in the
stored BSON on both versions (
ParallelSplitActivity→ParallelSplitOutcome→Flow→SingleUserTaskActivity), so the entry's own title names the symptom rather than the mechanism, andthe mechanism is still unidentified. BUG-76 (
DECISION) is not the unconditional storagecorruption this log describes: it is a pincer between two spellings, where a bare outcome passes
mxcli checkand makes the model unloadable, and a qualified one is rejected by mxcli's ownMDL-WF03yet loads clean viaexec --no-checkwith a singleCE0117for the empty expression.mxcli mandates the spelling the loader rejects and rejects the spelling it accepts — which is
exactly why this read as corruption when first filed, and which implies two independent fixes rather
than one. That correction was made on the source project on 2026-09-02 and never promoted here.
Field evidence — which real project this ran against / was observed in, and what it measured
or fixed there:
Observed on the same topbar-titled portal project the BUG-120–126 harvest came from, whose Phase-19
approval workflow is built sequentially because of these two defects. Probes ran on mxcli
v0.21.0 against Mendix 11.13.0, on throwaway full copies of the project — never the real
.mpr, since BUG-76's failure mode is a model that will not load at all. What each probe measured:mxcli bson dump --type workflowon each and a normalised diff: 0 lines.mxcli checkpasses, nativemx check(11.13.0) throwsStorageLoadException— "Enumeration value condition outcome in has an invalid value '' forproperty Value. The text 'Yes' is not a valid EnumerationValueIdentifier." Qualified spelling:
MDL-WF03rejects at check;exec --no-checkthenmx checkgives 1 error,CE0117at thedecision. A deliberately non-existent enum value returned
CE1613while its valid sibling inthe same decision resolved silently — which is how we know the qualified form genuinely binds
rather than merely being tolerated.
diff is three prose files plus the changelog line.
Two notes for the reviewer:
This branch's earlier seven commits are already on
master(the BUG-120–126 harvest, mergedwhile this session was working, including the renumber from 113–119). The branch was reset onto
that merged head and only this commit is new, so the PR is a single commit. My own genericisation
pass was dropped as redundant — the merge review had already done it.
BUG-76 is already filed upstream as
CREATE WORKFLOW ... DECISIONwrites the outcome label as a raw string instead of anEnumerationValueIdentifier— project fails to load withStorageLoadExceptionmendixlabs/mxcli#1031, so its update goes into the draftas a clearly-marked comment to post on #1031, rather than rewriting a body that no longer
matches what is public. BUG-121's draft is still unfiled and carries the re-probe as a section to
include when it is filed.
No client data anywhere in the diff — verified with a grep for the project name and
.mprfilename across the changed files; zero hits. The leak-guard pre-commit hook is not installed
in this cloud clone, so it did not run and did not fire;
bin/check-pr-discipline.shwas runmanually and reports clean (changelog rides along, no BUG-number collisions vs
origin/master).For a new/changed instrument: n/a — no instrument changed
For a new skill: n/a — no new skill
CHANGELOG.mdline appended in this PR, crediting the source projectNew bug entries headed
## BUG-DRAFT-<slug>:— n/a: no new entries, this amends the existingBUG-76 and BUG-121 and takes no new number
Generated by Claude Code