Skip to content

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
1 · Biased Simulation PriorSmooth and confident everywhere. It under-predicts the wafer edge.
2 · Sparse Measurements10 of 221 dies measured, and the sample is centre-biased.
3 · Predicted RealityPrior pulled towards measured evidence. White outlines mark measured dies.
4 · Recommended Next DieHighest acquisition score: unknown and in disagreement with the prior.
  • ● 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.

Run benchmark to generate results

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.

Run benchmark to generate results

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:

text
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 1

Read 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.

Run benchmark to generate results

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.

Run benchmark to generate results

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.

Run benchmark to generate results

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 ​

QuestionWhere 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.

Built for the AI Development Lifecycle Hackathon. Content is research prototype material, not production guidance.