Repository navigation
fix: a splice making room leaves the flow's parameters where they are (#1547) - #1548
Merged
ako merged 1 commit intoOct 22, 2026
Conversation
shift moved every top-level node past the cut, and a parameter is a top-level object of the stored object collection: one if/else inserted into NF_Do moved `$Flag` from its derived (200, 53) to (539, 53), a longer replace then to (699, 53), and from then on describe printed a parameter @position no script stated. mxcli's derived parameter row is absolute and right of the start event, so almost every insert's cut falls left of it. A parameter is not on the line the room is made on. Studio Pro authors draw it above the start event — 63 of 71 in PedApp and JTSBootLogboek sit at the start's x, none within 60px of the flow line — and an insert in Studio Pro moves nothing. shifted() now leaves parameters out, and with it pinnedPast, so a stated parameter position no longer blocks a splice it is not in the way of. Fixes #1547. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ako
merged commit Oct 22, 2026
27b064b
into
fix/1508-splice-shift-stated-positions
36 of 37 checks passed
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.
Fixes #1547. Stacked on #1546 (which is stacked on #1528): it changes
shifted(), which #1546 introduces. Retarget down the chain as each base merges.The bug
A splice that makes room for an inserted fragment (
create or modify,alter microflow … insert) moved the flow's parameters along with the row. Inserting one if/else intoNF_Do ($Flag: Boolean)moved$Flagfrom its derived (200, 53) to (539, 53), and a longer replace then moved it to (699, 53). From then ondescribeprinted a parameter@positionthat no script stated, and the row drifted further with every insert.Cause:
mfmutator.shiftmoves every top-level node past the cut, and aMicroflows$MicroflowParameteris a top-level object in the stored object collection. mxcli's derived parameter row is absolute (200 + idx*pitch, 53), right of the start event, so almost every insert's cut falls left of it.Why parameters stay
A parameter isn't on the line the room is made on. It belongs to the flow as a whole. Measured on Studio Pro-authored apps:
Inserting an activity in Studio Pro moves nothing. So
shifted()now leaves parameters out, and therefore so doespinnedPast: a stated parameter position can no longer block a splice it isn't in the way of.Evidence
TestSplice_MakingRoomLeavesTheParameters(mfmutator): an insert and a longer replace; the activity after the gap moves (control), the parameter stays.TestCreateOrModify_InsertDoesNotMoveStatedNodes1508's control subtest (PedApp) now also asserts$Flagstays at (200, 53).Control (old
shiftedback in):Real binary on a PedApp copy, running
mdl-examples/bug-tests/flow-geometry-1547-splice-leaves-parameters.mdl(insert before the first statement of a two-parameter microflow): fixed →describeprints no parameter@position; with the fault forced back →@position(410, 53)on$Count.Gates
make build,make test,make lint,make check-mdl,make check-findings: pass.Integration (
-tags integration ./mdl/roundtrip, theTestFlowRerunProperty/TestPedAppFlowSpliceParity/TestPedAppSpliceParity_*/TestFlowModify_*/TestSpliceRerun_*/TestFlowVerdictAgreement_*set): 55 pass; 2 skipped because this checkout has no TestApp fixture (TestTestAppFlowSpliceParity,TestFlowModify_TestAppHeaderAndPositions).Bug-test:
mdl-examples/bug-tests/flow-geometry-1547-splice-leaves-parameters.mdlFinding:
.claude/skills/fix-issue/findings/mdl-backend/2026-10-21-splice-shift-moves-parameters.jsonA side effect of a fragment no longer pushing parameters aside: one whose box reaches up into the parameter row (y ≈ 53) and lands under a parameter is now refused by
checkRoom("move that object aside in Studio Pro first") instead of shoving the parameter along. No such case appears in the tests or the measured apps.🤖 Generated with Claude Code