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
coverage-preflight.sh --module: a single-file coverage-ledger.md is measured against every BRD in the project, so BRDs the module never claims read fully UNCLAIMED, and leaves other modules claim read UNCLAIMED too #543
File:project-bin/coverage-preflight.sh lines 459-464 (the else branch: for b in $BRDS; do "$ENGINE" … "$b" "$LEDGER"); compare lines 421-457 (directory form, which already skips other modules' BRDs) · Toolkit:393d253 · mxcli: v0.27.0 · Mendix: 11.14.0
Summary
With the canonical one-ledger-per-module layout (architecture/modules/<Module>/coverage-ledger.md) and BRDs that
span several modules, verify-module.sh <Module> runs coverage-preflight.sh --summary --module <Module>, which
measures every BRD against that one module's file:
BRDs the module does not claim at all (6 of 8 here) read as fully UNCLAIMED. Thousands of leaves, all of
them claimed by other modules' ledgers.
Even the module's own BRD is wrong. Leaves of a shared BRD that another module claims read UNCLAIMED. In our
run 29 leaves of the module's main BRD showed UNCLAIMED; another module's ledger claimed all 29.
Measured against all module ledgers concatenated, every one of the 8 BRDs is UNCLAIMED 0. The rung reports FINDING
on a project with no coverage gap, and the real signal (a leaf nobody claims) would be lost in about 8,700 lines of
noise.
Reproduce
Two modules, one BRD, each ledger claiming half its leaves with BRD-prefixed pointers:
architecture/modules/A/coverage-ledger.md claims <F001>/useCases/0/*
architecture/modules/B/coverage-ledger.md claims <F001>/useCases/1/*
bin/verify-module.sh A # coverage: F001 UNCLAIMED = every leaf of useCases/1
cat architecture/modules/*/coverage-ledger.md > $TMPDIR/all.md
bin/coverage-check.sh --summary <F001>.brd.json $TMPDIR/all.md # UNCLAIMED 0
Expected
A module's coverage rung reports gaps that are real for the project, and says which BRDs it did not measure.
Suggested fix (ranked)
Measure only BRDs this ledger claims. A BRD with no pointer in the module's ledger (no <BRDID>/… or
matching .id) is listed as "another module's, not measured", exactly like the directory form's OTHERS line.
For the BRDs it does measure, judge UNCLAIMED against all ledgers. Run the engine on the concatenation of
every ledger found by the four path shapes (or pass the other ledgers as "claimed elsewhere"), so a leaf is
UNCLAIMED only when no module claims it. Report this module's CLAIMED count separately so the per-module figure
is not lost.
Print a one-line legend when the single-file form is used for a multi-module project: "measured: N BRDs this
ledger claims; UNCLAIMED is across all M ledgers".
Self-test: the two-module fixture above must give UNCLAIMED 0 for module A and name no other BRD as a gap.
How to retest
The fixture above; and on any multi-module project, verify-module.sh <Module>'s coverage UNCLAIMED must match the
all-ledgers run for every BRD it lists.
Triage: DISCUSS track. It changes the coverage gate rung's verdict (FINDING to PASS), and half of the fix changes what a per-module rung measures (other modules' ledgers, DOUBLE-CLAIMED). Verified. Problem: project-bin/coverage-preflight.sh:459-463 measures every discovered BRD against a single ledger file. The directory form at :422-457 already skips BRDs it has no ledger for and lists them as OTHERS. The single-file form does not, so a multi-module project with architecture/modules/<M>/coverage-ledger.md gets thousands of false UNCLAIMED leaves through verify-module.sh:516-523. The same branch also serves the project-wide architecture/coverage-ledger.md (:156), where measuring every BRD is correct. Value: High. The rung shows a false red on a project with no coverage gap, and the noise buries the real signal. Options:
Attribution only. For a per-module file ledger, measure only the BRDs it points at (by <BRDID>/ prefix or .id, using the prefix logic from :486-497). List the rest as "another module's, not measured", the same as the directory form. The project ledger and /slash-only ledgers are unchanged. Applies in every entry mode that uses per-module ledgers. Risk: low. Cost: S. Fixes false red Cloud-dev skill, node-express-react layout config, and nine instrument fixes from one end-to-end migration #1 only.
Option 1, plus UNCLAIMED judged across all ledgers. Concatenate all four ledger path shapes, and report this module's CLAIMED count separately. This also fixes red WIP: Mac-local divergence — 2 unique commits + uncommitted state, needs rebase cleanup #2. Risk: a leaf claimed by two modules now shows as DOUBLE-CLAIMED (bin/coverage-check.sh:349), which is a new finding, and the rung starts to depend on other modules' files. Cost: M. One extra engine pass per BRD.
Only print a legend: no fix.
Recommendation: Option 1 now. Option 2 only if you accept the cross-module semantics, including DOUBLE. Decision needed from you: Should a module's coverage rung judge UNCLAIMED against its own ledger only (option 1), or against every module's ledger (option 2)? Reply "go option N" to build it.
Option 1 shipped in #578 (squash a088b4e): a per-module ledger whose pointers carry BRD prefixes is measured only against the BRDs it names. Judging UNCLAIMED across all module ledgers (option 2) changes coverage verdicts, so it's on the roadmap: #579.
Activity
MendixMau commentedon Oct 23, 2026
Triage: DISCUSS track. It changes the coverage gate rung's verdict (FINDING to PASS), and half of the fix changes what a per-module rung measures (other modules' ledgers, DOUBLE-CLAIMED). Verified.
Problem:
project-bin/coverage-preflight.sh:459-463measures every discovered BRD against a single ledger file. The directory form at:422-457already skips BRDs it has no ledger for and lists them asOTHERS. The single-file form does not, so a multi-module project witharchitecture/modules/<M>/coverage-ledger.mdgets thousands of false UNCLAIMED leaves throughverify-module.sh:516-523. The same branch also serves the project-widearchitecture/coverage-ledger.md(:156), where measuring every BRD is correct.Value: High. The rung shows a false red on a project with no coverage gap, and the noise buries the real signal.
Options:
<BRDID>/prefix or.id, using the prefix logic from:486-497). List the rest as "another module's, not measured", the same as the directory form. The project ledger and/slash-only ledgers are unchanged. Applies in every entry mode that uses per-module ledgers. Risk: low. Cost: S. Fixes false red Cloud-dev skill, node-express-react layout config, and nine instrument fixes from one end-to-end migration #1 only.bin/coverage-check.sh:349), which is a new finding, and the rung starts to depend on other modules' files. Cost: M. One extra engine pass per BRD.Recommendation: Option 1 now. Option 2 only if you accept the cross-module semantics, including DOUBLE.
Decision needed from you: Should a module's coverage rung judge UNCLAIMED against its own ledger only (option 1), or against every module's ledger (option 2)? Reply "go option N" to build it.
Generated by Claude Code
Bug sweep 2026-10-26: gates, runners, doctor, lint receipt, git hooks…
MendixMau commentedon Oct 26, 2026
Option 1 shipped in #578 (squash a088b4e): a per-module ledger whose pointers carry BRD prefixes is measured only against the BRDs it names. Judging UNCLAIMED across all module ledgers (option 2) changes coverage verdicts, so it's on the roadmap: #579.
Generated by Claude Code