// SteelEnv · computer-use track · five-task study · November 2026
Five hard steel tasks in FreeCAD, six model settings
We ran GPT-6 Astra, Claude Fable 5.1 and Claude Opus 5.5 at max effort on the five rebuild tasks where the earlier models did worst, and compared them with the earlier Opus 5.5 high, GPT-6.1 Sol and Gemini 4 Argon runs: scores, where each one fails, why, and what it costs.
Deccan AI · 5 tasks · 6 model settings · 90 runs, 83 finished and graded · November 2026
On five rebuild tasks picked because the earlier models did badly on them, Claude Opus 5.5 at max effort solved 7 of 8 of its finished runs. Gemini 4 Argon solved 8 of 15, Claude Fable 5.1 6 of 15, GPT-6 Astra 5 of 15, the same Opus 5.5 at high effort 4 of 15 and GPT-6.1 Sol none. Max effort is also the slowest and dearest by far: about 11,000 tokens of thinking per step, 13 hours and $140 per finished run.
7 of 8
finished Opus 5.5 max runs solved, the best result
Ranked by the share of finished runs that solve the task. Opus max leads on every task it finished; its stopped passes were halted by us, not by failure. Astra's one-run lead over Opus high comes from the stair stringer, which it solved 3 times in about 20 minutes each.
Model and effort
Runs solved
Average score
Cost / run
Time / run
Claude Opus 5.5maxstudy
7 of 8
0.98
$120
13.2 h
Gemini 4 Argonhighearlier
8 of 15
0.74
$7
2.5 h
Claude Fable 5.1highstudy
6 of 15
0.72
$36
1.4 h
GPT-6 Astrahighstudy
5 of 15
0.61
$48
1.2 h
Claude Opus 5.5highearlier
4 of 15
0.59
$18
1.1 h
GPT-6.1 Solhighearlier
0 of 15
0.53
$6
1.1 h
Finished runs only. A run is solved at score 1.0: every part within 1/16 in, every hole right, no clash. Cost and time are medians over finished runs. Opus max finished 8 runs; 7 more were stopped before they ended (section 6).
The pipe-support frame (r9) was re-graded on 3 Nov. The grader's overlap test failed on beams that touch the existing angles face to face: after its shape check had meshed the beam, it counted two clip angles as lying entirely inside it (2 × 218.7 = 437.3 cm³). That false clash was in 11 of the 18 runs. With the test run on clean copies of the solids, 8 scores go up and 4 runs that had built every part right now score 1.0: Argon · high pass 1, Fable 5.1 · high pass 2, Fable 5.1 · high pass 3, Opus 5.5 · high pass 3. Nothing else changed, and the unchanged grader run the same way reproduces every official verdict. All scores on this page include the re-grade.
Every run at a glance
One box per run, three runs per model per task. Hover or tap a box for its details.
Opus maxmax
Argonhigh
Fablehigh
Astrahigh
Opus highhigh
Solhigh
Skewed rooftop pipe-support framev4r07 · 10 parts
✓
1/1
.00.00✓
1/3
✓.32.72
1/3
.00.00✓
1/3
.45.36✓
1/3
.58.44.44
0/3
Double-angle X-bracing in a factory wallv4r02 · 6 parts
✓
1/1
.60.60✓
1/3
✓✓.00
2/3
.30.60✓
1/3
.75✓.60
1/3
.60.15.30
0/3
Stair stringer with its tread anglesv5r04 · 14 parts
✓
1/1
✓✓✓
3/3
✓.06.78
1/3
✓✓✓
3/3
.78✓.06
1/3
.66.78.78
0/3
Pipe-support frame on a pipe rackr9 · 5 parts
✓✓✓
3/3
✓✓.54
2/3
.72✓✓
2/3
.72.00.72
0/3
.54.04✓
1/3
.30.72.45
0/3
Stair landing post framesv5r09 · 12 parts
✓.82
1/2
.60.83✓
1/3
.82.53.82
0/3
.75.60.45
0/3
.60.56.06
0/3
.75.53.45
0/3
✓ solved (1.0) not solved: the fill is the score (0.9 × share of parts right) stopped before it finished
Opus 5.5: high effort against max effort
Same model, same tasks, same prompts and grader; only the effort setting differs. At max effort Opus solved every task it finished, including the stair landing frames, which it never solved at high effort.
Skewed rooftop pipe-support framev4r07 · 10 parts
high
1/3 solved
max
1/1 solved +2 stopped
Double-angle X-bracing in a factory wallv4r02 · 6 parts
high
1/3 solved
max
1/1 solved +2 stopped
Stair stringer with its tread anglesv5r04 · 14 parts
high
1/3 solved
max
1/1 solved +2 stopped
Pipe-support frame on a pipe rackr9 · 5 parts
high
1/3 solved
max
3/3 solved
Stair landing post framesv5r09 · 12 parts
high
0/3 solved
max
1/2 solved +1 stopped
00.250.50.751.0 solved
Bar = average score of the finished runs; dots = each run (filled = solved). "Stopped" passes were halted by us before they finished: six once another pass had solved the task, one after the API usage limit (section 6).
2 · Why: what the reasoning and screens show
Astra is fast and literal: it starts building within minutes, copies parts that look right and rarely checks, so it wins where quick, exact copying is enough. Opus at high effort reads carefully, but its thinking often spots a problem and moves on. At max effort it measures everything in the model and checks its work before finishing, which is why it solved 7 of 8, at 9 to 26 hours a run.
GPT-6 Astra · high
Opus 5.5 · high
Opus 5.5 · max
Runs solved
5 of 15
4 of 15
7 of 8
First part built
after 5 to 18 min
after 10 to 80 min
after 3 to 14 h
Reading the drawings
fast and literal; copies parts that look alike
careful, but misreads small tables and uses handbook sizes
thorough, then measures the model to settle every doubt
Checks before "done"
rarely
rarely; its thinking notices problems and moves on
always: measures, reopens its export, zooms in
Final message
one line: "done"
lists what it did not check
states what it checked
Output per step
about 210 tokens
about 500 tokens
about 11,000 tokens
Skewed frame: Astra 1 of 3, Opus high 1 of 3, Opus max 1 of 1
Parts already in the model look like the missing girts but sit at slightly different spots. Astra copied one of them in two runs instead of reading the drawing, so all 10 parts slid 33 mm (score 0). Opus high twice took the lower girt's height from a nearby plate instead of the drawing; Opus max checked both girt heights against the drawing before saving.
Opus high, pass 1: it checks the lower girt's height on a knife plate (status bar: z = 567,080.4), not the drawing's 567,055. The girt ends up 12.7 mm high.Opus max: before saving it hovers its own girt top and reads z = 569,341.0000, exactly the drawing's elevation (and 567,055.0 for the lower girt).
X-bracing: Astra 1 of 3, Opus high 1 of 3, Opus max 1 of 1
All three read the drawings right. The score came down to a FreeCAD quirk: one placement box shows the number you typed but stores it rounded, which pushes a brace 0.05 mm into the plate it bolts to, just over the clash limit. Astra caught it once by reading the stored value back, Opus high twice called the rounded value “a match”, and Opus max typed its numbers where FreeCAD keeps them exactly.
Opus high, pass 1: it typed 97,326.453; the panel shows the stored 97.326500 m and Opus calls it a match. That 0.05 mm fails the clash check.Astra, pass 3: the panel shows y = 97,288.400000, not the 97,288.35 it typed. It retypes the value, and this one check turns 0.60 into 1.00.
Stair stringer: Astra 3 of 3, Opus high 1 of 3, Opus max 1 of 1
Every run copied the stringer on the other side of the stair as a mirror image, so the score came down to two details: the mirror line within 0.8 mm, and exactly the 14 parts on the parts list. Astra measured the tread itself and checked each part's size, about 20 minutes a run; Opus high once measured from the wrong edge (below) and once copied a wrong plate; Opus max worked the line out from the drawing first, then measured to confirm.
Opus high, pass 3: it takes the end of the tread from the steel edge it is hovering (status bar: x = 22631.40). The tread really starts 1.6 mm further on, so all 13 copied parts land 1.6 mm off.Astra, pass 2: it hides the steel and measures the tread's own corner, x = 22632.99. Its copies land in the right place.
Pipe-support frame: Astra 0 of 3, Opus high 1 of 3, Opus max 3 of 3
Astra lost the same small vent hole in all three runs: it edited two hole cutters at once, FreeCAD wrote one position into both, and Astra never looked at the finished post. Opus high misread the drawing twice (it skipped the vent holes once and set the posts 229 mm inboard once); Opus max measured every face and slot, then zoomed in on its own posts before saving.
Astra, pass 1: two hole cutters are selected, but the panel shows only one position. The height it types next goes into both, and one vent hole disappears.Opus max, pass 3: before saving it zooms in on its new post (four vent holes) and checks the beam holes sit over the existing slots.
Re-graded on 3 Nov (section 1): Opus high pass 3 and Fable passes 2 and 3 built every part right and now score 1.0.
Stair landing: Astra 0 of 3, Opus high 0 of 3, Opus max 1 of 2
Opus max settled every doubtful size by measuring steel already in the model, such as the bent plate's legs on its twin, and checked its parts after building. Opus high's thinking caught its own errors and kept them anyway; Astra built fast but checked the brace direction in only one of its runs.
Astra, pass 2: a rear view shows the brace’s flange on the wrong edge, so it turns both braces over. In pass 1 it never looked, and the braces stayed upside down.
“Given time constraints, I’ll trust my earlier derivation and go with 3509.639 as the value to use.”
Opus high, pass 1 (thinking). The brace ended up 7.9 mm off.
“a 1/8″ difference is too large to ignore, so I’ll check an existing bent plate in the model”
Opus max, pass 1 (thinking). It measured the twin plate and built the right legs.
Opus max's pass 2 built all 12 parts right; its bent plate fails a very tight clash rule by 0.17 cm³.
Measured over all finished runs
Output per step
Seconds per step
Time per run
Run spent before the first part
Runs that left a part out
Opus 5.5 · max
11,060 tok
46 s
13.2 h
22%
0 of 8
Argon · high
176 tok
18 s
2.5 h
31%
1 of 15
Fable 5.1 · high
618 tok
5 s
1.4 h
43%
3 of 15
Astra · high
215 tok
10 s
1.2 h
16%
4 of 15
Opus 5.5 · high
503 tok
6 s
1.1 h
40%
4 of 15
Sol · high
319 tok
12 s
1.1 h
22%
10 of 15
Medians over finished runs; each column has its own scale. Hover a cell for its definition.
3 · Where each model fails
What the grader found wrong in each failed part. Sol and Astra most often leave a part out; Opus high most often puts parts in the wrong place or runs them into the existing steel; Opus max's only failed part in 8 runs is one clash on the stair landing.
left out
wrong place
turned or mirrored
wrong shape
holes wrong
runs into existing steel
failed parts
Opus 5.5 · max
·
·
·
·
·
1
1 of 69
Argon · high
8
10
5
3
1
3
30 of 141
Fable 5.1 · high
7
13
2
11
1
·
34 of 141
Astra · high
26
8
2
4
2
3
45 of 141
Opus 5.5 · high
9
22
·
7
2
12
52 of 141
Sol · high
25
2
3
6
3
2
41 of 141
Every failed part of every finished run, by what the grader found; the stronger the colour, the more parts. "Left out" includes parts built far from their place. On the pipe-support frame, failed posts are counted as holes wrong: the trace review found each differs from the real post only at its vent holes.
4 · Cost and time
Spend is API list price as metered by the harness. Opus max's total includes $967 of attempts lost to API usage limits and $703 on the passes we stopped; without them its finished runs cost $1,129.
Cost per finished run
Model spend per finished run, API list prices. Filled dot = solved run, ring = not solved, bar = median.
Cost per solved run
Claude Opus 5.5max
$400
Gemini 4 Argonhigh
$17
Claude Fable 5.1high
$109
GPT-6 Astrahigh
$143
Claude Opus 5.5high
$70
GPT-6.1 Solhigh
no solve
All spend of the setting (finished, stopped and set-aside runs) divided by its solved runs.
Time per finished run
Time from the first to the last step of the graded try. Filled dot = solved run, ring = not solved, bar = median.
5 · The five tasks
All five are rebuilds: a real steel model with pieces removed, the shop and erection drawings of those pieces, and the FreeCAD desktop driven by screenshots, mouse and keyboard only. Red marks what was removed.
2 square-tube girts (HSS 4x3) and the 8 bent "knife" plates that weld them to the posts, in a bay set at an angle to the grid
The prompt
Rebuild the 10 parts in place. They were welded on site, so no open holes show where they go: the position comes from an enlarged plan of the skewed bay and the sections.
The trap
The skew. Every dimension is along the skewed bay, not the building grid, and there are no holes to snap to.
the 2 lower diagonal braces of an X-braced bay, each made of 2 angles (L5x3x1/4) back to back, and their 2 filler plates
The prompt
Rebuild the 6 parts in place with every bolt hole. The open holes in the existing gusset plates show where the braces connect.
The trap
Brace length. It must come from the bill of material and the end holes; the rounded work-point length pushes the angles 1/16 in into the gusset (a 1.9 cm³ clash).
one shop-welded frame: a W10x22 beam with 16 bolt holes on two short W6x15 legs, with 2 heavy plates
The prompt
Rebuild the 5 parts in place. The open slots in the existing angles show where the beam bolts on. The beam's section has no profile file; the identical beams in the model show it.
The trap
Small details: the beam must sit exactly against the existing angles, and each short post has small vent holes in a detail that is easy to miss.
3 square-tube posts (HSS 4x4), 2 sloped angle braces, 3 clip angles, 3 small plates and 1 bent plate under a stair landing
The prompt
Rebuild the 12 parts in place from three shop sheets and five erection sheets.
The trap
The widest spread of mistakes: clip angles turned 180°, a bent plate drawn as its mirror image, and parts clashing with the landing steel.
Opus max
✓.82
Argon
.60.83✓
Fable
.82.53.82
Astra
.75.60.45
Opus high
.60.56.06
Sol
.75.53.45
6 · How we ran it
Setting
Runs
When
Route and limits
Claude Opus 5.5 · max
study, 3 per task
29 Oct - 2 Nov 2026
Anthropic API, effort max, summarized thinking returned, 128k reply cap
GPT-6 Astra · high
study, 3 per task
29 - 30 Oct 2026
OpenAI API, reasoning effort high (no reasoning text returned)
Claude Fable 5.1 · high
study, 3 per task
29 - 30 Oct 2026
Anthropic API, effort high, summarized thinking returned
Claude Opus 5.5 · high
earlier, 3 per task
Oct 2026
Anthropic API, effort high
GPT-6.1 Sol · high
earlier, 3 per task
Oct 2026
OpenAI API, reasoning effort high
Gemini 4 Argon · high
earlier, 3 per task
Oct 2026
Google model by API, reasoning effort high
Same task, same grader. Every run used the same task packages (prompt, drawings, model) and the same final grader; the earlier runs were re-graded with it. One agent for all: screenshots in, one mouse or keyboard action out, FreeCAD 1.0.2 at 1280 × 896, no scripting, up to 1,500 steps. The study runs had no time limit.
Why these five. All rebuilds; Opus high solved each at most once in three and Sol never, while another model solved each, and four are proven solvable from the drawings alone. So the earlier settings' scores here are lower than their averages on the full 47 tasks by design; the study settings ran fresh.
Opus max's 15 passes. 8 finished and were graded. On the skewed frame, the X-bracing and the stair stringer we stopped the other two passes once one pass had solved the task, to save cost (6 passes). The stair landing's third pass was lost to the API's usage limit and then stopped. The account's usage limit also ended the first try of 11 passes part way; those were restarted from step 0 and only the restart is graded.
Long waits. Late in a run a max-effort step can take 2 to 8 minutes, and some requests got no reply until a 10-minute timeout and a retry; finished Opus max runs saw 25 waits of 10 minutes or more in all.
Cost. API list prices as metered by the harness (Fable at $10 / $50 per million input / output tokens). Time is from the first to the last step of the graded try.