Repository navigation
Fix the two urgent triage items: while-true join describe, in-place edit proxy reset - #2207
Merged
Merged
Conversation
Inside a while-true loop every node is on a cycle, so the walks that pair a split with its join reached the split's own branches round the loop. The inner if was paired with the loop header, and the step after its join was printed inside the THEN arm; rebuilt from that text, the ELSE arm skipped it and a counter loop never ended (#2168, mendixlabs#1829). All three walks for a split now stop at that split: the branch distances, the join's downstream-bypass check and resolveNestedMergeID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oK82rmxc4mZcUDT8ePYWM
…ce edit An activity edited in place kept its $IDs but took its content from the statement, and MDL cannot spell a REST call's proxy or an activity's documentation, so both came back at the writer's defaults: Override or NoProxy became DefaultProxy, the proxy expressions were dropped, and the documentation was cleared (#2169, mendixlabs#1830). The edit now carries those stored values onto the replacement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oK82rmxc4mZcUDT8ePYWM
ako
marked this pull request as ready for review
November 13, 2026 07:23
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 the two
class:urgentitems on the triage board (#1357). There is one commit per issue, so the PR can be split if needed. The session could push to only one branch.1. #2168: describe puts the step after an if/else join inside
while trueinto the THEN branchUpstream: mendixlabs#1829.
Reported symptom (reproduced verbatim on Mendix 11.14.0):
If you rebuild from that text, the ELSE branch skips the increment and the loop never ends.
Cause. Inside
while true, every node is on a cycle. Three reachability walks that pair a split with its join run past the split, round the loop, and into the split's own branches:findMergeForSplit's bypass filter rejected the real join.resolveNestedMergeIDswapped the loop header in as the join.Fix. All three walks for a split now stop at that split (
collectReachableDistances,splitJoinCandidateDoesNotHaveDownstreamBypass,resolveNestedMergeID).Evidence.
TestDescribeWhileTrue_StepAfterIfJoinStaysAfterEndIffailed with the reported text before the fix. It also checks the description rebuilds the stored graph (assertDescriptionRebuildsGraph).ExitInElseStaysInElsefailsStepAfterIfJoinfailsresolveNestedMergeIDbarrier:StepAfterIfJoinfailsWorkflowCommons.SUB_UserTaskView_Migrate: the loop exit came out of its ELSE arm. That is why the third barrier exists, andExitInElseStaysInElsepins it. Final diff: 0 lines on both corpora.drop+create→ describe gives the same text. The before binary's rebuild, described by the fixed binary, shows the ELSE arm genuinely missing the increment.2. #2169: an in-place edit resets a REST call's proxy (and the activity's documentation)
Upstream: mendixlabs#1830.
Reported symptom: after changing
Timeout: 300to301, exec prints "spliced: 1 edited in place", and the dump changesRequestProxyTypefromOverridetoDefaultProxyand dropsProxyConfiguration.Cause.
swapKeepingcarries the stored$IDs, but the content is serialized from the statement. MDL has no spelling for the proxy or for an activity's documentation, so the writer's defaults win.Fix.
mfmutator.unstatedis a table, keyed by$Type, of properties MDL cannot state:ActionActivity.DocumentationRestCallAction.RequestProxyTypeandProxyConfigurationThese are copied from the stored element on an in-place edit. The carried sub-element's
$IDs are taken off the removed set, so the integrity check accepts them.Evidence.
TestSplice_EditKeeps*tests (Override, NoProxy, documentation) failed with exactly the reported values before the fix.mx check(0 errors) that the patched baseline is valid. Then I spliced a timeout-only edit with each binary:ProxyConfiguration: null,RequestProxyType: "DefaultProxy"mx check0 errorsUnchanged.Out of scope: the reset that
drop+createcauses is #2178, filed separately.Checks
make build && make test && make lint && make check-mdlpass locally.mdl-examples/bug-tests/2168-…,2169-…make check-findingspasses.alter-microflow.mdand the write-microflows skill now say what an in-place edit keeps; thedescribe-round-trip-gapspattern page is synced.Generated by Claude Code