The Lab
Where the code is the deliverable
Everywhere else on this site, code is a means: the pages, the demos, the documents. Here it is the thing itself. Three artifacts, all MIT licensed, all running in the open — because a designer claiming to ship code should hand you some rather than describe the experience of having done so.
Three things you can run
A demo you can’t run is a screenshot with ambitions
01
loop.js
A design opinion becomes falsifiable the day it compiles. The decision logic behind four trust patterns, as tested functions: which verb a confidence score becomes, whether that confidence has earned belief (Brier score, expected calibration error), when to refuse to answer, and what to show while the model thinks.
Read it, run it, break it →02
trustlint
Trust properties are lintable; truth is not. A deterministic linter for the shape of an AI answer — uncited figures, absolutes, hedging used as decoration, and the expensive failure of asserting confidently with nothing to assert from. It also states plainly what it cannot do: judge whether the answer is true.
Paste an answer, audit it →03
This site, torn down
A site that argues for evidence must be willing to be inspected. How the thing you are reading is built, measured rather than described: no build step, a 313.2 KB stylesheet, two third-party domains, one enforced type scale — and an honest list of the gaps, including the one this page caught.
See the receipts →The system I leave behind
A design system a machine can read is one that actually gets applied
Six products at Talon had grown one at a time and looked like six companies had made them — a problem for a company selling an integrated platform. I introduced a design system across the line, so Plato, Ada and Atlas read as rooms of one building. Then I encoded it, so it stops depending on who remembers it.
- One family
- Not a coat of paint — family resemblance. For a company selling an integrated platform, looking integrated is the claim, made visible.
- Encoded, not documented
- Two shipped as installable plugins across client organisations. A system in a Figma library gets applied by whoever remembers it; one a machine reads gets applied every time.
- Enforced
- Contrast, overflow and legibility measured from rendered pixels on every push — and the interface I design is the front-end I ship in the PR.
Below is the system itself, not a picture of it — the same stylesheet that paints this page, with every contrast ratio measured on load rather than quoted.
Four heats · semantic, never decorative
Three families · one job each
- AnnouncesSource Serif 4
- Is readSource Sans 3
- Labels600 · .08em · upper
- code()JetBrains Mono — code only
One spacing grid · enforced by a gate
Below 4 is an optical nudge, above 80 is structural. Anything between that is off-grid fails the build.
The public one is MIT, and its reference page runs that same audit on itself — failures included.
/plugin marketplace add arpitmaheshwari/ember-design-system
/plugin install ember-design-system
Why a lab at all
A principle with no failing state is a preference
The eight patterns in the pattern library came out of production work, and for years they lived where design principles usually live: in slides, in review comments, in my head. Reasonable people agreed with all of them and then shipped the naked confidence score anyway — because a principle you can nod at costs nothing to ignore.
Written as code, the same rules acquire a failing state. decide() reports review-without-reasons as a violation rather than a suggestion. calibrate() returns insufficient-data instead of a flattering number when the sample is thin. trustlint refuses to score truthfulness at all, and says why in its own output.
That is what The Lab is for: taking judgments I keep making in review and giving them somewhere to fail, so they can run without me in the room.
The thresholds here are defaults, not findings. Where a band starts is a product decision someone owns and revisits — the rule is only that a score lands on one verb, never that 0.7 is the right place to put the line.
The evidence boundary
These prove less than they look like they prove
Three different things get called evidence, and only the first one lives on this page:
- Implementation
- The code does what it says. 42 assertions, run in your browser above, on the same module the demos import. This is what the tests prove — nothing more.
- Usage
- The rules came out of shipped products, not a notebook: the verbs, the abstention, the logged override and the citation gate were each argued for and built inside the work in the case studies. The code here is my re-statement of those decisions, not the client’s source.
- Outcome
- Whether a pattern moves adoption is a claim about a product, not about a function. Where I have a measured before-and-after I put it on the case, with its baseline and window. A green test says nothing about it, and I won’t let a passing suite stand where a result belongs.