phase: 35_llm_equal_window_heights
**Phase 35 final verification pass — complete.** - Both task files (01, 02) already in `complete/`; verified the work in-tree: `#engines` = `grid cols-2`, `.strip` has no `align-items` (keeps `display: grid`, `gap: .85rem`, `auto-fit minmax(min(340px, 100%), 1fr)`), `.grid.items-start` rule + corrected comment intact, rewritten pin `test_llm_engine_windows_stretch_to_a_common_row_height` in place. - Live re-verified in browser (fresh `35-llm-verify.cjs` run, screenshots re-captured): both engines answering; strip cards 456 px / panel cards 422 px with flat equal bottoms; row gaps 13.6 px (uniform `.85rem`); `n/a` cells preserved; 360 px viewport single-column, no overflow/clip. `/system` no-regress: `grid auto items-start`, expanded disclosure does not stretch collapsed siblings (325.4 → 325.4). - Completion criteria: served `/llm` markup ✓ · live equalized rows + screenshot ✓ · `/system` bytes unchanged ✓ · full suite/coverage/lint ✓ · README/AGENTS.md ✓ · no behaviour change (all existing pins pass) ✓. - Tests: `bash .agents/validate.sh` → **exit 0**: `uv run pytest --cov` **2031 passed, 19 skipped** (15 live + 4 store_perf, opt-in), coverage **98.71%** (94% floor reached); `ruff` all checks passed; `pyright` 0 errors; `node --check` + repo hygiene clean. - Live suite (`--live`, read-only): 4/15 pass (LLM engines); 5 fail solely on host-agent/upsd **connectivity timeouts** (9120/3051 unreachable from this machine — same errors as `dev-server.sh status`); environmental, no code defect. No live changes made (all verification read-only). - Docs: README.md reviewed in full — verified quickstart, installer/agent flags, config defaults, Containerfile facts, script flags, fixtures, test files, polling cadences: **consistent, no changes needed**. AGENTS.md: fixed one stale statement (hermetic skip count "12 live" → "15 live"); nothing else stale. - Dev server up (pid 811266), `/api/health` 200; hosts/upsd DOWN is the pre-existing environmental state, LLM source ok. - Next pending phase: **none** — `todo/` contains only this phase (35).
This commit is contained in:
+32
-9
@@ -4067,19 +4067,42 @@ def test_radiance_request_rows_render_as_is_and_the_rest_state_says_so(client) -
|
||||
assert "SLOT_ENGINES = ['gufo']" in js
|
||||
|
||||
|
||||
def test_llm_engine_panels_are_not_stretched_to_their_tallest_sibling(client) -> None:
|
||||
"""A 5-row gufo panel beside a 7-row vLLM panel keeps its own height.
|
||||
def test_llm_engine_windows_stretch_to_a_common_row_height(client) -> None:
|
||||
"""The strip row and the panel row each end on a flat edge.
|
||||
|
||||
Found while comparing against `llm_monitor`: the shorter engine card grew 172 px of
|
||||
blank card, and a blank panel reads as "no data" — the exact misreading the unconfigured
|
||||
rules exist to prevent. Pinned on the served markup so the `.grid.items-start` rule in
|
||||
`dash.css` cannot silently become dead CSS (and the void cannot silently come back).
|
||||
The `llm_monitor`-era pin forbade this on purpose: the shorter engine card's 172 px
|
||||
blank bottom read as "no data" (phase 04). The operator judged the dead gap
|
||||
*below* the shorter card, before the next row, the worse misread, and asked for the
|
||||
window heights equalized (2026-10-25). The grid default `stretch` now takes over:
|
||||
both cards of a row share the tallest card's height, and the shorter card's extra
|
||||
space reads as bottom card padding — never a `0` or an invented number (rule 2: a
|
||||
missing cell still prints `n/a`). Pinned on the served bytes so the decision cannot
|
||||
silently revert in either direction: `#engines` carries no alignment of its own, the
|
||||
`.strip` rule sets none while staying alive (its `auto-fit` columns and gap intact —
|
||||
a dead rule is not a de-aligned one), and `/system`'s hosts grid keeps
|
||||
`grid auto items-start` in the same test: an expanded disclosure must not stretch
|
||||
its collapsed siblings, and the two contexts must not silently converge.
|
||||
"""
|
||||
html = _code(client.get("/llm").text)
|
||||
engines_div = html[html.index('<div class="grid'):html.index('id="engines"') + 40]
|
||||
assert "items-start" in engines_div, "the engine grid stretches its cards again"
|
||||
engines = re.search(r'<div class="([^"]*)" id="engines">', html)
|
||||
assert engines is not None, "the engines grid left the page"
|
||||
assert engines.group(1) == "grid cols-2", \
|
||||
f"the engine grid changed shape (no alignment of its own, both columns): {engines.group(1)!r}"
|
||||
css = client.get("/static/dash.css").text
|
||||
assert ".grid.items-start" in css, "the rule the engine grid relies on is gone"
|
||||
strip_block = css[css.index(".strip {"):css.index("}", css.index(".strip {"))]
|
||||
assert "align-items" not in strip_block, \
|
||||
"the strip row keeps its own alignment — the row is not equalized"
|
||||
assert "display: grid" in strip_block, "the strip stopped being a grid"
|
||||
assert "gap: .85rem" in strip_block, "the strip row lost its gap"
|
||||
assert "repeat(auto-fit, minmax(min(340px, 100%), 1fr))" in strip_block, \
|
||||
"the strip's auto-fit columns left — one engine would get a red half"
|
||||
# the unchanged context, re-pinned here so the two cannot silently converge
|
||||
system = _code(client.get("/system").text)
|
||||
hosts_class = re.findall(r'<div class="([^"]*)" id="hosts">', system)
|
||||
assert hosts_class == ["grid auto items-start"], \
|
||||
f"the system hosts grid stopped at its own height: {hosts_class}"
|
||||
assert ".grid.items-start" in css, \
|
||||
"the rule the system hosts grid relies on is gone"
|
||||
|
||||
|
||||
def test_overview_is_exactly_two_panels(client) -> None:
|
||||
|
||||
Reference in New Issue
Block a user