Skip to content

fix(client): apply the worker deadlines in the visible tab only - #342

Merged
ttbombadil merged 1 commit into
feature/browser-emulationfrom
fix/p3-2-hidden-tab-supervision
Oct 24, 2026
Merged

ttbombadil merged 1 commit into
feature/browser-emulationfrom
fix/p3-2-hidden-tab-supervision

Conversation

@ttbombadil

Copy link
Copy Markdown
Collaborator

Worum es geht

Fund bei der Konsistenzprüfung: Plan 4.5 legt fest, dass die Fristen der Worker-Überwachung nur im sichtbaren Tab gelten („dort prüft der Hauptthread erst nach der Rückkehr, damit kein falscher Ausfall entsteht“). BrowserRuntime fragte die Sichtbarkeit nirgends ab. Ein Browser, der einen Hintergrund-Tab drosselt oder einfriert (Chrome nach einigen Minuten, mobile Browser sofort), konnte so nach der Rückkehr einen gesunden Lauf mit „the emulator stopped responding“ beenden.

Änderung

  • client/src/lib/runtime/browser-runtime.ts: Solange der Tab verborgen ist (document.visibilityState), zählt Stille nicht; sie zählt ab der Rückkehr. Läuft eine Befehlsfrist im verborgenen Tab ab, beginnt sie neu, statt den Lauf zu beenden. stop beendet den Worker weiterhin nach 2 s, das ist auch im verborgenen Tab unschädlich. Die Sichtbarkeit ist für Tests injizierbar (isHidden).
  • Doku: SSOT SimulationRuntime (Fristen), Plan 4.5 (nannte noch 2 s für Bestätigungen, umgesetzt sind 5 s wie in der SSOT), ADR 0009 E12: Die Grenzwerte standen noch als „pending spike P0.3“. Jetzt sind sie mit dem Beleg aus P0.3 eingetragen (Echtzeitfaktor 1,00, UI-Verzögerung höchstens 24 ms bei 1 vCPU). Der Hinweis „Draft“ sagt jetzt, dass alle Spike-Berichte vorliegen. Der Status bleibt Proposed.

Tests

  • Drei neue Fälle in browser-runtime.test.ts: Stille im verborgenen Tab, Frist im verborgenen Tab, unbestätigter Befehl nach der Rückkehr. Gegenprobe: Ohne die Änderung sind die ersten beiden rot.
  • Bestehende Fälle unverändert. setup() bekommt nur zusätzlich den Sichtbarkeitsschalter tab (Vorgabe: sichtbar).
  • tests/client/lib/runtime: 99 Tests grün; npm run check, npm run lint grün.

🤖 Generated with Claude Code

Plan 4.5 says the supervision checks a hidden tab only after its return, so
that a throttled or frozen tab does not end a healthy run; the runtime did not
look at the visibility. Silence now counts from the return and a deadline that
runs out while hidden starts again. SSOT, plan and ADR 0009 (E12 thresholds,
which P0.3 measured) name the deadlines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ttbombadil
ttbombadil merged commit e2a1d60 into feature/browser-emulation Oct 24, 2026
6 checks passed
@ttbombadil
ttbombadil deleted the fix/p3-2-hidden-tab-supervision branch October 24, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant