Skip to content

Sync: splice matching, check/test noise, default-language captions, clear list - #1278

Merged
ako merged 25 commits into
mendixlabs:mainfrom
ako:main
Oct 3, 2026
Merged

ako merged 25 commits into
mendixlabs:mainfrom
ako:main

Conversation

@ako

@ako ako commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

Syncs ako#946–ako#949 (fast-forward; mendixlabs main has nothing ako lacks). Fixes from the BankV1 / ChipCoV5 / CapTrackV7 test-project findings.

Splice matching (ako#947)

  • commit … with events now matches a stored commit. An unchanged re-run no longer reports "spliced: 1 replaced". A change inside a loop next to such a commit is refused again, instead of silently rebuilding the loop with new $IDs under mdl 1.
  • Same class of bug: the legacy case/else split spelling and an empty else.
  • The loop-body refusal now holds whatever else changes next to the loop.
  • describe no longer warns about a merge at the end of a loop body.

Noise (ako#946)

  • MDL-WORKFLOW10 sees a claim made in a called sub-microflow (same script, or stored with -p).
  • mxcli test no longer warns about its own injected endpoint script, which is now mdl 1.
  • check -p drops MDL067 for a commit already stored that way.
  • MDL-WIDGET15 skips texts with their own class/style, and widget warnings carry a location.

Default-language captions, drop and fonts (ako#948)

  • New lint rule QUAL006 and check MDL-I18N01 predict CE4899, a tab-page caption with no text in the default language. Measured: mxbuild requires only tab-page captions.
  • Changing the default language reports the texts that lack it.
  • A page created after the default changes in the same script is now written in the new default.
  • drop microflow / drop nanoflow / drop page name the grants they remove, and how to restore them.
  • theme create --from names fonts it does not supply.

clear $List; and task outcomes (ako#949)

  • New statement clear $List;.
  • set $List = … on a list variable writes a Change list (Set) action instead of an invalid Change variable action (CE7247).
  • set task outcome with a variable explains why the outcome must be a literal

ako and others added 25 commits October 3, 2026 11:39
Part of #944 (item 4).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
drop microflow/nanoflow/page print the removed roles, whether a create
carries them (same script or session for flows, never for a page) and
the grant that restores them. The splice refusal and the flow skills say
to drop and create in one script.

Part of #944 (item 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ctions

describe printed `clear $L;` for a Studio Pro Clear action and `set $L = $M;`
for a Replace (stored Set), but neither executed back: `clear` did not
parse, and `set` on a list variable wrote a Change variable action, which
passes mxcli check and fails mx check with CE7247.

Add the clearListStatement to the grammar (microflows and nanoflows), a
ClearListStmt in the AST, and route `set` on a known list variable to a
Change list Set action. Builder, visitor and PedApp round-trip tests (the
latter asserting the stored action types, not just the re-described text).

Part of #944

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…943)

A call passing the task to a callee that claims it — created in the script,
or stored (exec -p / check -p via StoredTaskClaimViolations) — counts as a
claim; nested calls recurse with a depth limit. An unresolvable callee is a
possible claim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…943)

check connects to the project before the semantic report and applies the
DropSettledCommitNotes filter exec's preflight applies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mxcli test no longer warns MDL-DEPR001 / MDL-V1-SLASH about its own script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ation (#943)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… and docs-site

Part of #944

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
write-microflows/SKILL.md is held to 700 lines; the advice to drop and
create in one script lives in reference/pitfalls.md with a one-line link.

Part of #944 (item 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anguage

Measured on 11.14: of eleven caption kinds written en_US-only, a switch of
the default to de_DE fails the build (CE4899 "Empty caption") only on tab
page captions, in pages, snippets and layouts (not page templates or
building blocks).

- lint rule QUAL006 lists each one (error)
- alter settings language (DefaultLanguageCode: ...) prints them
- check -p reports MDL-I18N01 for a script that changes the default
- the cached authoring language is dropped when the default changes, so
  a page created after the switch in the same script uses the new one

Part of #944 (item 2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Microflows$SetTaskOutcomeAction.Outcome is a by-name reference resolved at
build time, so `set task outcome $Task $Var` never parsed, and the error
said only "expecting STRING_LITERAL". The parse error now says why and
shows the one-branch-per-outcome shape of a shared claim-and-complete flow,
under every language version. Documented in a new
`mxcli syntax workflow set-task-outcome` topic, the write-workflows skill
and the quick reference.

Part of #944

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nt diff (#942)

`commit … with events` never matched its stored bare commit: matchValue
compared MfCommitStmt.ExplicitWithEvents, which only records that the
redundant clause was written. An unchanged re-run re-spliced the commit, and a
loop-body change next to it made a run of two that bypassed the loop-body
refusal, rebuilding the loop with new $IDs under mdl 1.

The audit found the same class in InheritanceSplitStmt.LegacyCaseKeyword /
LegacyElseKeyword (skipped as spelling fields) and in an empty `else`
(IfStmt.HasElse), which canonicalFlow now drops since describe never prints
one. `without events` is still compared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…one (#942)

The sameLoopShell refusal was asked only when one declared statement met one
stored one. A loop-body change beside another real change (a commit gaining
`without events`) made a longer run, which was replaced: the loop rebuilt
with new $IDs under mdl 1, where the same change alone is refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ws (#942)

A loop's object collection holds no flows; Mendix stores them all in the
microflow's collection. droppedMergeWarnings recursed with the loop's own
collection, so every in-loop merge had in-degree 0 and the merge closing an
`if` at the end of a loop body was reported as one describe -> exec deletes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Splice: spelling-only flags match their stored activity; loop-body refusal holds for any run; loop-body merges in describe (#942)
Noise from check/test: WORKFLOW10 sub-microflow claims, test endpoint script, MDL067 on check -p, WIDGET15 (#943)
Default-language captions (CE4899), drop names lost grants, theme names unvendored fonts (#944 items 2-4)
clear $List; and Change list Replace round-trip; explain set task outcome literal
@ako
ako merged commit 8b5fbc2 into mendixlabs:main Oct 3, 2026
15 checks passed
ako added a commit to ako/mxcli that referenced this pull request Oct 3, 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.

1 participant