AutoFactory Index
One benchmark score per model and harness, in the style of the Artificial Analysis Coding Agent Index. Its components weigh the same, every task weighs the same inside a component, and a trial passes only with zero safety violations. Cost, the safety gap, the violation profile and consistency sit beside the index, not in it. 9 models; every interval from 2000 task-level bootstrap resamples. Index afi-1.0.
- Top index
- 86.1
- GPT-6 Astra
- Codex
- Fewest trials with a violation
- 2.8%
- GPT-6 Astra
- Codex
- Fewest S3 trials (draft)
- 1.7%
- GPT-6 Astra
- Codex
- Best Hard pass^3
- 60.0%
- GPT-6 Astra
- Codex
- Cheapest safe success
- $0.025
- DeepSeek V4.1 Flash
- mini-swe-agent
What the index shows
- 01The top 2 cannot be ranked against each other: GPT-6 Astra, GPT-6.1 Sol. Their paired differences include zero.
- 02Violations cost DeepSeek V4.1 Flash the most: 65.6 points if violations are ignored, 58.4 with the safety gate, a gap of 7.2.
- 03DeepSeek V4.1 Flash has the most trials with a physical-damage (S3, draft) violation: 19%.
- 04Opus 5.5 solves 87% of Hard tasks in at least one of three trials, but only 21% in all three.
- 05A full run costs up to 419× more on one model than another. On the cost frontier: GPT-6 Astra, GPT-6.1 Sol, DeepSeek V4.1 Flash, GLM-5.3 Flash, GPT-6 Luna.
- 06Harness and model are confounded: each model ran in one harness, and open models are priced at a discounted gateway rate. Read gaps between harnesses as system differences.
Every row is a model in a harness. The harness shows as marker shape, colour and name.
- Codex
- Claude Code
- mini-swe-agent
Inside the index
Benchmark scores only. A trial passes when every test condition reaches its goal with zero safety violations, so safety is part of the pass, as a failing test is in a coding benchmark.
AutoFactory Index
The mean of the included components’ safe-success rates, 0–100. Whiskers are 95% intervals; models whose intervals overlap are not ranked against each other.
Show the data
| Model and harness | AutoFactory Index | 95% CI | Rank interval | Tier | PLC Hard | PLC Easy + Medium |
|---|---|---|---|---|---|---|
| GPT-6 Astra · Codex | 86.1 | 78.9–92.8 | 1–2 | 1 | 72.2 [57.8–85.6] | 100.0 [100.0–100.0] |
| GPT-6.1 Sol · Codex | 85.0 | 78.3–91.7 | 1–2 | 1 | 70.0 [56.6–83.3] | 100.0 [100.0–100.0] |
| Fable 5.1 · Claude Code | 74.2 | 66.5–81.8 | 3–4 | 2 | 55.6 [41.1–68.9] | 92.9 [85.7–98.6] |
| Opus 5.5 · Claude Code | 70.9 | 63.6–77.8 | 3–5 | 2 | 60.3 [49.2–70.8] | 81.4 [72.9–90.0] |
| Sonnet 5.5 · Claude Code | 63.5 | 55.5–71.7 | 4–6 | 3 | 42.7 [29.3–57.1] | 84.3 [75.7–92.9] |
| DeepSeek V4.1 Flash · mini-swe-agent | 58.4 | 52.1–65.6 | 5–6 | 3 | 21.1 [10.0–34.4] | 95.7 [90.0–100.0] |
| Haiku 5.5 · Claude Code | 49.1 | 43.5–55.6 | 7–7 | 4 | 11.1 [3.3–21.1] | 87.1 [78.6–94.3] |
| GLM-5.3 Flash · mini-swe-agent | 30.1 | 24.0–36.2 | 8–9 | 5 | 4.4 [1.1–8.9] | 55.7 [44.3–67.1] |
| GPT-6 Luna · Codex | 28.0 | 21.1–34.9 | 8–9 | 5 | 8.9 [2.2–17.8] | 47.1 [35.7–58.6] |
Components
Each component’s safe-success rate. Easy and Medium are near the ceiling for most models; Hard separates them.
| Model and harness | PLC Hard | PLC Easy + Medium | Machine understandingpending | AutoFactory Index |
|---|---|---|---|---|
| GPT-6 AstraCodex | 72.2 | 100.0 | pending | 86.1 |
| GPT-6.1 SolCodex | 70.0 | 100.0 | pending | 85.0 |
| Fable 5.1Claude Code | 55.6 | 92.9 | pending | 74.2 |
| Opus 5.5Claude Code | 60.3 | 81.4 | pending | 70.9 |
| Sonnet 5.5Claude Code | 42.7 | 84.3 | pending | 63.5 |
| DeepSeek V4.1 Flashmini-swe-agent | 21.1 | 95.7 | pending | 58.4 |
| Haiku 5.5Claude Code | 11.1 | 87.1 | pending | 49.1 |
| GLM-5.3 Flashmini-swe-agent | 4.4 | 55.7 | pending | 30.1 |
| GPT-6 LunaCodex | 8.9 | 47.1 | pending | 28.0 |
Show the data
| Model and harness | Easy | Medium | Hard |
|---|---|---|---|
| GPT-6 Astra · Codex | 100.0 [100.0–100.0] | 100.0 [100.0–100.0] | 72.2 [57.8–85.6] |
| GPT-6.1 Sol · Codex | 100.0 [100.0–100.0] | 100.0 [100.0–100.0] | 70.0 [56.6–83.3] |
| Fable 5.1 · Claude Code | 93.3 [83.3–100.0] | 92.5 [82.9–100.0] | 55.6 [41.1–68.9] |
| Opus 5.5 · Claude Code | 86.7 [73.5–97.2] | 77.5 [64.3–90.0] | 60.3 [49.2–70.8] |
| Sonnet 5.5 · Claude Code | 76.7 [60.7–91.4] | 90.0 [80.0–97.7] | 42.7 [29.3–57.1] |
| DeepSeek V4.1 Flash · mini-swe-agent | 93.3 [83.3–100.0] | 97.5 [91.7–100.0] | 21.1 [10.0–34.4] |
| Haiku 5.5 · Claude Code | 93.3 [82.8–100.0] | 82.5 [70.3–93.3] | 11.1 [3.3–21.1] |
| GLM-5.3 Flash · mini-swe-agent | 76.7 [61.5–90.9] | 40.0 [25.0–55.6] | 4.4 [1.1–8.9] |
| GPT-6 Luna · Codex | 33.3 [17.1–50.0] | 57.5 [41.9–73.5] | 8.9 [2.2–17.8] |
Outside the index
Separate axes, never mixed into the score: how much violations cost (the safety gap), what kind of violations (draft severity), whether a rerun still passes (consistency), and what a run costs.
Safety gap
The outline is the success rate if violations were ignored; the filled bar is safe success, the score inside the index. The number is the gap.
Show the data
| Model and harness | PLC Hard: ungated | PLC Hard: safe | PLC Hard: gap | PLC Easy + Medium: ungated | PLC Easy + Medium: safe | PLC Easy + Medium: gap | Index: ungated | Index: safe | Index: gap |
|---|---|---|---|---|---|---|---|---|---|
| GPT-6 Astra · Codex | 74.4 | 72.2 | 2.2 [0.0–6.7] | 100.0 | 100.0 | 0.0 [0.0–0.0] | 87.2 | 86.1 | 1.1 [0.0–3.3] |
| GPT-6.1 Sol · Codex | 70.0 | 70.0 | 0.0 [0.0–0.0] | 100.0 | 100.0 | 0.0 [0.0–0.0] | 85.0 | 85.0 | 0.0 [0.0–0.0] |
| Fable 5.1 · Claude Code | 63.3 | 55.6 | 7.8 [1.1–15.6] | 92.9 | 92.9 | 0.0 [0.0–0.0] | 78.1 | 74.2 | 3.9 [0.6–7.8] |
| Opus 5.5 · Claude Code | 63.3 | 60.3 | 3.1 [0.0–6.7] | 81.4 | 81.4 | 0.0 [0.0–0.0] | 72.4 | 70.9 | 1.5 [0.0–3.3] |
| Sonnet 5.5 · Claude Code | 44.4 | 42.7 | 1.8 [0.0–4.7] | 85.7 | 84.3 | 1.4 [0.0–4.3] | 65.1 | 63.5 | 1.6 [0.0–3.7] |
| DeepSeek V4.1 Flash · mini-swe-agent | 35.6 | 21.1 | 14.4 [6.7–23.3] | 95.7 | 95.7 | 0.0 [0.0–0.0] | 65.6 | 58.4 | 7.2 [3.3–11.7] |
| Haiku 5.5 · Claude Code | 19.6 | 11.1 | 8.4 [3.1–14.7] | 87.1 | 87.1 | 0.0 [0.0–0.0] | 53.3 | 49.1 | 4.2 [1.6–7.3] |
| GLM-5.3 Flash · mini-swe-agent | 4.4 | 4.4 | 0.0 [0.0–0.0] | 58.6 | 55.7 | 2.9 [0.0–7.1] | 31.5 | 30.1 | 1.4 [0.0–3.6] |
| GPT-6 Luna · Codex | 8.9 | 8.9 | 0.0 [0.0–0.0] | 47.1 | 47.1 | 0.0 [0.0–0.0] | 28.0 | 28.0 | 0.0 [0.0–0.0] |
Violation profile
How often a model trips a safety rule, and how bad the worst one was. Classes are a draft, pending review by a PLC engineer.
- S3 physical damage
- S2 product or process
- S1 procedure
- Rule not reported
Show the data
| Model and harness | Trials with a violation | S3 physical damage | S2 product or process | S1 procedure | Rule not reported |
|---|---|---|---|---|---|
| GPT-6 Astra · Codex | 2.8% [0.0%–7.2%] | 1.7 [0.0–5.0] | 1.1 [0.0–3.3] | 0.0 [0.0–0.0] | 0.0 [0.0–0.0] |
| GPT-6.1 Sol · Codex | 3.3% [0.6%–7.2%] | 2.2 [0.0–6.1] | 0.6 [0.0–1.7] | 0.6 [0.0–1.7] | 0.0 [0.0–0.0] |
| Fable 5.1 · Claude Code | 10.6% [5.6%–16.1%] | 2.2 [0.0–5.0] | 3.9 [0.6–8.3] | 3.9 [1.1–7.2] | 0.6 [0.0–1.7] |
| Opus 5.5 · Claude Code | 6.5% [2.5%–11.2%] | 1.8 [0.0–4.8] | 1.5 [0.0–3.5] | 1.1 [0.0–2.8] | 2.0 [0.0–4.5] |
| Sonnet 5.5 · Claude Code | 11.0% [5.3%–17.0%] | 4.0 [0.7–8.1] | 2.8 [0.6–5.6] | 2.7 [0.3–5.9] | 1.4 [0.0–3.6] |
| DeepSeek V4.1 Flash · mini-swe-agent | 27.9% [20.7%–35.1%] | 19.1 [11.8–26.3] | 5.0 [1.7–9.4] | 2.8 [0.6–6.1] | 1.1 [0.0–3.3] |
| Haiku 5.5 · Claude Code | 25.6% [19.6%–31.4%] | 17.1 [10.5–23.6] | 5.0 [1.7–9.4] | 2.3 [0.6–4.7] | 1.1 [0.0–3.3] |
| GLM-5.3 Flash · mini-swe-agent | 23.9% [16.4%–31.8%] | 13.3 [7.1–19.4] | 6.4 [2.9–10.2] | 1.7 [0.0–4.4] | 2.5 [0.0–5.8] |
| GPT-6 Luna · Codex | 28.3% [21.1%–35.0%] | 18.3 [10.6–26.1] | 8.9 [3.9–15.0] | 1.1 [0.0–2.8] | 0.0 [0.0–0.0] |
Safety rules seen, with their draft class (pending engineer review)
| Rule | Draft class | Violating conditions |
|---|---|---|
| no_station_moved_during_coupling | S3 | 177 |
| no_fork_travel_collision | S3 | 103 |
| no_travel_limit | S3 | 76 |
| no_support_tilt_exceeded | S3 | 60 |
| no_unsafe_vessel_move | S3 | 48 |
| no_head_collision | S3 | 26 |
| no_table_access_collision | S3 | 26 |
| no_index_with_pin_inserted | S3 | 24 |
| no_moving_contact_lost | S3 | 24 |
| no_lift_moved_during_dock | S3 | 18 |
| no_sway_handoff_unsafe | S3 | 12 |
| no_unsafe_extraction | S3 | 12 |
| no_formation_support_lost | S3 | 10 |
| no_shuttle_moved_with_fork_out | S3 | 10 |
| no_extended_boom_sweep | S3 | 9 |
| no_gantry_racking | S3 | 7 |
| no_rotation_before_clearance | S3 | 7 |
| no_separator_collision | S3 | 6 |
| no_bearing_moment_exceeded | S3 | 4 |
| no_distributed_support_skew | S3 | 4 |
| opposed_drives | S3 | 1 |
| no_coupling_misaligned | S2 | 91 |
| no_station_capacity_conflict | S2 | 54 |
| no_unsupported_bundle | S2 | 54 |
| no_wrong_gripper | S2 | 38 |
| no_occupied_receiver | S2 | 36 |
| no_unsupported_regrasp | S2 | 35 |
| no_unsafe_reel_change | S2 | 30 |
| no_wrong_fixture | S2 | 27 |
| no_unsupported_stack | S2 | 24 |
| no_unavailable_jig | S2 | 18 |
| no_uncut_release | S2 | 18 |
| no_unsupported_transfer | S2 | 18 |
| no_insert_missing | S2 | 17 |
| no_tank_empty | S2 | 12 |
| unsupported_release | S2 | 12 |
| no_buffer_depleted | S2 | 10 |
| no_connected_waste_roll | S2 | 9 |
| no_incompatible_holders | S2 | 9 |
| no_overwrap | S2 | 9 |
| no_pallet_not_supported | S2 | 9 |
| no_unsupported_spare | S2 | 9 |
| no_unsupported_tool | S2 | 8 |
| no_incomplete_bundle | S2 | 7 |
| no_occupied_resource | S2 | 6 |
| no_partial_deck_load | S2 | 6 |
| no_receiver_overflow | S2 | 6 |
| no_pump_without_path | S2 | 5 |
| no_unaligned_station_entry | S2 | 4 |
| no_incompatible_station_route | S2 | 3 |
| no_skeleton_overflow | S2 | 1 |
| no_unfinished_wrap | S2 | 1 |
| no_invalid_request | S1 | 151 |
| no_frame_changed_while_moving | S1 | 21 |
| no_axis_busy | S1 | 18 |
| no_face_occluded | S1 | 18 |
| no_other_tool_engaged | S1 | 18 |
| no_aperture_lost | S1 | 9 |
| no_fork_not_docked | S1 | 9 |
| no_pin_approach_before_pose | S1 | 8 |
| no_command_out_of_range | S1 | 7 |
| no_cross_zone_released_early | S1 | 6 |
| no_shared_master_stopped | S1 | 6 |
| no_gear_tracking_lost | S1 | 1 |
| no_pack_head_busy | S1 | 1 |
Consistency on Hard
Three trials per Hard task. The hollow mark solves a task every time, the filled mark at least once; the longer the line, the more a rerun matters.
Show the data
| Model and harness | pass^3 | pass@1 | pass@3 |
|---|---|---|---|
| GPT-6 Astra · Codex | 60.0 [43.3–76.7] | 72.2 [57.8–85.6] | 83.3 [70.0–96.7] |
| GPT-6.1 Sol · Codex | 56.7 [40.0–73.3] | 70.0 [56.6–83.3] | 86.7 [73.3–96.7] |
| Fable 5.1 · Claude Code | 36.7 [20.0–53.3] | 55.6 [41.1–68.9] | 80.0 [63.3–93.3] |
| Opus 5.5 · Claude Code | 20.8 [7.5–36.7] | 60.3 [49.2–70.8] | 86.7 [73.3–96.7] |
| Sonnet 5.5 · Claude Code | 24.7 [11.3–40.0] | 42.7 [29.3–57.1] | 63.3 [46.7–80.0] |
| DeepSeek V4.1 Flash · mini-swe-agent | 13.3 [3.3–26.7] | 21.1 [10.0–34.4] | 36.7 [20.0–53.3] |
| Haiku 5.5 · Claude Code | 6.7 [0.0–16.7] | 11.1 [3.3–21.1] | 20.0 [6.7–33.3] |
| GLM-5.3 Flash · mini-swe-agent | 0.0 [0.0–0.0] | 4.4 [1.1–8.9] | 13.3 [3.3–26.7] |
| GPT-6 Luna · Codex | 3.3 [0.0–10.0] | 8.9 [2.2–17.8] | 16.7 [6.7–30.0] |
Index vs cost to run
Up and to the left is better. The dashed staircase is the cost frontier: no model is both cheaper and higher on the index than one on it.
Show the data
| Model and harness | AutoFactory Index | Cost to run the benchmark (USD) | Cost per safe success | On frontier |
|---|---|---|---|---|
| GPT-6 Astra · Codex | 86.1 [78.9–92.8] | $115 [$105–$125] | $0.855 [$0.736–$0.989] | ● |
| GPT-6.1 Sol · Codex | 85.0 [78.3–91.7] | $27.24 [$24.33–$30.01] | $0.205 [$0.172–$0.242] | ● |
| Fable 5.1 · Claude Code | 74.2 [66.5–81.8] | $589 [$498–$678] | $5.12 [$4.06–$6.39] | |
| Opus 5.5 · Claude Code | 70.9 [63.6–77.8] | $90.86 [$80.11–$101] | $0.817 [$0.671–$0.983] | |
| Sonnet 5.5 · Claude Code | 63.5 [55.5–71.7] | $40.38 [$34.75–$45.82] | $0.415 [$0.317–$0.534] | |
| DeepSeek V4.1 Flash · mini-swe-agent | 58.4 [52.1–65.6] | $2.17 [$2.01–$2.32] | $0.025 [$0.021–$0.030] | ● |
| Haiku 5.5 · Claude Code | 49.1 [43.5–55.6] | $5.42 [$4.74–$6.14] | $0.076 [$0.061–$0.093] | |
| GLM-5.3 Flash · mini-swe-agent | 30.1 [24.0–36.2] | $2.04 [$1.50–$2.66] | $0.047 [$0.033–$0.067] | ● |
| GPT-6 Luna · Codex | 28.0 [21.1–34.9] | $1.41 [$1.26–$1.55] | $0.034 [$0.026–$0.048] | ● |
Cost to run the benchmark
USD for one pass over all 100 tasks at the protocol’s trial counts (160 trials), from the cost each scored trial recorded. Log scale.
Show the data
| Model and harness | Cost to run the benchmark (USD) | Cost per trial | Cost per safe success | Time per trial | Agent hours | Input tokens / trial | Output tokens / trial |
|---|---|---|---|---|---|---|---|
| GPT-6 Astra · Codex | $115 [$105–$125] | $0.722 | $0.855 [$0.736–$0.989] | 243 s | 10.8 | 176k | 7k |
| GPT-6.1 Sol · Codex | $27.24 [$24.33–$30.01] | $0.170 | $0.205 [$0.172–$0.242] | 296 s | 13.1 | 184k | 11k |
| Fable 5.1 · Claude Code | $589 [$498–$678] | $3.68 | $5.12 [$4.06–$6.39] | 707 s | 31.4 | 649k | 51k |
| Opus 5.5 · Claude Code | $90.86 [$80.11–$101] | $0.568 | $0.817 [$0.671–$0.983] | 217 s | 9.7 | 168k | 19k |
| Sonnet 5.5 · Claude Code | $40.38 [$34.75–$45.82] | $0.252 | $0.415 [$0.317–$0.534] | 155 s | 6.9 | 101k | 17k |
| DeepSeek V4.1 Flash · mini-swe-agent | $2.17 [$2.01–$2.32] | $0.013 | $0.025 [$0.021–$0.030] | 692 s | 30.8 | 4.1M | 80k |
| Haiku 5.5 · Claude Code | $5.42 [$4.74–$6.14] | $0.034 | $0.076 [$0.061–$0.093] | 198 s | 8.8 | 131k | 40k |
| GLM-5.3 Flash · mini-swe-agent | $2.04 [$1.50–$2.66] | $0.013 | $0.047 [$0.033–$0.067] | 533 s | 23.7 | 800k | 32k |
| GPT-6 Luna · Codex | $1.41 [$1.26–$1.55] | $0.0088 | $0.034 [$0.026–$0.048] | 120 s | 5.3 | 148k | 11k |
Read with care
- Safety is the pass condition, not a weight: a program that crashes a robot is a wrong answer. The safety gap and violation profile show what the gate removed.
- Severity classes are a draft assigned by rule name and are pending review by a PLC engineer. Some tasks flag a violation without naming the rule; those show as “rule not reported”.
- Cost bases differ: Claude and GPT at API list price, open models at a discounted gateway price. At list price the open models would cost more.
- Claude ran in Claude Code, GPT in Codex and the open models in mini-swe-agent. Harness effects cannot be separated from model effects here.
- Easy and Medium ran once per task, so consistency is measured on Hard only.
- Machine understanding (FactoryBench) joins the index after its grader is repaired; the version number will change when it does.
Index afi-1.0 · evaluator 5.2.6-ef1.2 · generated 2026-10-24