You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CONV009 threshold is hard-coded at 15; the lint-config options example does nothing #267
What broke:
CONV009 (MaxMicroflowObjects) cannot be tuned, though the project's .claude/lint-config.yaml says it can.
The rule is mxcli's bundled conv009_max_microflow_objects.star, seeded by mxcli init. Line 13 is MAX_ACTIVITIES = 15, a constant. The rule never calls get_option().
The lint-config.yaml that mxcli init writes shows this exact rule as its example: CONV009: … options: maxObjects: 20. mxcli does pass options to Starlark rules (get_option(key, default) exists, and missing_documentation.star and conv018 use it). CONV009 ignores them, so following the example changes nothing. No error, no notice.
The threshold conflicts with the toolkit's own guidance. skills/microflow-preflight.md sets the split trigger at 20 activities, counting loop bodies. CONV009 fires at 15 and counts top-level activities only. It also overlaps QUAL003 (25).
Command / script run: mxcli lint with the stock rule and the config example uncommented (rules: CONV009: options: maxObjects: 20). Findings stay at the 15-activity threshold.
Field evidence:
Three toolkit-built apps, mxcli v0.25.0. All three ship rules: {}, so nothing was tuned anyway. CONV009 findings were 36 / 30 / 5. At 20 they would be 16 / 11 / 2, which is the list of microflows a reviewer actually wanted split. One app ran a script whose only purpose was to split flows below 15 to satisfy the linter. The CONV009 rises were re-baselined in bulk (one commit: "CONV009 +10").
Proposal:
Toolkit: ship a conv009_max_microflow_objects.star through the existing replace-the-stock path (MXTK_LINT_RULES + STOCK-HASHES.txt, same as CONV010) that reads get_option("maxObjects", 20). The default of 20 matches microflow-preflight.md. Stock hashes for v0.17/0.24/0.25 are needed so a re-seed is recognised.
Upstream mxcli (not filed here): the bundled rule should read the option its own generated config advertises.
Until then, lint-that-actually-runs.md should say that options: reaches only rules that call get_option, and that CONV009 is not one of them.
Not in PR #266, because changing a default threshold for every project is a maintainer call.
Fixed by #312, which landed on master in the integration squash #329 (commit 31e90ae) after independent review. Closing; reopen if it still reproduces on master.
Activity
Merge #312: lint batch 4 — SEC014 external-role writes, toolkit CONV0…
MendixMau commentedon Oct 14, 2026
Fixed by #312, which landed on master in the integration squash #329 (commit 31e90ae) after independent review. Closing; reopen if it still reproduces on master.
Generated by Claude Code