Skip to content

fix(doctor, preflight, platform-link): a clean property-set dry-run below Mendix 10.24.24 is not proof - #528

Closed
saingge wants to merge 1 commit into
MendixMau:masterfrom
saingge:fix/property-sets-below-10.24.24
Closed

saingge wants to merge 1 commit into
MendixMau:masterfrom
saingge:fix/property-sets-below-10.24.24

Conversation

@saingge

@saingge saingge commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Branch: fix/property-sets-below-10.24.24, one commit (a2746a7) on origin/master 393d253.

PR body (Direct lane)

What changed and why (one paragraph):
mxcli's property-set table starts at 10.24.24 (mendixlabs/mxcli#1595). On a Mendix 10.24.18 app with mxcli v0.27.0, fix property-sets --dry-run printed "Every unit already has the property names Studio Pro writes." for a model whose rewritten units Mendix's mx diff rejected (exit 129). So doctor.sh --property-sets printed ok ... every unit has the property names Studio Pro writes, and two skills said v0.26.0 closed the gap. Now, when the model's Mendix version (mxtk_model_version, already used by doctor) is below 10.24.24, a clean dry-run is reported as unproven: doctor WARNs "NOT PROOF" and names mx diff <base>.mpr <mine>.mpr out.json (exit 0) as the proof. The same holds for --if-stale and --quick (the receipt records unproven; --if-stale does not re-run, and neither prints an ok line). Exit code stays 0. The warning is deliberately not gated on the mxcli version, so a later mxcli that still has the defect cannot go silently green; the code comment and the warning text name mendixlabs/mxcli#1595 as the retirement trigger (remove the check when it is fixed). learned-detection-gaps.md (row ~59, says "below Mendix 10.24.24") and platform-link.md (~499) are corrected in place.

Row Answer
Process none. No new step or gate.
Dependencies bin/doctor.sh (property-set functions only), tests/wave2/test-property-sets.sh, skills/learned-detection-gaps.md, skills/platform-link.md, CHANGELOG.md. Uses mxtk_model_version from project-bin/_common.sh, already sourced in both doctor paths. No skill-routing.tsv change. Independent of the other PR from this session (learn/signature-change-and-sp-merge): different files.
Context cost bin/render-routing.sh --check, base 393d253 to head: baseline 75,510 to 75,528 words (+18; budget 80,000). Stage 5 total 70,080 to 70,098; at stage 5 mdl 31,113 to 31,131, gate 22,769 to 22,787, review 31,410 to 31,428; lead, ba, architect, test unchanged. Stage 6 total 45,976 to 45,994.
Behaviour NOT RUN: +18 words of baseline-routed text. We will run the section 4a A/B on request.
Runtime n/a. One extra local sqlite read of the .mpr's version, only on a clean result.

Field evidence: a Mendix 10.24.18 enterprise app on mxcli v0.27.0 (macOS). The false green was reproduced on 2026-10-21 on a copy taken before the app's own repair commit (details below).

  • No client data anywhere in the diff
  • Size cap: 5 files, 73 insertions, 7 deletions (CHANGELOG and the fixture included)
  • Test tier: T2, the scoped fixture tests/wave2/test-property-sets.sh (stub mxcli, as the fixture's header explains)
  • Layouts: no path logic changed; the fixture's two-tree case P6 still passes. Platforms: POSIX shell arithmetic only, no new sed or date flags.
  • New skill: n/a
  • CHANGELOG.md line appended, credited saingge
  • New bug entries: n/a

Verification

  • bash tests/wave2/test-property-sets.sh bin/doctor.sh: "property-sets: 73 passed, 0 failed". The new block P2b has 11 cases: 10.24.18 clean gives exit 0 plus a WARN containing "NOT PROOF", no "every unit has the property names" line, an mx diff pointer, receipt unproven, --if-stale not re-running and still a WARN, --quick WARN; 10.24.23 and 9.24.2 warn; 10.24.24, 10.25.1 and 11.12.1 still print the ok line.
  • Negative control: the same test file against master's bin/doctor.sh: "65 passed, 8 failed", the 8 being the below-floor cases; the 3 at-or-above-floor cases pass on both.
  • bin/render-routing.sh --check passes (numbers above). bin/check-pr-discipline.sh: clean.
  • bin/check-no-client-data.sh: no client data in 1148 tracked files. LEAKGUARD_BASE=origin/master: no new capitalised words. git diff --stat origin/master...HEAD | tail -1: 5 files changed, 73 insertions(+), 7 deletions(-).
  • The false green: mxcli fix property-sets --dry-run (v0.27.0) on a git archive of the app taken before its repair commit printed "Checked 4121 unit(s) in .mpr against the Mendix 10.24.18 property sets." and "Every unit already has the property names Studio Pro writes.", exit 0. The repair, made later with fix property-sets, changed 8 units. The mx diff exit codes (129 with the gap, 0 after) come from the project's field note and from On Mendix 10.24 below 10.24.24 (seen on 10.24.18), mxcli writes documents without properties Studio Pro writes: mx diff crashes and fix property-sets reports every unit complete mendixlabs/mxcli#1595; I did not re-run mx diff.
  • Not checked: versions other than 10.24.18. The floor of 10.24.24 is taken from #1595; the warning applies to every version below it, which is the conservative reading. Studio Pro itself was not run.

…elow Mendix 10.24.24 is not proof

mxcli's property table starts at 10.24.24. On 10.24.18 (mxcli v0.27.0) the dry-run said every unit was complete while mx diff exited 129 (mendixlabs/mxcli#1595). doctor --property-sets, --if-stale and --quick now warn and name mx diff as the proof; the two skills say the same.
@MendixMau

Copy link
Copy Markdown
Owner

Thanks @saingge! Independent review: MERGE (behaviour A/B waived for the 18 words). We moved your commit unchanged, with your authorship, into #554, so CI runs without fork approval and we can handle CHANGELOG conflicts. This PR closes when #554 merges; the merge commit carries a Co-authored-by line for you.


Generated by Claude Code

MendixMau added a commit that referenced this pull request Oct 22, 2026
…elow Mendix 10.24.24 is not proof (#554, from #528)

mxcli's property table starts at 10.24.24; on 10.24.18 the dry-run reported every unit complete while mx diff exited 129 (mendixlabs/mxcli#1595). doctor --property-sets, --if-stale and --quick now WARN below the floor (receipt "unproven", exit 0) and name mx diff as the proof; the two skills say the same. The model version is read via sqlite, no extra mxcli call. test-property-sets.sh 73/0; its P2b case now uses require_py instead of a bare python3 (portability fix on this PR). Contributed by @saingge in #528.

Review: MERGE — sound; WARN only, exit codes unchanged. Baseline +18 words (behaviour A/B waived by the maintainer). Security review: safe.

Co-authored-by: saingge <262679532+saingge@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
@MendixMau MendixMau closed this Oct 22, 2026
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.

2 participants