the coverage caption rendered under Created / Resolved, at desktop and at phone width
18 Sept 2026 · branch silent-building-counters · captured against propflow-stage · at 9bc5df01ae+local
Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.
This is the addition. The Created and Resolved tiles are sums over a window of daily legs, and the fold adds nothing for a building that did not report that night — so the tile simply falls and the fallen number has been served as though it were the answer. The 11px line beneath them is the first counter surface to say so: Created / resolved: 25 partial days, as few as 1 of 74 properties.
What to check in the picture, because this is what the review asked. The line sits under the four-tile stat strip and above the hairline divider and the top-3 category preview. Those still draw, in that order, un-clipped — the card grew by one quiet line, it did not push its own content out.
Why the wording is a count and not a list here. dayCoverageCue names at most two days; past that it switches to the aggregate form so a card-width slot never carries a comma list it cannot show. Stage has 25 short days in the card's 30d window, so this capture is the aggregate branch.
Asserted in the captured DOM — open work orders · Created / resolved: · partial days, as few as. The caption's prefix and its aggregate wording are asserted in the DOM, in the crop the screenshot shows. The magnitude is deliberately not asserted — the same rule the unit tests follow (a 42→40 dip and a 42→2 dip must produce the same shape).
This is the clipping case the PR named against itself. Below 768px DashboardCanvas drops the 12-column grid for a plain single-column stack and renders every widget in its medium form, so the card is as wide as the phone and no wider. The caption is the longest string on the card, and it is given white-space: nowrap with text-overflow: ellipsis.
What to look at. Whether the sentence survives or ends in an ellipsis, and if it ends in an ellipsis, whether what survives is still the useful half — the subject (“Created / resolved”) and the count of partial days. The title attribute carries the full sentence on hover either way.
Asserted in the captured DOM — open work orders · Created / resolved:. An assertion cannot see an ellipsis — innerText returns the whole string whether or not the box shows it. So the assertion proves the line is present and the PICTURE is what answers the clipping question. That gap is the reason this artifact exists.
The small footprint is 6 of 12 columns, and its stat strip is exactly the Created / Resolved pair (FORMS.small.statCount === 2) — Self-serve and Avg resolve are dropped, and the category list collapses to the quiet remainder line. So this is the form where the caption is the widest thing on the card and has the least room beside it.
Reached the way a user reaches it: long-press the card to enter layout edit, click the size badge twice to cycle medium → large → small, then Escape back out so the picture is of the ordinary card and not of edit chrome. The layout is cycled back to medium by the next section.
Asserted in the captured DOM — open work orders · Created / resolved:. The caption is asserted inside the crop at the small footprint. That the footprint really is small is read off the picture: the card is half the grid and its stat strip holds two tiles, not four.
The size cycle above writes through to the signed-in user's saved layout, so this section completes the cycle (small → medium) and leaves the dashboard as it found it. It doubles as the third width the caption is shown at, and as the proof that the previous section really did change the footprint rather than the theme.
Asserted in the captured DOM — open work orders · Created / resolved: · SELF-SERVE. SELF-SERVE is the discriminator: it is the third stat tile, which only the medium and large forms draw. Its presence here and its absence in the section above is what says the footprint actually moved.
This section exists to bound the claim, not to make it. The three captures above show the caption whole; none of them exercises the text-overflow: ellipsis it is given, so on their evidence alone that rule could be dead CSS. 320px is below the phone tier this dashboard is designed for (the 390px capture is the floor the canvas is built to) and it is where the fallback finally has to do something.
What to read off it. The line does not wrap, does not overlap the divider, and does not widen the card — it truncates, and what survives the truncation is the half a reader needs: the subject (which two tiles this is about) and the count of short days. The whole sentence is on the title attribute. That is a designed degradation behaving as designed, which is the opposite of the clipping defect this PR named against itself.
Asserted in the captured DOM — open work orders · Created / resolved:. The assertion says the line is in the DOM; it CANNOT say whether the box shows all of it, because innerText returns the whole string either way. So on this section above all others the picture is the evidence and the assertion is only the anchor.
They prove the caption renders where the PR says it does, in the order it says (under the stat strip, above the divider and the category preview), at the widest and the narrowest footprint the collapsed card is drawn at, and that it does not follow the card into its expanded body.
They do not carry the complete case. The reader is owed a card with every building reporting and therefore no caption at all, and this artifact could not photograph one: on propflow-stage every single day in the card's deepest available window is short (25 of the 30 stored days; the completest reachable window, 7d, still contains two). Contriving a scope that draws nothing would prove nothing about coverage. That case is measured instead by the unit suite's complete-card arm, which is a POSITIVE CONTROL rather than an absence: mutation C in the PR body (n < expected → n <= expected) reddens it, so the caption's absence on a complete card is a checked signal and not an accident of the fixture.