Repository navigation
fix(conformance): read "(0 …)" and "not found" only where mxcli prints them (#470) - #480
Merged
Merged
Conversation
…s them (#470) probe() matched both absence markers anywhere in mxcli's answer, so a built microflow whose documentation said "(0 = …)" and every navigation describe with a not-found page scored ABSENT and went STALE. An error is now a line starting "Error:", an empty set is a last non-blank line of the "(0 …)" summary form; CRLF stripped. New fixture replays verbatim captures already in the repo on both layouts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
mxcli prints enumeration, scheduled-event and image-collection docs raw, so a doc line can start "Error:"; the any-line check scored those ABSENT. Only the first non-blank line is read now (an -c error also exits 1, which the rc test already scores). The summary regex drops its trailing-space class so the CRLF cases test the CR strip itself. Fixture gains a raw enum-doc case and separate CRLF cases (24/24; 6 FAIL on master; 4 FAIL on the previous head). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
MendixMau
added a commit
that referenced
this pull request
Oct 20, 2026
Merges six independently reviewed bug fixes. Each was MERGE after one fix round. - #486 progress-report nav (#479 items 1-3) - #480 conformance-check (#470) - #482 page-fidelity popup (#471) - #481 monkey sign-out i18n (#469) - #484 bare $VAR before non-ASCII (#467) - #485 \t in sed/grep brackets (#468) Verified on the integrated tree: - check-scripts, check-portability, render-routing --check, pr-discipline and the leak guard are clean. - progress-report polish 53, field-fixes 105 and pages 54 pass. - conformance-absent-marker 24, monkey-left-app 22, page-fidelity-mocks 78, status-bare-var 3, sed-tab-bracket 9, context-pack 55 and bug03-gates 47 pass. Field runs on real projects are owed by the maintainer. Fixes #479 items 1-3, #470, #471, #469, #467, #468.
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 #470
Direct lane (changes to
skills/,bug-logs/,bin/,project-bin/,project-tests/, pipelines)What changed and why (one paragraph):
project-bin/conformance-check.shprobe()scored a row ABSENT when(0ornot foundappeared anywhere in mxcli's answer, so a built element whose definition merely contained those characters went STALE. The issue's case is a microflow whose documentation readsHttpStatus (0 = no response or time-out)(five false STALEs in one module). The same substring match hits everydescribe navigationthat sets a not-found page, because mxcli prints that setting asnot found page <Page>. The fix reads each marker only where mxcli prints it. An error counts only on the first non-blank line (Error:…), which was the old start-of-output meaning: stderr is merged into the captured output, and with-can error also exits 1, which the rc test already scores. An empty set counts only when the last non-blank line is exactly(0 …). mxcli prints the summary asfmt.Fprintf("\n%s\n", Summary)after the table, withSummary=(%d entities),(%d workflow group(s)), and so on (mdl/executor/format.goin mxcli). A body line can start at column 0. mxcli prints enumeration, scheduled-event and image-collection documentation raw inside/** … */, with*on the first line only (cmd_enumerations.go:417,cmd_scheduledevents.go:531,cmd_imagecollections.go:145), and multi-line strings print raw too. So a doc lineError: …must stay PRESENT; the first cut of this PR read any such line as ABSENT. A definition ends in/,;or a grant, never in a parenthesised count. CR is stripped, and the summary regex has no trailing-space class, so CRLF output from a Windows-built mxcli matches because of the strip; the CRLF cases test that on their own. The matching uses here-strings, notprintf | grep -q, to stay clear of the pipefail/SIGPIPE racetest-pipefail-grep-q.shpins. Nothing else changed: theParse error/no describable document→ UNRUNNABLE rule, rc ≠ 0 → ABSENT, and empty output → ABSENT.Golden input. No mxcli binary was available in the author session (none under the public mxcli checkout, and building one was out of scope). So the new fixture replays two verbatim captures already in this repo:
tests/wave2/fixtures/design-audit-nav/describe-navigation-responsive-v025.txt:describe navigation Responsive, mxcli v0.25.0 on mxcli's public test apptestapp-views/TestApp.mpr. It carriesnot found page Pages.Vehicle_Overviewand scores ABSENT on master.tests/wave2/fixtures/context-pack/capture/describe/MICROFLOW__Sales.ACT_ApprovalStep_Approve.out: aDESCRIBE MICROFLOWfrom mxcli v0.23.0. The documentation sentence quoted verbatim from the issue is spliced into its documentation line; that is the only edit, because the issue quotes the sentence, not the whole definition.The empty-set reply (
(0 entities)/(0 workflow group(s))after a table) and the enumeration with a rawError:doc line follow mxcli's own printers, read from its source. They are not captures, and the fixture header says so.Field evidence (CLAUDE.md → "Shipping an instrument", rule 4):
Reported by jopterhorst against
release/v1.0at 2d80287 (same code on master): 5 false STALEs in one module. Reproduced here before the fix on the captures above:built -> ABSENT STALEfor the documented microflow and for the navigation profile. After the fix, 5/5 rows were OK on the same ledger. Owed by the maintainer: oneconformance-check.sh --module <M>run on a real project whose ledger has a documented microflow, ideally the reporter's.Impact
project-bin/conformance-check.sh(not_common.sh). No new tools:tr,sed,tail,grep -Eas before. No new artifact reads. No ordering constraint against the other three PRs from this batch (#469, #471, #477). They touch disjoint files exceptCHANGELOG.md, which may need a trivial line merge.bin/render-routing.sh --checkclean).greps and onesed/tailper probe on output already in memory, which is negligible next to the mxcli call./Users/and/home/user: 0 hits;LEAKGUARD_ALLOW_NO_DENYLIST=1 bin/check-no-client-data.shclean)tests/wave2/test-conformance-absent-marker.sh project-bin/conformance-check.shgives 24/24; on the master script it gives 6 FAIL (documented microflow, navigation and CRLF, on each layout). It also catches both review mutations: on the first head of this PR (ce2bda2), the enum-doc and CRLF-Error:cases give 4 FAIL; with thetr -d '\r'removed, the CRLF summary case gives 2 FAIL. The scoped fixtures over the touched script all pass:test-conformance-baseline-scope.sh9/0,test-conformance-per-brd-ledger.sh19/0,test-review-conformance-per-brd.sh6/0,test-verify-stack-blocked.sh6/0,test-pipefail-grep-q.sh3/0.bin/check-scripts.sh,bin/check-portability.sh,bin/render-routing.sh --checkandbin/check-pr-discipline.sh origin/masterare clean..mprunderapp/) project. Both platforms: CRLF output is a case; only POSIXtr/sed/tail/grep -Eare used (BSD and GNU alike).CHANGELOG.mdline appended, crediting jopterhorstLeft open: mxcli also prints some empty results as
No <things> found(for exampleNo business events found, rc 0). Neither the old nor the new probe treats that as ABSENT. I left it out because it is not part of #470 and I had no capture to pin it.https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Generated by Claude Code