Goldberry: Frontend Invariant Catalog for DST Harnesses
Research corpus for deterministic simulation testing of web UIs
Table of Contents
Overview
Goldberry catalogs frontend UI invariants for integration with deterministic simulation testing (DST) harnesses like Antithesis. The thesis: UI bugs are interface-and-time defects with discoverable patterns and cross-paradigm genealogies spanning 40+ years of GUI development.
This research corpus accompanies the goldberry project.
Research Documents
| Document | Lines | Purpose |
|---|---|---|
| historical-ui-systems.org | 425 | 40 years of windowing system invariants (Plan 9, X11, NeXTSTEP, PARC, Motif, Oberon) |
| foundation.org | 600+ | Web technology timeline: HTML, CSS, JS frameworks, mobile |
| foundation-verification.org | 180 | Adversarial date/fact verification against primary sources |
| claims-verification.org | 284 | Adversarial review of related work claims |
| related-work.org | 250+ | Survey of WCAG, ARIA APG, XState, Devcards, 1990s HCI |
| why-this-is-hard.org | 500+ | 12-layer verification stack analysis |
The 10-Cluster Taxonomy
Every frontend invariant maps to one of these concern clusters:
| Cluster | What It Covers |
|---|---|
| temporality | race conditions, ordering, async timing |
| totality | partial states, error handling, edge coverage |
| boundaries | viewport, overflow, resize, responsive breakpoints |
| a11ycontract | accessibility tree, WCAG compliance |
| devicecontract | touch, pointer, keyboard, hybrid input |
| layoutcontract | CSS cascade, grid/flex, visual regression |
| eventgraph | capture/bubble, delegation, synthetic events |
| lifecycle | mount/unmount, hydration, hot reload |
| focusstate | focus trap, restoration, tab order, modal semantics |
| securitycontract | XSS, CSRF, auth state, iframe sandboxing |
Taxonomy Diagram
Key Findings
1980s Invariants Were Solved
Many invariants that goldberry catalogs were solved in the 1980s:
- Plan 9: Namespace isolation per process eliminates global state pollution
- NeXTSTEP: Immutable focus during event dispatch prevents mid-dispatch chaos
- X11 ICCCM: Selection ownership protocol prevents clipboard races
- Oberon: Tiled windows eliminate z-index bugs by construction
The web re-introduced these bugs because HTML/CSS/JS lacked the constraints these systems enforced.
Historical UI Systems Map to Goldberry Clusters
| System | Focus Model | Event Model | Layout Model |
|---|---|---|---|
| Plan 9/Rio | Namespace-isolated | File-based | Painter's algorithm |
| X11 | Per-window (ICCCM) | Client-server | Reparenting WM |
| NeXTSTEP | Immutable during dispatch | Responder chain | DPS (formal) |
| Xerox Star | First responder | Direct manipulation | Desktop metaphor |
| Oberon | Tiled (simplified) | Integrated | No overlap |
| Modern Web | Variable | DOM capture/bubble | CSS cascade |
New Invariant Candidates from Historical Research
namespace-isolation: cluster: boundaries statement: Each interactive context must have its own namespace. source: Plan 9 (1987-2002) focus-immutability: cluster: focus_state statement: Focus state must not change while event is in dispatch. source: NeXTSTEP (1988-1997) monotonic-z-order: cluster: layout_contract statement: Z-order must never form cycles. source: Plan 9/Rio, Oberon mount-time-validation: cluster: lifecycle statement: All handler connections must resolve at mount time. source: Interface Builder (NeXTSTEP)
Era Tags
| Era | Window | Authoring Pattern |
|---|---|---|
| E-1 | 1973-1993 | Graphical operating systems (pre-web) |
| E0 | 1993-2008 | Human writes HTML/CSS/JS directly |
| E1 | 2008-now | Framework generates HTML |
| E2 | emerging | NL/design-tool generates components |
| E3 | hypothetical | Formal spec generates everything |
Verification Methodology
All claims in this corpus were verified using adversarial research agents:
- Primary source verification (W3C specs, GitHub releases, official blogs)
- Cross-agent validation (multiple agents checking same claim)
- Explicit uncertainty marking (CORRECT, APPROXIMATE, UNCERTAIN, INCORRECT)
Critical corrections found:
- React Hooks: 2018 -> 2019 (released Feb 6, 2019)
- Lynx ByteDance: 2024 -> 2025 (open-sourced March 5, 2025)
Links
- goldberry - Main project repository
- bombadil - Backend invariant catalog (companion)
- Antithesis - Deterministic simulation testing
