What is wrong
include/morph/forms is at 94.37% lines on master — 1,158 of 1,227, with
41 misses and 28 partials. That is 69 unhit lines, the second-largest share in
the library after offline, and the library needs to close about 190 of its 246
to reach 99%.
Per file:
| coverage |
miss |
partial |
file |
| 93.67% |
36 |
12 |
include/morph/forms/forms.hpp |
| 92.70% |
1 |
6 |
include/morph/forms/instance_constraints.hpp |
| 95.08% |
1 |
5 |
include/morph/forms/views.hpp |
forms.hpp alone holds 36 of the subsystem's 41 misses.
Why this subsystem specifically, and why now
forms is the part of the framework this sprint is actively changing —
morph#386 (closed sets rendered as pickers), morph#387 and morph#388 all land in
DynamicForm.qml and the schema it consumes. Coverage written after those
changes settles is coverage written against the shape that ships; coverage
written before is written twice.
It is also the subsystem where an uncovered line has recently proven to be a
live defect rather than an untested branch. morph#386's own triage found
DynamicForm.qml contained zero occurrences of const or enum as schema
keys — an entire schema shape the renderer never looked at, which no coverage
number flagged because the code that should have handled it was never written.
Coverage cannot find absent code, but the 69 lines that do exist and are unhit
are exactly where the next one of those hides.
The constraint
forms.hpp is heavily templated, and codecov.yml documents that llvm-cov
places a "control reached past this block" counter on certain closing braces
with no LCOV_EXCL_LINE equivalent to suppress it. Some fraction of the 69 is
that artifact. The work includes establishing which, because a target set above
the real ceiling fails on an artifact and gets tuned out.
The 28 partials are a distinct problem from the 41 misses and are tracked by
morph#404 — a partial line is a branch nothing takes both ways, and covering it
means driving the other arm, not merely reaching the line.
Verification status: reproduced
Codecov API for LASTRADA-Software/morph, branch master, aggregated over
include/morph/forms/**. Per-file figures from the same response.
Not verified: how much of the 69 is llvm-cov artifact. codecov.yml's
existing audits of examples/common and rung 1 give the method for settling it
file by file; nobody has applied it here.
What would close this
include/morph/forms reaches ≥ 99% lines — or every remaining line is
recorded as unreachable with its reason, in the form codecov.yml's artifact
audits use.
forms.hpp's 36 misses are each in one of three states: covered, recorded as
an llvm-cov artifact, or filed as a defect — the third being the outcome
morph#386 suggests is live here.
- The subsystem carries a
codecov.yml component with a target derived from
its measured ceiling.
Blocked by morph#403 (the denominator) and sequenced after morph#386,
morph#387 and morph#388, so the tests are written against the renderer that
ships rather than the one being replaced.
What is wrong
include/morph/formsis at 94.37% lines onmaster— 1,158 of 1,227, with41 misses and 28 partials. That is 69 unhit lines, the second-largest share in
the library after
offline, and the library needs to close about 190 of its 246to reach 99%.
Per file:
include/morph/forms/forms.hppinclude/morph/forms/instance_constraints.hppinclude/morph/forms/views.hppforms.hppalone holds 36 of the subsystem's 41 misses.Why this subsystem specifically, and why now
formsis the part of the framework this sprint is actively changing —morph#386 (closed sets rendered as pickers), morph#387 and morph#388 all land in
DynamicForm.qmland the schema it consumes. Coverage written after thosechanges settles is coverage written against the shape that ships; coverage
written before is written twice.
It is also the subsystem where an uncovered line has recently proven to be a
live defect rather than an untested branch. morph#386's own triage found
DynamicForm.qmlcontained zero occurrences ofconstorenumas schemakeys — an entire schema shape the renderer never looked at, which no coverage
number flagged because the code that should have handled it was never written.
Coverage cannot find absent code, but the 69 lines that do exist and are unhit
are exactly where the next one of those hides.
The constraint
forms.hppis heavily templated, andcodecov.ymldocuments that llvm-covplaces a "control reached past this block" counter on certain closing braces
with no
LCOV_EXCL_LINEequivalent to suppress it. Some fraction of the 69 isthat artifact. The work includes establishing which, because a target set above
the real ceiling fails on an artifact and gets tuned out.
The 28 partials are a distinct problem from the 41 misses and are tracked by
morph#404 — a partial line is a branch nothing takes both ways, and covering it
means driving the other arm, not merely reaching the line.
Verification status: reproduced
Codecov API for
LASTRADA-Software/morph, branchmaster, aggregated overinclude/morph/forms/**. Per-file figures from the same response.Not verified: how much of the 69 is llvm-cov artifact.
codecov.yml'sexisting audits of
examples/commonand rung 1 give the method for settling itfile by file; nobody has applied it here.
What would close this
include/morph/formsreaches ≥ 99% lines — or every remaining line isrecorded as unreachable with its reason, in the form
codecov.yml's artifactaudits use.
forms.hpp's 36 misses are each in one of three states: covered, recorded asan llvm-cov artifact, or filed as a defect — the third being the outcome
morph#386 suggests is live here.
codecov.ymlcomponent with a target derived fromits measured ceiling.
Blocked by morph#403 (the denominator) and sequenced after morph#386,
morph#387 and morph#388, so the tests are written against the renderer that
ships rather than the one being replaced.