Goldberry: Frontend Invariant Catalog for DST Harnesses
Research corpus for deterministic simulation testing of web UIs
Table of Contents
1. Overview
Goldberry catalogs frontend UI invariants for integration with deterministic simulation testing (DST) harnesses like Antithesis.
This research corpus accompanies the goldberry project.
2. 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 |
3. 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 |
a11y_contract |
accessibility tree, WCAG compliance |
device_contract |
touch, pointer, keyboard, hybrid input |
layout_contract |
CSS cascade, grid/flex, visual regression |
event_graph |
capture/bubble, delegation, synthetic events |
| lifecycle | mount/unmount, hydration, hot reload |
focus_state |
focus trap, restoration, tab order, modal semantics |
security_contract |
XSS, CSRF, auth state, iframe sandboxing |
3.1. Taxonomy Diagram
4. Key Findings
4.1. 1980s Invariants Were Solved
Re-checked the two end-of-range dates against primary sources. Plan 9's Fourth Edition shipped under an open-source license on 2002-04-27 (plan9foundation.org; en.wikipedia.org/wiki/Plan_9_from_Bell_Labs), confirming the "2002" endpoint; Wikipedia dates the project's origin only to "the late 1980s" at Bell Labs' CSRC, so "1987" is a reasonable but not independently pinned-down start year. X11 ICCCM was designed by David S.H. Rosenthal of the MIT X Consortium from 1987 to 1989 -- a draft appeared in X11R2 (March 1988), but Version 1.0 was not published until July 1989 as part of X11R4 (en.wikipedia.org/wiki/Inter-Client_Communication_Conventions_Manual). "X11 ICCCM (1987)" names only the start of drafting, not the manual's actual publication date (1989). NeXTSTEP and Oberon dates were not re-checked this pass; carried over from the 2026-06-20 skeptic review.
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
4.2. 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 |
4.3. 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)
5. 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 |
6. Verification Methodology
Both corrections re-verified directly against primary sources this pass. React Hooks: the stable release is React v16.8.0, "The One With Hooks," published to the React blog 2019-02-06 (legacy.reactjs.org/blog/2019/02/06/react-v16.8.0.html) -- the 2018 date in earlier drafts was wrong, 2019 is correct. Lynx: ByteDance's own roadmap post (lynxjs.org/blog/lynx-open-source-roadmap-2025.html, published 2025-03-19) states the project went open source "two weeks ago," placing the date at 2025-03-05 as this note claims, not 2024. foundation.org already carries both corrected dates (lines 303, 368, 373 as of this pass) -- the "should be applied before publication" action item is done.
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)
7. Links
- goldberry - Main project repository
- bombadil - Backend invariant catalog (companion)
- Antithesis - Deterministic simulation testing
Seen at
- BugBash 2026 — the Antithesis-hosted conference on deterministic simulation testing, including Oskar Wickström's Bombadil talk.