VALIDATION
PARADIGM STRESS TEST. EXECUTED 2026-07-10.
VERDICT: viable and defensible for expert operator tools with high session frequency (ledgers, incident command, publishing — this repo's three products). Contraindicated for novice-facing, low-frequency, or anxiety-adjacent tasks. Four structural amendments required for WCAG conformance; none require abandoning brutalist constraints.
01 — COGNITIVE LOAD FRICTION
Removing soft hierarchy cues does not remove hierarchy — it relocates it from the pre-attentive visual channel (~200ms, no working-memory cost) to the semantic/lexical channel, which requires foveation and reading. The system trades perceptual bandwidth for reading bandwidth.
NOVICE (FIRST ~5 SESSIONS)
Expect 20–40% longer time-to-first-action on first exposure: with no elevation cues, "what is clickable" must be read serially, not seen.
Uniform 2px borders create a wall-of-cells effect — every region has identical visual weight. Whitespace and the 3px dividers carry the entire gestalt load.
Counterweight: zero decorative distractors shrinks the search space. The novice penalty is real but bounded.
EXPERT (>20 SESSIONS)
Fixed positions + zero animation → spatial memory fully amortizes. Motor plans replace visual search.
Synchronous state removes the "did it really save?" verification loop; each action closes its own feedback loop in the same frame.
Dense tabular layouts beat progressive disclosure for expert lookup tasks across the published literature.
Structural requirement: hierarchy is text-borne, so the 48/32/24/16/13 type scale is load-bearing. One mis-leveled heading costs more here than in a soft system — there is no redundant cue to recover from.
02 — WCAG 2.2 CONFLICT MATRIX
| # | CONSTRAINT | CLASH | LEVEL | BRUTALIST REMEDIATION |
|---|---|---|---|---|
| C1 | Pure #000/#FFF everywhere (21:1) | Sustained max contrast → halation/glare for astigmatic readers (~10%) | AAA-adj | Keep default; ship user-invoked PAPER MODE (#111 on #F2F2F2, still >12:1). A visible mechanical toggle is more brutalist than silently softening. |
| C2 | #FF0000 / #00FF00 as sole encodings | 1.4.1 Use of Color | A — HARD FAIL | Color never carries meaning alone: every alert row gets a text prefix (ERR:, OK:) or ▮ glyph. #00FF00 only legal on black (1.4:1 on white). |
| C3 | Zero animation, instant DOM swaps | 2.3.3 Animation from Interactions | AAA — PASS FREE | Ship it. prefers-reduced-motion users get the default experience. |
| C4 | Zero transitions → zero focus affordance if unstyled | 2.4.7 Focus Visible; 2.4.11 Focus Not Obscured | AA | 3px solid #FF0000 outline, 0px radius, 2px offset, every focusable. Instant, ugly, unmissable. |
| C5 | Dense tables, minimal padding | 2.5.8 Target Size Minimum 24px | AA | Keep 13px text; pad interactive cells to ≥24px hit area. Density = information per screen, not pixels per button. |
| C6 | ALL-CAPS body copy | Readability (advisory) — caps remove word-shape cues; ~10–15% slower, worse for dyslexic readers | ADVISORY | Uppercase restricted to labels/headings ≤6 words. Body and table data mixed case. Caps become a signal of chrome vs. data. |
| C7 | Form labels as bare cells | 1.3.1 Info and Relationships; 3.3.2 Labels or Instructions | A | Brutality is a CSS concern; DOM stays semantic: label[for], th[scope], fieldset. No div-soup — screen readers get a better document than most soft UIs. |
| C8 | Raw error dumps in-flow | 4.1.3 Status Messages | AA | role="alert" / aria-live="assertive" on error blocks. Mechanical honesty must be announced mechanically. |
Two hard Level-A conflicts (C2, C7), both repairable inside the doctrine. The flat DOM is structurally favorable to assistive tech; every risk sits at the perceptual layer.
03 — QUANTITATIVE TESTING PROTOCOL
Between-subjects A/B (within-subjects is contaminated by spatial-learning carryover). Variant A: this build. Variant B: identical feature set and information architecture in a modern SaaS skin (shadows, optimistic toasts, skeleton loaders) — isolating the rendering paradigm. n ≥ 40 per arm per cohort (novice / expert), d = 0.5, α = .05, β = .20. Sessions on days 1, 3, 7, 14, 30: the paradigm's bet is on the learning curve, so single-session tests are structurally biased against it.
| KEY | METRIC | DEFINITION | INSTRUMENT |
|---|---|---|---|
| TSV | TASK SUCCESS VELOCITY | Correct completions per minute per session; report the day-1 → day-30 slope, not point values | Event-log timestamps; success rubric scored blind |
| ERR | ERROR RECOVERY RATE | % of user-caused error states resolved without help; median time-to-recovery | Error-state instrumentation + recording audit |
| OFI | OPERATOR FATIGUE INDEX | Per 90-min session: NASA-TLX + blink-rate delta + within-session error-rate slope | Survey + webcam blink tracking + logs |
| — | GUARDRAILS | SUS at day 1 and day 30; voluntary return rate; rage-click rate | Standard |
WIN CONDITION
Expert TSV slope superior; ERR ≥ parity; day-30 SUS ≥ parity — even if day-1 SUS loses badly (it will).
FAIL CONDITION
OFI significantly worse at day 30 (halation/caps fatigue), or novice ERR inferior — honesty producing confusion, not transparency.
KILL CRITERION
Novice day-7 abandonment >2× variant B. No learning-curve argument survives users who never reach the curve.
04 — EDGE CASE MATRIX: HONESTY VS. PANIC
Transparency builds trust only when the disclosed signal is actionable or interpretable by its reader. Disclosure the reader cannot act on converts into perceived loss of control — and perceived control, not information volume, is the trust variable. Honesty is an asset with a competence-dependent yield curve.
| DISCLOSURE | EXPERT | NOVICE | THRESHOLD RULE |
|---|---|---|---|
| Raw latency readout (142ms) | Trust ↑ — live, measured system | Neutral-to-noise | Safe always: glanceable, low-stakes. |
| Latency during degradation (8,412ms) | Trust ↑↑ — system admits distress before failing | Anxiety ↑ without anchor | Pair number with bound: 8,412ms — RETRY AT 10,000ms. Number + plan = control; number alone = countdown. |
| Raw stack trace on error | Diagnostic gold | PANIC THRESHOLD — machine speaking in tongues | Two-layer error: plain declarative line (WRITE FAILED. YOUR DATA IS INTACT. RETRY BELOW.) + full trace beneath. Never replace the trace — layer it. |
| Synchronous "data not saved" | Expected | Frightening, but trust-building iff paired with consequence + exit | Three mandatory clauses: WHAT failed, WHAT survived, WHAT to do next. Omitting clause 2 is where honesty becomes cruelty. |
| Literal empty state (0 RECORDS) | Correct | Reads as breakage | One line of mechanical orientation: 0 RECORDS. CREATE ONE ABOVE. Zero decoration. |
STRUCTURAL GUIDELINES
- 01EVERY DISCLOSED FAILURE CARRIES A NEXT ACTION. Transparency without an exit is a trap, not honesty.
- 02STATE THE BLAST RADIUS. "YOUR DATA IS INTACT" (or its honest converse) is the single highest-leverage anti-panic clause. Uncertainty about loss — not the error — produces panic retries and forced reloads: that is how user panic becomes system failure.
- 03SEVERITY IS TYPOGRAPHIC, NOT CHROMATIC-ONLY. Reserve #FF0000 + ERR: for states requiring action, or operators renormalize and true alerts lose signal (alarm fatigue).
- 04HONESTY ABOUT THE FUTURE. Synchronous UIs never leave a frozen frame: show WRITING… 2/5 as literal text. A progress line is a fact, not a delight mechanism.
- 05NEVER FAKE, NEVER SOFTEN, ALWAYS BOUND. Disclose the true value; attach the bound or plan that makes it interpretable.