Phase A — SpecProxy 3-Layer Architecture (Closes #49 Phase A) #50

Closed
Artur wants to merge 3 commits from feat/phase-a-specproxy into master
Owner

Phase A: SpecProxy + tolerantProxy Separation

Problem: Der production proxy hat tolerantProxy (function) für ALLE unbekannten Properties returned — Verletzung von ECMAScript §9.4.1.

Lösung: 3-Layer-Architektur:

  • Layer A — SpecProxy: unbekannte Properties → undefined (ECMAScript-konform)
  • Layer BKNOWN_MISSING_APIS (68 Einträge): bekannte Browser-Lücken → tolerantProxy
  • Layer C — dynamicStorage Bridge: user-gesetzte Properties priorisiert

Geänderte Dateien

Datei Änderung
src/tolerant-proxy.ts Rewrite — specProxyGet/strictProxyGet + KNOWN_MISSING_APIS
src/runtime-isolation.ts Production/Strict → specProxyGet
src/js/execution-realm.ts KNOWN_MISSING_APIS vars + missing browser vars
src/js/script-loader.ts KNOWN_MISSING_APIS vars
tests/unit/spec-proxy.test.ts 60 neue Tests

Testergebnisse

  • SpecProxy: 60/60
  • tolerantProxy backward-compat: 21/21
  • Unit (1187): 0 Regression
  • React Rendering (7): 0 Regression, H4 fixed
  • React Comprehensive (47): 0 Regression
  • Pre-existing: G3 (→ Phase C), Angular Zone.js (→ Phase B)

Closes Phase A von Issue #49.

## Phase A: SpecProxy + tolerantProxy Separation **Problem:** Der production proxy hat `tolerantProxy` (function) für ALLE unbekannten Properties returned — Verletzung von ECMAScript §9.4.1. **Lösung:** 3-Layer-Architektur: - **Layer A** — SpecProxy: unbekannte Properties → `undefined` (ECMAScript-konform) - **Layer B** — `KNOWN_MISSING_APIS` (68 Einträge): bekannte Browser-Lücken → `tolerantProxy` - **Layer C** — dynamicStorage Bridge: user-gesetzte Properties priorisiert ### Geänderte Dateien | Datei | Änderung | |---|---| | `src/tolerant-proxy.ts` | Rewrite — specProxyGet/strictProxyGet + KNOWN_MISSING_APIS | | `src/runtime-isolation.ts` | Production/Strict → specProxyGet | | `src/js/execution-realm.ts` | KNOWN_MISSING_APIS vars + missing browser vars | | `src/js/script-loader.ts` | KNOWN_MISSING_APIS vars | | `tests/unit/spec-proxy.test.ts` | 60 neue Tests | ### Testergebnisse - SpecProxy: 60/60 ✅ - tolerantProxy backward-compat: 21/21 ✅ - Unit (1187): 0 Regression ✅ - React Rendering (7): 0 Regression, H4 fixed ✅ - React Comprehensive (47): 0 Regression ✅ - Pre-existing: G3 (→ Phase C), Angular Zone.js (→ Phase B) Closes Phase A von Issue #49.
feat: Phase A — SpecProxy 3-Layer Architecture
Some checks failed
/ test (push) Has been cancelled
/ test (pull_request) Has been cancelled
React Compatibility / react-compat (pull_request) Has been cancelled
f9a0cda952
- Layer A (ECMAScript §9.4.1): unbekannte Properties → undefined
- Layer B (KNOWN_MISSING_APIS): 68 API-Namen → tolerantProxy
- Layer C (dynamicStorage Bridge): user-set properties priorisiert
- H4 gap closed: typeof React === 'undefined' before CDN load
- Production + Strict proxy umgestellt auf specProxyGet/strictProxyGet
- KNOWN_MISSING_APIS var declarations in buildVarDecls (beide Kopien)
- HTML*Element Klassen zu allowedGlobals hinzugefügt (instanceof Fix)
- ResizeObserver, RAF, IdleCallback zu buildVarDecls hinzugefügt

Tests: 60 SpecProxy + 21 backward-compat tolerantProxy = 81 neue Tests
Regression: 1187 Unit + 47 React Comprehensive = 0 Regression
Pre-existing: G3 (Phase C), Angular Zone.js (Phase B)

Closes #49 Phase A
feat: Phase B — Unified Execution Layer (UEL)
Some checks failed
React Compatibility / react-compat (pull_request) Has been cancelled
/ test (push) Has been cancelled
/ test (pull_request) Has been cancelled
571ded77a2
- UnifiedExecutionLayer als zentraler Entrypoint (single source of truth)
- buildVarDecls() lebt NUR noch in UEL (kein Duplikat in ScriptLoader)
- evaluate.ts delegiert an UEL.evaluate() (kein eigenes new Function)
- execution-realm.ts wurde Thin-Wrapper um UEL
- ScriptLoader.buildVarDecls() und _scanDynamicGlobals() entfernt
- buildEvaluateProlog() korrigiert (window.document statt this.document)
- 25 neue UEL-Tests (persistence, evaluate, SpecProxy integration)

Tests: 1212 Unit (UEL+SpecProxy+tolerantProxy) = 0 Regression
React: 7/7 Rendering + 47/48 Comprehensive = 0 Regression
Pre-existing: G3 (Phase C), Angular Zone.js

Closes #49 Phase B
feat: Phase C — Virtual Frame Clock (VFC)
Some checks failed
React Compatibility / react-compat (pull_request) Has been cancelled
/ test (push) Has been cancelled
/ test (pull_request) Has been cancelled
d99b8bedc9
- Frame-Boundaries mit RAF Queue (60fps/16.67ms)
- Frame-Isolation: neue RAFs aus Callbacks warten auf nächsten Frame
- requestIdleCallback mit timeRemaining
- cancelAnimationFrame/cancelIdleCallback korrekt implementiert
- Integration in Page (automatische Installation auf Window)
- 35 VFC-Tests (RAF Queue, Timing, Idle, Fehler, Window Integration)

Closes #49 Phase C — ALLE 3 Gaps geschlossen
Artur closed this pull request 2026-06-18 09:32:20 +00:00
Some checks failed
React Compatibility / react-compat (pull_request) Has been cancelled
/ test (push) Has been cancelled
/ test (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser!50
No description provided.