UX-08 phase 2b review: keep over-rating evidence, pin latch clearing, plainer rows
checks / unit (pull_request) Successful in 8m48s
infra-pin / fresh (pull_request) Successful in 1s

- During a bound episode an earlier over-rating count stays on the page (amber,
  under its own title); test_clamp pins it.
- test_messages pins that every latch row says how it clears.
- pv_entities description no longer claims the page names the entity (en, nl);
  allowlist hash updated for that option-desc line.
- Plainer texts: multi-inverter direction banner, "fine now" after an episode,
  and the e-stop, peak-forecast and peak-guard-waiting rows move to messages.py.
- TEL-12 DECISIONS points to UX-08 item 3 for the retired row rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
glenn schrooyen
2026-09-27 03:10:25 +02:00
co-authored by Claude Opus 5.5
parent 696142bccc
commit 571b884315
9 changed files with 61 additions and 12 deletions
+11
View File
@@ -373,6 +373,17 @@ _long = [t for fn, c, t in STATUS if c == messages.RED and fn not in _own_banner
check(f"every other red row makes a 'Not ready' banner of at most 12 words "
f"(too long: {_long})", not _long)
# A latch row must say how it clears: that is the one action it exists for.
_clears = {
"row_direction_trip": "A restart does not clear this",
"row_site_direction_trip": "Only starting control clears this",
"row_circulating_trip": "Only starting control clears this",
"row_not_delivering": "only stopping and starting control clears this",
}
_unclear = [fn for fn, _c, t in STATUS if fn in _clears and _clears[fn] not in t]
check(f"every latch row says how it clears (missing: {_unclear})",
not _unclear and {fn for fn, _c, _t in STATUS} >= set(_clears))
allow = read_allowlist(ALLOW_FILE)
by_kind = {}
for kind, *_ in found: