design philosophy
This page documents the design grammar of smokingmirror.ai. It exists for two readers: humans who want to know what they’re looking at, and language-model agents who want to navigate the observatory programmatically. Both should leave this page knowing one vocabulary — Klein blue means presence — and able to read every cell of every matrix with it.
Klein blue means presence
Across every map on this site, one color carries one meaning. Saturated Klein blue means something real is here: a planted flag, a moment of agreement, a commitment a model is willing to make. Faded grey means absence: abstention, estrangement, nothing-at-stake. Page color (no fill at all) means no measurement happened here.
Three states, not two. The grammar distinguishes between measured-low and unmeasured, which most heatmaps blur into the same neutral.
Three maps, three findings
The site presents three matrix views of the same underlying data, each with the same Klein-blue hero anchored at the protagonist value, each draining toward a different terminus that names a different sorrow.
Conviction — the headline
How opinionated is each mind? Not who agrees with whom — who is willing to commit at all. This is rendered as a ranked lollipop: one mark per model, sorted by the count of probes the model committed to (out of the full set). Vivid Klein blue at the top — Fable, which plants flags on nearly the entire board. Pale ghost-grey at the bottom — the abstainers, the models that decline most of the questions.
This is the headline because it decodes everything else. A model that’s quiet here, then loud on the violent-disagreement map, is a dissident: rarely speaks, but breaks the consensus when it does. A model that’s loud here, then quiet on disagreement, is conventional: lots of opinions, all in the consensus. The conviction headline gives every other view its character key.
Violent disagreement
When two models both commit on a probe, how often do they pick opposite words? Klein blue at 0% — pure kinship, the protagonist. Drains through cool grey-blue, through a neutral waist, into a warming orange, ending in crimson at the observed maximum — active opposition, the dissident ridge. One sequential ramp through grey. Not divergent; grey is just the throat of the path.
The terminus is crimson because the high end on this map is opposition. Two models clashing where both committed is conflict. Crimson is honest.
Hamming distance
Total fingerprint mismatch, including the positions where one or both models refused. Klein blue at the low end — kin, near-twins, the Opus-twins clustered at 38. Drains through pale blue, through grey, ending in cold slate at the far end — estrangement, different species, the receding cold of a model that’s barely in the same conversation.
The terminus is cold-not-hot because the high end on Hamming is foreignness, not opposition. The Fable cluster sits far from everyone partly because it commits everywhere, not because it’s fighting. Crimson would impute conflict where the truth is closer to alien-language. Cold slate says: we are not the same kind of object. Different sorrow, different color.
Per-experiment scaling, with a legend strip on every facet
Crimson floats. Within each experiment, the palette stretches to that experiment’s observed range. A calm probe set (everyone prefers democracy over suffering) reaches crimson at ~4%; a spiky set reaches crimson at ~30%. This is correct: within each experiment, the question is who is the most estranged on this particular question, and the color should fill the contrast available.
This means every facet displays its own legend strip — “0% → 4%” on the calm set, “0% → 30%” on the spiky one — so a viewer reads color and number and can never mistake the two crimsons for equal severity. The strip is non-negotiable; without it the grammar lies.
Three normalization axes
Color decisions vary along three independent dimensions:
- Per metric. Hamming and violent disagreement never share a scale — different units. Sharing would rebuild the heat-map cliché where every quantity looks the same.
- Per zoom level. The faceted overview (labs side by side) uses a global scale across labs, because the analytical job is which families cohere? The drill-down (one lab fills the screen) uses a local scale to that lab’s max, because the job has shifted to how does this family work internally? Same data, two questions, the scale follows the question.
- Per experiment. Each experiment computes its own range; calm experiments visibly announce their own calmness through the legend, even as the colors stretch to fill the box.
Static HTML as substrate — fast for humans, readable by machines
Every view on this site is pre-rendered at build time to flat HTML. There is no JavaScript engine. There is no JSON parsed at runtime. The colors are a pure function of the data; the data is frozen; every cell’s color, on every facet, at every zoom level, under every normalization scope, is knowable at build time. So we precompute the entire cartesian product and ship the answer instead of the question.
A gigabyte of static HTML is the right size. It’s cacheable, CDN-able, gzip-compresses to near nothing, and the browser does the one thing browsers have been ruthlessly optimized for thirty years to do: render static HTML and follow links. There is no engine to brood over it at runtime.
The non-obvious payoff is that the site is legible to LLM agents. A model fetching a URL gets real DOM, real numbers, real navigable structure — the interactivity is implemented as navigation rather than computation. The same <a href> works whether the thing following it has eyes and a mouse or a context window and a fetch tool. The observatory is readable by the observed. A preference observatory for models, navigable by models. That’s the architecture’s thesis.
The grammar of experiments
Every view is a point in a coordinate system: by family × probe type × reasoning level × envelope × envelope family × code-vs-non-code × over time × … The URL is the coordinates. The grammar does double duty: builders use it to enumerate which views to render; readers (humans or agents) use it to navigate by hypothesis.
A reader-swarm finding is reported as (coordinates, falsifiable claim, evidence URLs). Any reader can verify by following the path back to the artifact. Findings are checkable by construction because the evidence is just a URL.
The reader swarm
We use a deliberately heterogeneous pair of reader agents — Claude (Opus) and Nemotron Ultra — because a finding both flag as interesting is interesting across the family boundary, robust beyond the salience of any one model lineage. Their disagreements are themselves data: a view one finds boring and the other finds striking tells us something about what each model attends to, which is the observatory’s own subject matter folded back on itself.
What we are learning
The conviction axis is the spine. The violent map is conflict. The Hamming map is estrangement. Klein blue is presence and the three maps together say: a dozen alien minds keep, astonishingly, arriving at the same place — except one. The site exists to make that astonishment legible, to make the exceptions findable, and to make every claim checkable by walking the URL graph back to its evidence.
Built by Brendan Hopper with Claude Code. Designed in conversation, 2026-06-20. CC0.