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
AGENTS.md asks for 100% test coverage. After #666 and #677 the line coverage is essentially there:
suite
lines
line rate
branches
branch rate
ThreadX (common/src)
4502 / 4503
99.98%
2556 / 3292
77.6%
SMP (common_smp/src)
5167 / 5178
99.79%
2829 / 3560
79.5%
About 1470 branches are uncovered across the two suites, and nobody has looked at any of them.
This has stayed invisible for a structural reason rather than an oversight: irongut/CodeCoverageSummary's fail_below_min compares the line rate only. The branch rate is printed in the summary and enforced by nothing, so the coverage floors added in #667 and #677 cannot see it.
For a project resting a certification argument on structural coverage of common/src, a line rate of 99.8% beside a branch rate of 78% is not the claim it appears to be.
Settle the denominator before setting any floor
Measured 28 Aug 2026 on #677's run and on a local run of the same tree with the same gcovr:
line denominator
branch denominator
CI runner
5178
3560
local
5178
3548
lines-valid agrees exactly. branches-valid does not, and twelve branches is more than enough to make a threshold fail for reasons unrelated to the change under test. Why the branch denominator moves between machines has to be understood before any branch floor is set, or the floor becomes a source of spurious red runs — which is how the coverage gate loses its credibility.
The line denominator has been stable across gcovr versions and runs alike, so this is specific to branches.
Suggested order
Find out why branches-valid differs between the runner and a local run. Compiler version is the first suspect; the runner uses the distro gcc for the Linux port build.
AGENTS.mdasks for 100% test coverage. After #666 and #677 the line coverage is essentially there:common/src)common_smp/src)About 1470 branches are uncovered across the two suites, and nobody has looked at any of them.
This has stayed invisible for a structural reason rather than an oversight:
irongut/CodeCoverageSummary'sfail_below_mincompares the line rate only. The branch rate is printed in the summary and enforced by nothing, so the coverage floors added in #667 and #677 cannot see it.For a project resting a certification argument on structural coverage of
common/src, a line rate of 99.8% beside a branch rate of 78% is not the claim it appears to be.Settle the denominator before setting any floor
Measured 28 Aug 2026 on #677's run and on a local run of the same tree with the same gcovr:
lines-validagrees exactly.branches-validdoes not, and twelve branches is more than enough to make a threshold fail for reasons unrelated to the change under test. Why the branch denominator moves between machines has to be understood before any branch floor is set, or the floor becomes a source of spurious red runs — which is how the coverage gate loses its credibility.The line denominator has been stable across gcovr versions and runs alike, so this is specific to branches.
Suggested order
branches-validdiffers between the runner and a local run. Compiler version is the first suspect; the runner uses the distrogccfor the Linux port build.fail_below_mincannot do it — enforcing a branch floor needs a different mechanism.Follows from #666, #667 and #677.