Skip to content

fix(exec.sh): delta gate keys errors on code + message + location, counted - #178

Merged
MendixMau merged 2 commits into
masterfrom
fix/exec-delta-gate-multiset
Sep 30, 2026
Merged

MendixMau merged 2 commits into
masterfrom
fix/exec-delta-gate-multiset

Conversation

@MendixMau

Copy link
Copy Markdown
Owner

What changed and why (one paragraph)

project-bin/exec.sh keeps a script's changes when the post-exec mxbuild errors are identical to, or a subset of, the pre-flight baseline. It compared errors by message text only. Real mxbuild output makes that key weak: on a 22-error baseline, 20 errors share two "Could not find widget" messages, and every CE0117 reads "Error(s) in expression.". So a script that added a new CE0117 in a new microflow was judged IDENTICAL and kept. Now each Error is a short hash of errorCode, message and every location's module / document / element, and the subset test counts occurrences. Names are used instead of element GUIDs so that a CREATE OR REPLACE which leaves a pre-existing error in place still reads as pre-existing. A rename reads as new and restores, which is the safe direction. The "Known limit" note in the header is removed.

Field evidence

Scratch copy of a greenfield PoC model, Mendix 11.12.1, baseline 22 errors: CE0462 ×20, one CE0117, one CE0100. Master project-bin vs this branch, same scripts:

Script Master This PR
02 fix one error 21, subset, KEEP 21, subset, KEEP
03 fix one, add a different new error restore restore
04 fix one, add a new CE0117 in a new microflow 22, IDENTICAL, KEEP restore
05 replace a broken microflow unchanged, add a clean one identical, KEEP identical, KEEP

Row 04 is the defect. In row 05 mxcli reported the microflow as unchanged, so GUID stability was checked separately with the key function against the captured errors JSON: re-minted GUIDs give an identical key set; an exact duplicate and a same-message error at a new place both read as new.

Checklist

  • No client data: leak guard clean, denylist grep of the diff clean
  • Size cap: +41 / −23, two files
  • Test tier: T2 field run above. No fixture covers the delta gate today
  • Instrument rules: real mxbuild --write-errors output, not hand-written; bash 3.2 safe, no arrays; Python via the existing $PY probe
  • Routing row: n/a
  • CHANGELOG line
  • Bug entries: n/a

🤖 Generated with Claude Code

https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw


Generated by Claude Code

…unted

The delta gate compared post-exec errors to the pre-flight baseline by
message text alone. On a real 22-error baseline, 20 errors share two
"Could not find widget" messages and every CE0117 reads "Error(s) in
expression.", so a script adding another CE0117 in a new microflow was
judged IDENTICAL and kept.

Each Error is now a short hash of errorCode, message and every location's
module / document / element, and is_subset_of is a multiset test. Names,
not GUIDs, so a CREATE OR REPLACE that leaves a pre-existing error in place
still reads as pre-existing; a rename reads as new and restores.

Field run on a scratch copy of a greenfield PoC model (Mendix 11.12.1,
22-error baseline), master vs fix, four scripts: identical verdicts on
fix-one, fix-one-add-new and replace-unchanged-plus-harmless; the
add-same-message script is KEPT on master and RESTORED on the fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau marked this pull request as ready for review September 29, 2026 23:49
…nreleased lines)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau merged commit 786df61 into master Sep 30, 2026
1 check passed
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