Surge Of Thoughts
Woke up today feeling uncertain about a couple of things.
Read it →What this lab is for
Experiments, writing, and interactive pages I built to understand something. Most of what is here is provisional and says so, and the reading list marks which citations I have actually checked.
On the desk right now
Woke up today feeling uncertain about a couple of things.
Read it →A record rather than an argument. The edit finally ran and said no: rank-one editing displaces probability toward country-flavoured content in anything sharing the subject, and carries no inference at all. The null turned out to be structural — ROME's own normalisation guarantees it, for every covariance and at every depth. How far the leakage reaches past the edit's own wording turned out to be an early-layer fact, and only a sweep separated the two. The errors were never in the measurements. The stars are real; the constellations were ours.
I withdrew a claim because I thought a benchmark already handled it. Then I read the paper's appendix instead of its prose, and found the withdrawal was the mistake. CounterFact has no possession check — and a model's own numbers say so.
Built to understand something
When reading about a thing was not enough, I made a page I could poke at. Every one of these opens and runs.
SecurityEdit ForensicsSomeone plants a false fact in an open model with ROME and republishes it. Given the claimed base, the planted subject ranked first of 20,391 names in 99 of 99 tampered GPT-2 models, and the planted object was read back in 82. Cheap hiding (weight noise, fine-tuning, spreading the edit over five layers) did not stop it; planting many facts at once and adding decoys did. GPT-2 only, with the limits stated.Open it ↗
AIModel MicroscopeGPT-2 opened up three ways on eighteen prepared prompts: what it would say if it stopped at each layer, which words it looks back at, and — by causal tracing, the method behind ROME — where a fact is actually stored. Includes the cases where it fails: a negated fact, a sum, and a CEO who changed after its training.
HPCGPU vs CPU, on Two Classic WorkloadsGravity between tens of thousands of bodies and heat spreading across a plate, live on your GPU, with native Metal measurements from an M2 Pro. One workload runs 22× faster on the GPU, the other under 2×: compute-bound versus memory-bound, shown with real numbers, and a video recorded on that GPU for browsers without WebGPU.
Brick StageMicroduck, in BricksPollen Robotics' open-source Microduck robot, sampled from its own CAD into 670 LEGO plates and built the way an instruction booklet builds it: in sections, every plate arriving along the path it really goes in, the head made on its own and set on the neck. Prompted by the Microduck LEGO booklet on Hugging Face.
Brick StageSpot the CowKeenan Crane's Spot (CC0), a textured 3D model downloaded and turned into 543 LEGO plates in one command — texture colours matched to real LEGO colours, every part checked as made by LEGO in that colour.
Systems in MiniatureRouting for a Shared Prompt CacheEight GPUs serve chat requests that share long prompts. Round robin keeps re-reading the same prompts; sending each prompt to the GPU that already has it cuts the wait for the first token from about half a second to 30 ms, until the most popular app overloads one GPU and a load cap spreads it.
Systems in MiniatureContinuous BatchingOne GPU writing many replies at once. Waiting for the slowest reply in each batch leaves seats empty half the time someone is queuing; swapping finished replies out at every step cuts the wait for the first word from 16 s to under half a second.Labs · deployment and security
Each lab is a real kind of incident, broken on purpose and small enough to run on a laptop. I fix it, prove the fix, and write down what it taught. 44 of the 244 scenarios have a lab so far; the dark part of each bar is solved, the light part is built and waiting.
Solved so far
Built, ready to solve · 40
Agentic · the work that runs overnight
Experiments run while I sleep. These are the small tools that queue them, refuse the unsafe ones, sort the failures and leave a report, so in the morning only the one thing that needs a person is waiting for me. Underneath them is one file of instructions every AI session here starts from.
$ python -m bearing ai/edit-slice
4 of 10 questions have an uncomfortable answer.
!! Do the last 5 finished items measure your instrument, or the world?
5 of the last 5 lean inward (E-030, E-031, E-032, E-033, E-034).
asked because: a run of inward work is how a project stops beingbearingReads a project's own record and asks the questions that correct course. It measures drift, and has no taste.Read how it works →$ python tools/watch.py [12:29:59] 1 job(s) queued [12:29:59] E-036: preflight [12:30:14] E-036: running (budget 3.0h) [12:49:34] E-036: finished in 19 min [12:49:34] E-036: ok — verdict ['UNDIFFERENTIATED'], report writtenThe unattended harnessGates that refuse before anything touches the network, a triage that sorts failures by cause, and a loop that escalates on exactly four things.Read how it works →
A green harness is not a sound experiment. E-036 passed every gate and still measured two of six criteria in ways that could not answer their ownThe practice, and its limitsThe boundary between what a loop may own and what a person must, and an honest account of what none of it can catch.Read how it works →
# Manifesto # Compass — keeping the work connected to real need # The Standard # Side Builds — the deliberate exception # Global Rules # Agentic Work Template # The Card — the default, and the width limitdotclaudeThe instructions every Claude session here starts from: why the work exists, how a card is opened, and when the heavy protocols are allowed.Read it on GitHub ↗
Reading · before the next experiment
The papers my work rests on, and why each one matters to it. A citation counts as checked only once I have read it against the paper itself, and every one on the list has been.