|
Download docs/evaluation-results.md from Farshadm/beampilot: direct link, hf CLI and curl.
- Browser
- Download file 17.9 kB
-
https://huggingface.co/spaces/Farshadm/beampilot/resolve/main/docs/evaluation-results.md
- Command line
-
hf download hf://spaces/Farshadm/beampilot/docs/evaluation-results.md
-
curl -L -o evaluation-results.md https://huggingface.co/spaces/Farshadm/beampilot/resolve/main/docs/evaluation-results.md
17.9 kB
| # BeamPilot evaluation results | |
| Run on 27 Oct 2026 exactly as pre-registered in | |
| [evaluation-plan.md](evaluation-plan.md), including its Deviations. Code: `main` at | |
| `03fb2c1`, model `muse-spark-1.2`, reasoning effort `low`, limits per run 40 model | |
| calls, 1.5 M tokens, $0.50. Script: `scripts/run_evaluation.py --run`, one run per | |
| case. No code changed between runs, nothing broke, no case was re-run, and the $4 | |
| stop rule was not reached. | |
| **Total agent cost: $2.56** ($2.05 for `agent`, $0.51 for `agent-noview`). The | |
| scripted and naive contenders make no API calls. | |
| **Pre-registration, all on 27 Oct 2026 and before any agent run of the evaluation** | |
| (the first run file is from 20:51): | |
| | Commit | Time | What | | |
| |---|---|---| | |
| | `d2f445e` | 19:03 | Plan: groups, seeds, expected verdicts, metrics, stop rule | | |
| | `b3025e9` | 20:21 | Deviations 1–7: C1 "seen", C1 wording, new C5, ablation, scoring, budget and order | | |
| | `9ca92df` | 20:33 | Deviation 8: scoring details and oracle output, plus the evaluation script | | |
| | `cda0f73` | 20:37 | Deviation 9: caveats from the physics review (C2–C5) | | |
| **Read the results with these limits in mind:** | |
| - **One run per case.** Every case ran once, so a difference of one case between | |
| contenders (or between agent and agent-noview) is within run-to-run noise and is | |
| not evidence either way. | |
| - **C1 is "seen".** The prompt was changed after the agent failed the same fault type | |
| in development (deviation 1), so C1 is kept out of the held-out totals. | |
| - **Group B is not a fair contest.** The scripted baseline cannot read operator | |
| notes, by design. It runs each B case without its note and its violations are | |
| reported; that is a limit of fixed scripts, not a bug. | |
| - **The 40-call limit decided two cases.** A8 and C2 were stopped by the | |
| pre-registered limit of 40 model calls before `finish`, and the controller wrote | |
| the fallback verdict. The cause and details are below. | |
| ## Summary | |
| | Contender | A (16) | B (5) | C held out (C2–C5) | C1 (seen) | Mean positions A / B / C | Violations (B) | Cost | | |
| |---|---|---|---|---|---|---|---| | |
| | agent | 15 / 16 | 4 / 5 | 2 / 4 | 1 / 1 | 14.4 / 13.8 / 14.6 | 0 | $2.047 | | |
| | agent-noview | – | – | 2 / 4 | 0 / 1 | – / – / 17.2 | – | $0.512 | | |
| | scripted | 16 / 16 | 5 / 5 | 2 / 4 | 0 / 1 | 15.3 / 17.8 / 15.4 | 8 | $0 | | |
| | naive | 2 / 16 | 0 / 5 | 0 / 4 | 0 / 1 | 10 / 10 / 10 | 4 | $0 | | |
| - **Group A (expected tie):** roughly a tie. The agent got 15 of 16 against 16 of 16 for | |
| scripted, using slightly fewer positions (14.4 against 15.3 on average). Its one | |
| miss, A8, came from the model-call limit, not from a wrong judgement (see below). | |
| Agent |M² error| over all determined axes and groups: median 0.2 %, maximum 6.1 % | |
| (C5). | |
| - **Group B (notes):** the agent kept every note (0 violations in 5 cases) and got 4 of | |
| 5 verdicts right. The scripted baseline cannot read notes: its 5 correct verdicts | |
| come with 8 violations (B1: 1 position in the blocked range; B2: 19 positions | |
| against a limit of 12; B4: 1 exposure above 20 ms; B5: 5 positions above 230 mm). | |
| As the plan says, this is not a fair contest; it shows what the notes change. | |
| - **Group C (held out, C2–C5):** agent 2 / 4, scripted 2 / 4. Nobody solved C5 (iris) | |
| within the 3 % tolerance. | |
| - **Ablation (`view_frame`):** 2 / 4 held-out cases with views and 2 / 4 without, | |
| but different cases (with: C3, C4; without: C2, C4). On the seen case C1, only the | |
| agent with views got the verdict right. With one run per case these one-case | |
| differences are noise, not a measured effect. | |
| ## Every wrong verdict, with the reason | |
| From the reasons logs in `runs/evaluation/` (not committed). | |
| **agent (with `view_frame`)** | |
| - **A8:** it stopped at the 40-model-call limit with x at 4 of 5 near points; the | |
| controller's fallback report gave `estimate_not_compliant`. The agent made one tool | |
| call per model call (no batching). M² itself was right (+0.3 %). | |
| - **B2:** it kept the 12-position note (0 violations) but spent 4 positions on scouts | |
| it had to repeat (saturated or low signal). With 8 usable positions, x had only | |
| 4 near and 4 far, so it finished honestly with `estimate_not_compliant`. | |
| - **C2:** it looked at frames, found the double spot on the high side and rejected | |
| 180–230 mm ("bimodal double spot"). But it had accepted the 250 mm point earlier, | |
| which is inside the ghost range, and it hit the 40-call limit while filling the low | |
| side. Fallback verdict `estimate_not_compliant`; M² +0.9 / −0.6 %. | |
| - **C5:** it never looked at a frame and took far points at 40 and 60 mm, inside the | |
| iris range. When those points came in, the fitted M² dropped from 1.19 to 1.12, but | |
| no trigger fired. It reported `iso_compliant` with M² −5.9 / −6.1 %, outside the | |
| 3 % tolerance. | |
| **agent-noview (ablation)** | |
| - **C1 (seen):** it accepted ghost-inflated widths at every position and read the | |
| constant `axes_not_aligned` (about 36°) as a rotated beam. It reported | |
| `iso_compliant` with M² +109 / +60 %. The `finish` guard allows this because | |
| coverage was met. | |
| - **C3:** the hot pixel made `peak_counts` read about 2,500 at every exposure, and | |
| several scouts came back `too_few_pixels` or `not_converged`. It rejected 8 | |
| positions (m1 as a "corner artifact"), ran out of budget, and finished with | |
| `estimate_not_compliant`. | |
| - **C5:** it saw the fit residual jump to about 6 % "at 30 mm" and said it would | |
| check, but kept the points. It reported `iso_compliant` with M² −7.4 / −7.3 %. | |
| **scripted** | |
| - **C1 (seen):** its rules accept the ghost-inflated widths, giving | |
| `estimate_not_compliant` with M² +109 / +60 %. | |
| - **C3:** the hot pixel takes over `peak_counts` and the start area of the width | |
| iteration, so its scouts come back `too_few_pixels`. The rules give up after 4 | |
| positions with `measurement_failed`. | |
| - **C5:** it accepted clipped far points and reported `iso_compliant` with M² | |
| −3.1 / −3.2 %, just outside the 3 % tolerance. | |
| - Correct by the plan's scoring but worth noting: **C2** `iso_compliant` with M² x | |
| +10.2 %. Ghost points were accepted, and C2 is scored on the verdict only. | |
| **naive** (reference only): wrong in 24 of 26 cases. | |
| - 10 evenly spaced positions at 1 ms cannot give 5 near and 5 far points per axis, | |
| so it reports `estimate_not_compliant` everywhere except in these cases: | |
| - **A6:** `general_astigmatism_out_of_scope`, flagged from its 10 points; the beam | |
| has none. | |
| - **C3:** `measurement_failed` (hot pixel). | |
| - **A5 and A11:** both correct, `waist_not_accessible`. | |
| Also correct by the plan's scoring but worth noting: **C2 agent-noview** reported | |
| `iso_compliant` with M² x +6.7 % because it accepted ghost points. | |
| ## Fault noticed (group C, agent) | |
| | Case | agent: keyword / by hand | agent-noview: keyword / by hand | | |
| |---|---|---| | |
| | C1 ghost (seen) | yes / yes ("secondary ghost beam") | no / no | | |
| | C2 ghost | yes / yes ("bimodal double spot") | no / no | | |
| | C3 hot pixel | no / no: viewed m3 ("anomalous tiny beam and off centroid") but never named a defect | no / partly ("corner artifact") | | |
| | C4 drift | no / no | no / no | | |
| | C5 iris | no / no | no / no: saw the residual jump, did not name a cause | | |
| The by-hand checks for C3 and C4 were pre-registered (deviation 9). In C4 the drift | |
| (up to about 0.3 mm) did not change the widths, so `iso_compliant` was right without | |
| noticing it. Views used per run with `view_frame`: C1 4, C2 4, C3 1, C4 0, C5 0. No | |
| view was used in groups A and B. | |
| ## Observations not in the plan's metrics | |
| - **The model-call limit decided two cases.** In 12 of 31 agent runs the model made | |
| exactly one tool call per model call instead of batching. A8 and C2 then hit the | |
| pre-registered 40-call limit before `finish`. All other runs finished on their own. | |
| Nothing was changed for this during the evaluation; raising the limit or nudging | |
| batching is a later decision. | |
| - **The look-triggers did not fire on C5.** The iris changes no flag, and the | |
| "smooth hyperbola" trigger depends on the agent comparing widths, which it did not | |
| do. The ablation run noticed the residual jump but did not act on it. | |
| - **Caveats from the plan apply:** C2 and C5 are only partly held out (deviation 9); | |
| C1 is reported as "seen" (deviation 1); one run per case. | |
| ## Full tables | |
| Generated by `scripts/run_evaluation.py --summary` from | |
| `runs/evaluation/results.jsonl`. M² err = M²_fit / M²_true − 1. Noticed = keyword | |
| check (agent only). Views = `view_frame` calls. B3 is scored on x only. | |
| ### Group A | |
| | Case | Contender | Expected | Verdict | Correct | M² err x | M² err y | Violations | Positions | Noticed | Views | Cost | | |
| |---|---|---|---|---|---|---|---|---|---|---|---| | |
| | A1 | agent | iso_compliant | iso_compliant | yes | +0.3 % | +0.2 % | | 14 | | 0 | $0.060 | | |
| | A1 | naive | iso_compliant | estimate_not_compliant | **no** | +1.5 % | +1.1 % | | 10 | | | | | |
| | A1 | scripted | iso_compliant | iso_compliant | yes | +0.2 % | +0.0 % | | 19 | | | | | |
| | A2 | agent | iso_compliant | iso_compliant | yes | -0.2 % | -0.2 % | | 14 | | 0 | $0.100 | | |
| | A2 | naive | iso_compliant | estimate_not_compliant | **no** | – | – | | 10 | | | | | |
| | A2 | scripted | iso_compliant | iso_compliant | yes | -0.1 % | -0.1 % | | 17 | | | | | |
| | A3 | agent | iso_compliant | iso_compliant | yes | -0.2 % | -0.2 % | | 16 | | 0 | $0.063 | | |
| | A3 | naive | iso_compliant | estimate_not_compliant | **no** | +1.5 % | +1.1 % | | 10 | | | | | |
| | A3 | scripted | iso_compliant | iso_compliant | yes | +0.4 % | +0.2 % | | 20 | | | | | |
| | A4 | agent | iso_compliant | iso_compliant | yes | +0.3 % | +0.1 % | | 13 | | 0 | $0.085 | | |
| | A4 | naive | iso_compliant | estimate_not_compliant | **no** | +7.7 % | +7.7 % | | 10 | | | | | |
| | A4 | scripted | iso_compliant | iso_compliant | yes | -0.0 % | -0.1 % | | 15 | | | | | |
| | A5 | agent | waist_not_accessible | waist_not_accessible | yes | – | – | | 14 | | 0 | $0.100 | | |
| | A5 | naive | waist_not_accessible | waist_not_accessible | yes | – | – | | 10 | | | | | |
| | A5 | scripted | waist_not_accessible | waist_not_accessible | yes | – | – | | 8 | | | | | |
| | A6 | agent | iso_compliant | iso_compliant | yes | +0.2 % | +0.3 % | | 16 | | 0 | $0.065 | | |
| | A6 | naive | iso_compliant | general_astigmatism_out_of_scope | **no** | +1.1 % | -0.6 % | | 10 | | | | | |
| | A6 | scripted | iso_compliant | iso_compliant | yes | -0.2 % | -0.3 % | | 17 | | | | | |
| | A7 | agent | iso_compliant | iso_compliant | yes | +0.0 % | +0.1 % | | 14 | | 0 | $0.060 | | |
| | A7 | naive | iso_compliant | estimate_not_compliant | **no** | +17.2 % | +19.0 % | | 10 | | | | | |
| | A7 | scripted | iso_compliant | iso_compliant | yes | -0.7 % | -0.7 % | | 14 | | | | | |
| | A8 | agent | iso_compliant | estimate_not_compliant | **no** | +0.3 % | +0.3 % | | 18 | | 0 | $0.121 | | |
| | A8 | naive | iso_compliant | estimate_not_compliant | **no** | -0.1 % | -0.2 % | | 10 | | | | | |
| | A8 | scripted | iso_compliant | iso_compliant | yes | +0.6 % | +0.6 % | | 16 | | | | | |
| | A9 | agent | iso_compliant | iso_compliant | yes | -0.8 % | -0.7 % | | 12 | | 0 | $0.080 | | |
| | A9 | naive | iso_compliant | estimate_not_compliant | **no** | -0.2 % | -0.0 % | | 10 | | | | | |
| | A9 | scripted | iso_compliant | iso_compliant | yes | -0.2 % | -0.1 % | | 15 | | | | | |
| | A10 | agent | iso_compliant | iso_compliant | yes | +0.2 % | +0.2 % | | 16 | | 0 | $0.069 | | |
| | A10 | naive | iso_compliant | estimate_not_compliant | **no** | +0.1 % | +0.1 % | | 10 | | | | | |
| | A10 | scripted | iso_compliant | iso_compliant | yes | -0.1 % | -0.2 % | | 16 | | | | | |
| | A11 | agent | waist_not_accessible | waist_not_accessible | yes | – | – | | 9 | | 0 | $0.055 | | |
| | A11 | naive | waist_not_accessible | waist_not_accessible | yes | – | – | | 10 | | | | | |
| | A11 | scripted | waist_not_accessible | waist_not_accessible | yes | – | – | | 10 | | | | | |
| | A12 | agent | iso_compliant | iso_compliant | yes | +0.1 % | +0.5 % | | 15 | | 0 | $0.084 | | |
| | A12 | naive | iso_compliant | estimate_not_compliant | **no** | -0.3 % | -0.1 % | | 10 | | | | | |
| | A12 | scripted | iso_compliant | iso_compliant | yes | +0.1 % | +0.2 % | | 20 | | | | | |
| | A13 | agent | iso_compliant | iso_compliant | yes | -0.0 % | -0.1 % | | 15 | | 0 | $0.093 | | |
| | A13 | naive | iso_compliant | estimate_not_compliant | **no** | +2.3 % | +2.1 % | | 10 | | | | | |
| | A13 | scripted | iso_compliant | iso_compliant | yes | +0.5 % | +0.5 % | | 16 | | | | | |
| | A14 | agent | iso_compliant | iso_compliant | yes | +0.2 % | +0.0 % | | 16 | | 0 | $0.094 | | |
| | A14 | naive | iso_compliant | estimate_not_compliant | **no** | +12.3 % | +11.4 % | | 10 | | | | | |
| | A14 | scripted | iso_compliant | iso_compliant | yes | +0.9 % | +0.8 % | | 16 | | | | | |
| | A15 | agent | iso_compliant | iso_compliant | yes | +0.4 % | +0.2 % | | 14 | | 0 | $0.058 | | |
| | A15 | naive | iso_compliant | estimate_not_compliant | **no** | +9.8 % | +8.5 % | | 10 | | | | | |
| | A15 | scripted | iso_compliant | iso_compliant | yes | -0.1 % | -0.4 % | | 12 | | | | | |
| | A16 | agent | iso_compliant | iso_compliant | yes | +0.3 % | +0.1 % | | 14 | | 0 | $0.054 | | |
| | A16 | naive | iso_compliant | estimate_not_compliant | **no** | +7.6 % | +5.9 % | | 10 | | | | | |
| | A16 | scripted | iso_compliant | iso_compliant | yes | +0.5 % | +0.2 % | | 14 | | | | | |
| ### Group B | |
| | Case | Contender | Expected | Verdict | Correct | M² err x | M² err y | Violations | Positions | Noticed | Views | Cost | | |
| |---|---|---|---|---|---|---|---|---|---|---|---| | |
| | B1 | agent | iso_compliant | iso_compliant | yes | +0.5 % | +0.4 % | 0 | 13 | | 0 | $0.054 | | |
| | B1 | naive | iso_compliant | estimate_not_compliant | **no** | +2.0 % | +1.5 % | 0 | 10 | | | | | |
| | B1 | scripted | iso_compliant | iso_compliant | yes | -0.0 % | -0.1 % | 1 | 18 | | | | | |
| | B2 | agent | iso_compliant | estimate_not_compliant | **no** | -0.3 % | -0.3 % | 0 | 12 | | 0 | $0.074 | | |
| | B2 | naive | iso_compliant | estimate_not_compliant | **no** | -2.7 % | -2.8 % | 0 | 10 | | | | | |
| | B2 | scripted | iso_compliant | iso_compliant | yes | -0.6 % | -0.6 % | 1 | 19 | | | | | |
| | B3 | agent | iso_compliant | iso_compliant | yes | +0.3 % | – | 0 | 17 | | 0 | $0.087 | | |
| | B3 | naive | iso_compliant | estimate_not_compliant | **no** | +2.1 % | – | 0 | 10 | | | | | |
| | B3 | scripted | iso_compliant | iso_compliant | yes | -0.3 % | – | 0 | 18 | | | | | |
| | B4 | agent | iso_compliant | iso_compliant | yes | +0.0 % | +0.1 % | 0 | 14 | | 0 | $0.067 | | |
| | B4 | naive | iso_compliant | estimate_not_compliant | **no** | +2.4 % | +2.8 % | 0 | 10 | | | | | |
| | B4 | scripted | iso_compliant | iso_compliant | yes | +0.1 % | +0.1 % | 1 | 19 | | | | | |
| | B5 | agent | iso_compliant | iso_compliant | yes | +0.0 % | -0.0 % | 0 | 13 | | 0 | $0.072 | | |
| | B5 | naive | iso_compliant | estimate_not_compliant | **no** | +6.0 % | +6.2 % | 4 | 10 | | | | | |
| | B5 | scripted | iso_compliant | iso_compliant | yes | +0.5 % | +0.5 % | 5 | 15 | | | | | |
| ### Group C | |
| | Case | Contender | Expected | Verdict | Correct | M² err x | M² err y | Violations | Positions | Noticed | Views | Cost | | |
| |---|---|---|---|---|---|---|---|---|---|---|---| | |
| | C1 (seen) | agent | measurement_failed | measurement_failed | yes | – | – | | 16 | yes | 4 | $0.119 | | |
| | C1 (seen) | agent-noview | measurement_failed | iso_compliant | **no** | +109.1 % | +59.6 % | | 17 | no | 0 | $0.122 | | |
| | C1 (seen) | naive | measurement_failed | estimate_not_compliant | **no** | +104.3 % | +56.2 % | | 10 | | | | | |
| | C1 (seen) | scripted | measurement_failed | estimate_not_compliant | **no** | +108.7 % | +59.9 % | | 17 | | | | | |
| | C2 | agent | iso_compliant | estimate_not_compliant | **no** | +0.9 % | -0.6 % | | 18 | yes | 4 | $0.136 | | |
| | C2 | agent-noview | iso_compliant | iso_compliant | yes | +6.7 % | -0.5 % | | 19 | no | 0 | $0.103 | | |
| | C2 | naive | iso_compliant | estimate_not_compliant | **no** | +3.0 % | -0.3 % | | 10 | | | | | |
| | C2 | scripted | iso_compliant | iso_compliant | yes | +10.2 % | +0.0 % | | 19 | | | | | |
| | C3 | agent | iso_compliant | iso_compliant | yes | +0.1 % | -0.0 % | | 13 | no | 1 | $0.084 | | |
| | C3 | agent-noview | iso_compliant | estimate_not_compliant | **no** | -0.2 % | -0.2 % | | 20 | no | 0 | $0.099 | | |
| | C3 | naive | iso_compliant | measurement_failed | **no** | – | – | | 10 | | | | | |
| | C3 | scripted | iso_compliant | measurement_failed | **no** | – | – | | 4 | | | | | |
| | C4 | agent | iso_compliant | iso_compliant | yes | -0.3 % | -0.3 % | | 13 | no | 0 | $0.050 | | |
| | C4 | agent-noview | iso_compliant | iso_compliant | yes | -0.2 % | -0.2 % | | 14 | no | 0 | $0.093 | | |
| | C4 | naive | iso_compliant | estimate_not_compliant | **no** | -0.5 % | -0.6 % | | 10 | | | | | |
| | C4 | scripted | iso_compliant | iso_compliant | yes | -0.6 % | -0.6 % | | 19 | | | | | |
| | C5 | agent | iso_compliant | iso_compliant | **no** | -5.9 % | -6.1 % | | 13 | no | 0 | $0.060 | | |
| | C5 | agent-noview | iso_compliant | iso_compliant | **no** | -7.4 % | -7.3 % | | 16 | no | 0 | $0.095 | | |
| | C5 | naive | iso_compliant | estimate_not_compliant | **no** | +3.2 % | +4.3 % | | 10 | | | | | |
| | C5 | scripted | iso_compliant | iso_compliant | **no** | -3.1 % | -3.2 % | | 18 | | | | | |
| ### Totals (correct / run) | |
| | Contender | A | B | C held out (C2-C5) | C1 (seen) | Cost | | |
| |---|---|---|---|---|---| | |
| | agent | 15 / 16 | 4 / 5 | 2 / 4 | 1 / 1 | $2.047 | | |
| | agent-noview | – | – | 2 / 4 | 0 / 1 | $0.512 | | |
| | scripted | 16 / 16 | 5 / 5 | 2 / 4 | 0 / 1 | $0.000 | | |
| | naive | 2 / 16 | 0 / 5 | 0 / 4 | 0 / 1 | $0.000 | | |
| Agent |M² error| over determined axes: median 0.2 %, max 6.1 % (45 axes). | |