Fix red CI (Go 1.26.6), propose container auto-sizing for #884, regenerate LSP completions - #146
Merged
Conversation
…roblem 1) A LoopedActivity's Size is computed from a pre-pass over the AST before its body is built, so it is a function of statement count alone and the children's real positions -- @position included -- have no effect on the box meant to contain them. Measured on 11.6.6: two activities at x=150/310, at x=1500/2000, and at x=160/170 all yield Size 480;160; only changing the statement count to four moves it (800;160). In the x=1500/2000 case both children sit entirely outside their own container and mx check reports no additional error, so nothing catches it short of opening the flow in Studio Pro. The fix is not a one-liner: children are placed relative to an inner origin derived from the size, so deriving the size from the children closes a cycle. Proposes build-first / size-after / translate-once, with the translation as a single post-pass over the nested builder's objects -- the same single-choke-point shape used for @Curve and @merge. Includes the four-case repro as a bug-test example, and notes the two consequences worth a release note: every flow containing a loop changes geometry once, and under ADR-0008 that means one round of writes users did not author. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013uQvFDd5R4eNqqita59jM8
The import-mapping Range work (mendixlabs#881) added FIRST to the lexer but the committed generated completion list was never refreshed, so `make build` left the tree dirty on a clean checkout. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013uQvFDd5R4eNqqita59jM8
The `Vulnerability scan` step (govulncheck ./...) started failing with exit 3 on every push. Nothing in mxcli changed: all six findings are standard-library advisories reported as `Found in: <pkg>@go1.26.5` / `Fixed in: <pkg>@go1.26.6`, and go1.26.6 was published between the last green run and the first red one. govulncheck@latest re-resolves the vuln database on each run, so the pinned toolchain went stale underneath a workflow that had not been touched. GO-2026-6218 net/url quadratic complexity in resolvePath GO-2026-6090 crypto/tls unbounded post-handshake messages GO-2026-6089 net/http ReadHeaderTimeout on the h2c check GO-2026-6088 encoding/xml missing recursion depth guard GO-2026-5972 encoding/asn1 missing recursion depth limit GO-2026-5026 net/http idna punycode label rejection Bumps every pin together -- go.mod's toolchain plus push-test, release and nightly (two jobs) -- so a release binary is not still linked against the vulnerable standard library after CI goes green. Same treatment as the 1.26.4 -> 1.26.5 bump for GO-2026-5856. Verified by running the scan under both toolchains: go1.26.5 reports the six above and exits 3, go1.26.6 reports "No vulnerabilities found" and exits 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013uQvFDd5R4eNqqita59jM8
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.
Three independent commits, each self-contained. The toolchain bump is the one that unblocks CI — cherry-pick
cad70ccon its own if you'd rather not wait on review of the other two.1.
build:Go toolchain 1.26.5 → 1.26.6 — fixes red CIThe
Vulnerability scanstep (govulncheck ./...) started exiting 3 on every push. No mxcli code is at fault: all six findings are Go standard-library advisories reported asFound in: <pkg>@go1.26.5/Fixed in: <pkg>@go1.26.6.net/urlresolvePathcrypto/tlsnet/httpReadHeaderTimeouton the h2c checkencoding/xmlencoding/asn1net/httpThe timeline is the proof:
cd2b01ewas green at 21:43,64935d4red at 07:11 the next morning. go1.26.6 was published in between, andgovulncheck@latestre-resolves the vulnerability database on every run — so the same code went from clean to failing with no commit responsible. Every trace lands in pre-existing code (marketplace/client.go,tunnelhub/server.go,widgets/mpk, …).Bumps all pins together —
go.mod'stoolchainpluspush-test,releaseandnightly(two jobs there). Bumping onlypush-testwould turn CI green whilereleasekept linking published binaries against the vulnerable standard library. Same treatment as the earlier 1.26.4 → 1.26.5 bump for GO-2026-5856.Verified by running the scan under both toolchains rather than trusting the advisory metadata: 1.26.5 → six findings, exit 3; 1.26.6 →
No vulnerabilities found, exit 0.2.
docs:proposal — derive containerSizefrom contents (closes the last open item of mendixlabs#884)A
LoopedActivity'sSizeis computed from a pre-pass over the AST before its body is built, so it is a function of statement count alone. Child positions —@positionincluded — have no effect on the box meant to contain them.Measured on a blank 11.6.6 app,
LOOPbody varied and nothing else:Size480;160@position(1500,60)/(2000,60)480;160@position(160,60)/(170,60)480;160800;160Same box around contents spanning 160px, 500px and 10px; only the statement count moves it. Case B is a correctness problem, not cosmetics — both children sit entirely outside their container (interior x ∈ [0,480]), and
mx checkreports the same error count before and after, so validation is blind to it.It isn't a patch because of an ordering cycle:
innerStartY = loopHeight/2andloopCenterX = loopLeftX + loopWidth/2, so children are placed relative to an origin derived from the size, while the fix needs the size derived from the children. The proposal breaks that with build-first / size-after / translate-once, keeping the translation at one choke point — the same shape asapplyFlowCurvesandmergePosition.It also names the decision that must be made explicitly (
@positioninside a container: container-relative and translated, or authoritative and exempt — recommending the former), rejects a cheap@sizeescape hatch as the primary fix while noting the MDL059 coupling if it is added later, and states the risk plainly: every flow containing a loop changes geometry once, which under ADR-0008 means one round of writes users did not author.Docs only — no behaviour change. Ships with the four-case repro at
mdl-examples/bug-tests/container-autosize-884.mdl(checkclean).3.
chore:regenerate LSP completions forFIRSTmendixlabs#881 added
FIRSTto the lexer but never refreshed the committed generated completion list, somake buildleft a clean checkout dirty.Verification
govulncheck ./...under both toolchains, as above.make build && make testgreen under 1.26.6..mpris written by any commit here.Generated by Claude Code