Repository navigation
Fix mxcli v0.29 compatibility; doctor advises the latest mxcli - #603
Merged
Merged
Conversation
On mxcli v0.29.0, which doctor --install fetches by default, four instruments misread the new output: - fix property-sets MIXED rows: doctor now classifies them as "mixed" instead of rc 4 "could not classify". - The repair exits 1 while only MIXED remains. The apply step no longer lets exec.sh --patch roll back a repair that landed. - fix hashes now verifies MPR v1 with new wording. exec.sh reads both forms, so --patch on Mendix < 10.18 is verified again. - SHOW/list modules "Protected AddOn|Solution" in Source (v0.28+): page-scope and the rehost module list keep first-party Protected modules. Also in this change: - wf-add-path-terminators.py refuses below Mendix 10.21. - module-close notes the v0.29 docker check default. - The stale v0.24 pin advice is gone. - New: the normal doctor run advises when the project mxcli is behind the latest release, respects MXCLI_VERSION pins, stays quiet offline and never fails. Golden input was captured from the real v0.28.0/v0.29.0 binaries (CAPTURE files hold the sha256s and mutation steps). Against master the new cases fail: exec-hash-verify 4, property-sets 7, mxpatch 1, page-scope-protected 3, rehost-list-modules 1, doctor-mxcli-latest 8. Field run: page-scope.sh and doctor.sh against the real v0.29.0 and v0.28.0 binaries on the captured model. Master page-scope FAULTs on the Protected model and the fix counts its page. The doctor advice read v0.29.0 from the live release redirect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
`printf | grep -q` under pipefail can SIGPIPE printf and flip the result; test-pipefail-grep-q.sh flagged sync-project.sh:1702. Same pattern as the rest of the file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
… lines Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
A ~/.curlrc with `location` made curl follow the asset redirect and download the whole binary: 106,696,864 bytes measured, then "not checked". `curl -q` as the first argument skips .curlrc. Measured with HOME pointing at a .curlrc that sets `location`: without -q, 106696864 bytes downloaded and no redirect_url; with -q, 0 bytes and the redirect names v0.29.0. test-doctor-mxcli-latest 12/0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
Owner
Author
|
Independent review: MERGE (after one fix, re-reviewed at
Generated by Claude Code |
… lines Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
MendixMau
pushed a commit
that referenced
this pull request
Oct 31, 2026
… lines Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018LeNWZV2sVH62vkgfYh5u5
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
What changed and why (one paragraph):
doctor --installfetches the latest mxcli, which is v0.29.0 today, and four instruments misread its output. (1)fix property-setsprintsMIXEDrows and exits 1, so doctor showed "could not classify" (rc 4) and sync showed it only as info, hiding a real Studio Pro merge hazard. It is now resultmixed, with a WARN that names the rows and says--fix-property-setscannot clear them. (2) The repair also exits 1 while a MIXED name remains, soexec.sh --patchrolled back a repair that had landed. The apply step now passes when only MIXED is left; FAILED still fails. (3)fix hashesnow verifies MPR v1 with new wording, which exec.sh read as an error, so--patchon a Mendix < 10.18 project went unverified. exec.sh now reads both v1 forms. (4) Since v0.28,SHOW MODULES/list moduleswriteProtected AddOn|Solutionin the Source column. A first-party module set to Protected dropped out ofpage-scope.sh(FAULT, 0 modules) and out of the rehost module list. The export level no longer counts as an origin;Marketplace vX, Protected …stays excluded. Also in this PR:wf-add-path-terminators.pyrefuses below Mendix 10.21, because the terminator type doesn't exist there and writing it leaves the project unloadable (upstream versionInfo, ako/mxcli#1774).module-close.shnotes the v0.29docker checkdefault. The stale "stay on v0.24" pin advice is replaced. New: the normal doctor run compares the project mxcli with the latest release: a WARN with the release link and upgrade path when behind, a note whenMXCLI_VERSIONpins it, one quiet note when offline, and never a FAIL.--quicknever makes the request, andMXTK_NO_LATEST_CHECK=1skips it.Impact
project-bin/exec.sh: only the twohv_runregexes.bin/sync-project.sh: only the rc-1 message branch.bin/doctor.sh. It reads the existing asset redirectreleases/latest/download/mxcli-linux-amd64; the redirect is not followed and nothing is downloaded. It also usescurlwhen present. No order dependency on #599–#601.render-routing.sh --checkreads Baseline 64193 words (budget 80000) on base and head. The on-demand skillsharness-architecture.md,report-schema.mdandrehost-app.mdgained one clause each on the Source rule.--quick) adds one HTTPS request, capped at 5 s, about 0.3 s measured. Execs and gates: none.Field evidence (cloud session, real public release binaries, sha256 in the CAPTURE files):
page-scope.sh --no-roles, real mxcli v0.29.0, captured model with its first-party module set to Protected: master FAULTs ("no first-party module"); this branch writes the module's one page.doctor.shagainst the same project with real v0.28.0 gives "behind the latest release v0.29.0" plus the upgrade path. With v0.29.0 it gives "is the latest release". Both read the live release redirect. Thereleases/latestpage itself returned 403 through this proxy, which is why the check reads the asset redirect.All golden input was captured, not hand-written:
fix hashesv1 clean / v1 mismatch / v2 stale; property-sets MIXED-only, NEEDS+MIXED, the write, and the dry run after it;show modules/list modulesfor Protected and for Marketplace+Protected;fix --help/versionfor v0.28 and v0.29. Each mutation step and the model provenance are infixtures/mxpatch/CAPTURE.txt,fixtures/property-sets/CAPTURE-v0.29.txt,fixtures/show-modules/CAPTURE.txtandfixtures/rehost-list-modules/CAPTURE.txt.No client data anywhere in the diff (public mxcli test models only)
Size cap: over the cap. 16 non-fixture files, +364/−34. This is one PR on purpose: the doctor "advise latest" check must not ship before the fixes, or doctor would advise users into the breakage. Happy to split it if the reviewer prefers.
Test tier: T1 + T2. The scoped fixtures were run against this branch and against master as a control:
Golden input captured. Layouts: page-scope and exec resolve paths through
_common.shas before; no path logic changed. Platforms: POSIX awksplit,grep -oE, andcurl -w %{redirect_url}exist on macOS and Git Bash. The new fixtures userequire_py/$PY.CHANGELOG.mdline appendedn/a: no new skill, no new bug entries
Not in this PR: retiring
wf-add-path-terminators.pyoutright (mxcli writes the terminator itself since v0.22) is a removal and needs a separate decision.Review: pending independent review
Generated by Claude Code