fix(panel): keep the text budget and its indices consistent with the row

Three follow-ups from review and CI on the panel text fit:

The standalone budget reserved a gap toward the meters even when the meters
are hidden. Qt Quick Layouts skip hidden items, so that gap does not exist and
the budget under-reported the free space by one spacing, surrendering a
content item while the room for it was there. It is now charged only when a
meter row is actually rendered.

The chosen composition index and the arrays it addresses are separate
bindings. A configuration change re-evaluates them in either order, so an
intermediate frame indexed past a list that had already shrunk and assigned
undefined to the rendered width. This surfaced as "Unable to assign
[undefined] to int" and failed the panel-default smoke scenarios. Both reads
now go through guarded accessors that fall back to no text.

The first budget regression test measured the budget against itself and so
passed with the defect present. It now derives the row's free space from the
rendered layout instead, and fails without the fix.

The matrix runner's documented failure criteria said it rejects elided labels;
it rejects only premature elision, because the narrowest composition has
nothing left to surrender. The documentation now says so.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
e975332bfdSimone committed on 9/10/2026, 9:33:04 PMparentd15e376
3 files changedLine totals unavailable