Demo
The figures on this page are a recording: one real episode, frozen. If you would rather drive the loop yourself, the playground re-runs it in your browser on the same twelve wafers — switch the terms of the acquisition rule on and off and watch the choices change.
Recorded from a real run
Every figure below is one episode on wm811k-645735 (Edge-Ring, 533 dies), seed 0, recorded with python -m nano.demo --wafer wm811k-645735 --seed 0 against WM-811K. One wafer, chosen because the mechanism is clearest on it — the benchmark scores all twelve and publishes the weakest wafer beside the best one.
Re-run it locally and the figures regenerate; npm run sync:assets publishes them to a local build of this site.
The schematic version
Before the recording, here is the shape of what happens, drawn from a formula rather than from data:
One wafer, four states
Conceptual illustration- ● Measured die (observed)
- ○ Unmeasured die (hidden from agent)
- ▦ Prior scale · violet, low → high
- ▦ Prediction scale · cyan, low → high
- ▦ Uncertainty scale · amber, certain → unknown
- ✛ Recommended next measurement
Schematic only. These fields come from a deterministic formula inside this page, written to explain the loop. They are not WM-811K wafers and not benchmark output.
Walkthrough of one episode
Step 1 — Look at the prior
The agent starts with a simulation prior covering every die and no measurements at all. The prior is smooth, confident, and wrong at the wafer edge. At this point the estimate is the prior, and uncertainty is high everywhere.
Step 0 — prior only — Prior across the full wafer, before any measurement. Uncertainty is uniformly high.
Expected at: docs/public/results/demo_step_00.webp, produced by scripts/record_demo. Nothing is drawn until the real figure exists.
Step 2 — Take in the sparse start
A small, centre-biased set of initial measurements arrives. Near them the estimate tightens immediately; far from them nothing has changed. The uncertainty map now has visible structure, and that structure is the agent's own map of its ignorance.
Step 5 — initial observations absorbed — Prediction and uncertainty after the initial sparse mask, with measured dies marked.
Expected at: docs/public/results/demo_step_05.webp, produced by scripts/record_demo. Nothing is drawn until the real figure exists.
Step 3 — Watch it choose, and check why
The selection is the part worth scrutinising. A die is chosen because it scores highest on the acquisition function, and the score decomposes into terms that can be read separately: how unknown the die is, how much the prior is expected to be wrong there, and how far it is from anything already sampled. A choice that cannot be explained by those three numbers is a bug, not a decision.
The command prints the same decomposition as text, one line per measurement:
m= 20 die 188 score 0.5179 [uncertainty=1.000 disagreement=0.518 novelty=1.000] measured 0
m= 21 die 1 score 0.4861 [uncertainty=1.000 disagreement=0.486 novelty=1.000] measured 0
m= 22 die 369 score 0.4565 [uncertainty=1.000 disagreement=0.457 novelty=1.000] measured 1Read those three lines closely and they say something the design does not: this far from a centre-biased initial mask, uncertainty and novelty are both pinned at 1.0, so the score is the disagreement term and the other two order nothing. Whether the three-term product earns its terms is exactly what the ablation measures, and on WM-811K the answer is not the one the design assumes.
Acquisition score at the moment of choice — Acquisition surface with the selected die marked, alongside the uncertainty and disagreement terms that produced it.
Expected at: docs/public/results/demo_selection.webp, produced by scripts/record_demo. Nothing is drawn until the real figure exists.
Step 4 — Confirm uncertainty actually falls
After the measurement is taken, uncertainty should drop in the neighbourhood of the new point, and the prediction should move towards the measured value. If uncertainty does not fall where a measurement was just taken, the estimator is not doing its job.
Full episode — Every iteration of one budget: selection, measurement, and the uncertainty map collapsing.
Expected at: docs/public/results/demo.gif, produced by scripts/record_demo. Nothing is drawn until the real figure exists.
Step 5 — Compare against the truth that was hidden
Only at the end does the evaluation harness reveal the full wafer. Hidden from agent The comparison is between the original biased prior, the final reconstruction, and reality.
Final comparison — Biased prior, NANO reconstruction and hidden ground truth on one common scale.
Expected at: docs/public/results/demo_final.webp, produced by scripts/record_demo. Nothing is drawn until the real figure exists.
What to look for
| Question | Where the answer shows up |
|---|---|
| Does the estimate improve where measurements land? | Prediction map tightening around measured dies |
| Does the agent know where it is blind? | Uncertainty map structure before any correction |
| Is the selection explainable? | Acquisition surface decomposed into its terms |
| Does it beat spending the same budget arbitrarily? | Benchmark, not this page |
A demo can show that a loop runs and that its decisions are legible. It cannot show that the loop is better than the alternatives — only the benchmark can, and only under equal budget.