Merge reviewed infra fixes #794 and #795 for owner-authorized integration

Preserve both independently reviewed code commits without rewriting history.
The owner explicitly approved manual integration after the review model failed.
The combined candidate must pass exact-SHA Validate before the dev push.

Issue: #794
Issue: #795
User-Visible: no
This commit is contained in:
Matysh
2026-10-05 11:28:49 +03:00
6 changed files with 163 additions and 8 deletions
+5
View File
@@ -456,6 +456,11 @@ only the geometry differs:
switching off live states releases the field while retaining the neutral tube.
Both lazy runtime and field readiness callbacks check the actual owner's
connection before requesting an update. Reconnect creates a fresh lifecycle.
`test/space-card-led-disconnect.test.mjs` executes the real static-card
disconnect callback with populated lazy slots and checks disposal synchronously,
before any detached render. Its connection-only negative case retains the old
lifecycle despite suppressing late updates; `smoke_led_strip_glow` separately
keeps the browser's visible fade/transition-event coverage (#794).
- **Visibility.** Classify and sample the full polyline at radius/4 or finer,
retaining every actual vertex and both ends; never thin a short final run
or an acute corner. The continuous field is clipped to the union of the
@@ -22,6 +22,13 @@ requires a non-null marker absent from runtime devices, whereas the browser's
exact surviving strip/owner and its live light; the browser smoke still covers
unbound-strip visibility and cold loading.
`glow-static-led-release-skipped` moved to `test/space-card-led-disconnect.test.mjs`
in #794: the real static-card callback must release populated LED state
synchronously, before a detached render can hide missing teardown. A
connection-only negative case suppresses late updates but retains its old
lifecycle; the browser smoke retains visible fade coverage without claiming
that transition events alone prove disposal.
| Category | Count | Why a browser is still required |
| --- | ---: | --- |
| Performance threshold | 4 | The witness measures real browser wall-time or frame work; a pure assertion cannot prove the budget. |
@@ -29,8 +36,8 @@ unbound-strip visibility and cold loading.
| Paint, cascade and layer composition | 37 | The invariant depends on computed CSS, SVG paint, clipping, stacking or pixels produced by Chromium. |
| Pointer geometry and trusted interaction | 49 | The invariant depends on hit testing, pointer capture, touch/keyboard dispatch or live DOM geometry. |
| Responsive DOM layout | 38 | The invariant depends on measured element boxes, responsive breakpoints, native/HA dialog shells or focusable target size. |
| Custom-element and HA browser lifecycle | 104 | The invariant crosses Lit/custom-element lifecycle, browser storage/events, lazy loading or a complete HA-card state transition. |
| **Total** | **236 / 200** | Above the guideline `mutation-gate --check` warns rather than fails (#699); each guard above it is held by its own reason in this inventory and its `because`. |
| Custom-element and HA browser lifecycle | 103 | The invariant crosses Lit/custom-element lifecycle, browser storage/events, lazy loading or a complete HA-card state transition. |
| **Total** | **235 / 200** | Above the guideline `mutation-gate --check` warns rather than fails (#699); each guard above it is held by its own reason in this inventory and its `because`. |
## Measured effect
@@ -266,7 +273,6 @@ The invariant crosses Lit/custom-element lifecycle, browser storage/events, lazy
- `floor-geometry-key-ignores-content`
- `french-locale-wrong-dictionary`
- `glow-barrier-render-pass-wiring-skipped`
- `glow-static-led-release-skipped`
- `glow-static-ready-after-disconnect`
- `household-enter-stops-acting`
- `household-marker-drops-keyboard-reach`