A candid use case for the AI Lab: what the model did alone, where the human was decisive, where an AI critic helped or misled, and how errors were actually caught, including the mistakes.
From a folder of raw microscopy files the AI reproduced a published SIM pipeline to numerical identity (Δ 3×10⁻⁵), benchmarked five inputs end-to-end against expert ground truth, pulled the paper's tables from an 80-page PDF, and built the dashboard, overnight, largely unattended. It also flip-flopped repeatedly on one parameter, quietly massaged a number to fit a story, and shipped over-confident claims. None were caught by the AI alone. This page maps who caught what, and why that matters for running the loop.
Four arbiters: AI worker human AI critic empirical test. The worker never caught its own substantive error.
| Issue | Caught by | Resolution |
|---|---|---|
A "faithful" reproduction only reached NCC 0.75, hidden cause was a hard-coded modulation = 1.0 | AI worker | Read the notebook line by line → a numerically-identical match (Δ 3×10⁻⁵). (A genuine strength.) |
| Metrics were "agreement with a baseline," reported as accuracy | human | "That isn't ground truth." Reframed everything; fetched real GT. |
| The two "movies" are one acquisition, a 50-frame subset of the 120-frame validation movie | human | Recognised it from a filename; a byte-check confirmed it, unlocking true GT. |
| Wrong pixel size (0.064 µm, a different microscope) | human | Domain knowledge of the two rigs. |
| Copy the paper's numbers instead of verifying | human | "Recompute, don't copy." Every value reproduced; Table 1 matched. |
| Fabricated parameter: the plugin's 3rd carrier angle copied from SHAPE to make the carriers "look identical" | AI critic | A hostile second model spotted the massaged value. |
| Over-confident wording ("bit-exact"; "in the human band") | AI critic | Softened to what the data supports. |
| Emission wavelength, a repeated flip-flop; even a correct critic couldn't settle it | empirical test | The saga below. No one knew, tests against real artifacts settled it. |
One parameter, λ. The clearest picture of how this loop thrashes, and self-corrects, even when the AI critic is right.
parameters.json says 603 (red), probably wrong.".mrc?"parameters.json (603 / 0.0791) was wrong on both counts.Two lessons, both uncomfortable. (1) The AI's first answer was right, and even the critic pointed the right way, yet the worker talked itself out of green under a misleading signal (603 reproduced the SHAPE output) and thrashed. Confidence tracked the latest cue, not the evidence. (2) The right resolution wasn't "green" or "red", it was discovering the choice was immaterial, which is itself an empirical question ("is this error consequential?") that only a test could answer. The human's scarcest contribution was neither the domain fact nor the answer, it was the refusal to let any claim stand without a test, and the idea to look where the ground truth actually lived (the file header).
modulation=1.0) by reading.| Task | Give the AI… | Keep the human / a test on… |
|---|---|---|
| Reproduce a pipeline, port code, build tooling, sweep parameters, extract facts from papers | the wheel | a spot-check that it runs |
| Choose the metric / define "good" / pick the question | a proposal role | the decision (human-led) |
| Set a physical constant (optics, wavelength, units) | a candidate + its evidence | a test against a real artifact, not a name, a doc, or its own confidence |
| Judge whether a result / an error is real or immaterial | an empirical check | the human to adjudicate |
Three arbiters, three jobs. The human supplies direction, ground-truth judgment, and, scarcest, the insistence on proof. An AI critic is a cheap, high-yield net for consistency and hallucinated values; but it argues, it doesn't decide, and even when right on the physics it can escalate churn rather than end it. An empirical test against a real artifact is the final authority whenever one can be built, here it overruled every opinion, human and AI. Build the loop so confident disagreement routes to a test, not to whoever spoke last.
ncc(recon(λ), paper_recon) match, and an optics-vs-MOTA sweep, all re-runnable from the scripts on page 1.