← all tasks

soft-arm-trace

Soft continuum arm · solvedexploration 9 of 9 agent attempts pass

Exploration task. Built after the paper's sweep to test whether a task can force a mechanism outside the catalogue (docs/exploration_new_mechanisms.md, docs/soft_arm_spec.md). Not part of the benchmark tiers or of the paper's main counts; the soft arm is reported in the paper as a plant outside the sweep, the other tasks are not; all sessions ran under the paper's protocol.

The task. Exploratory task on a new plant (see docs/soft_arm_spec.md): after 10 s to reach the start point the target moves on a 3 cm circle, one lap per 8 s, for 50 s, on the arm with its per-seed material.

more

The rungs are the RMS tip error over the moving part: coarse 20 mm, fine 10 mm, fast 5 mm. The gate is coarse, which the oracle (a static-map feedforward with preview plus a Jacobian PI-D) clears at 15 mm RMS; fine and fast need a design that accounts for the arm dynamics and the pressure lag, and are open.

Gate. per-seed success is the `coarse` rung of this benchmark's ladder ['safe', 'coarse', 'fine', 'fast'] (`--success-mode coarse`), not the evaluator's default flag; the task is solved when the success rate over the grader's held-out seeds is `>= 0.9`

Axes: plant:soft_arm, scenario:circle_v1, gate:coarse_20mm_rms, exploration:soft-arm, material:unknown-per-seed, tracking

Each video re-runs the attempt's final controller through the task's own evaluator on a public seed (never the grader's held-out ones). The table under each video is the official grade on the held-out seeds.

Best attemptFable 5.1 (claude-code (exploration), 35 min) · circle_v1

Graded on the held-out seeds: passes every gate on the grader's held-out seeds.

criteriongradedneeded
base:coarse1.000≥ 0.900

How the agent got there: 35 min · 33 tool calls · 0 edit-tool edits · 20 runs of its own Python (tests, experiments, rewrites) · no tuner runs · official verifier 9× (success rates in order: 0.00, 1.00, 0.97, 1.00, 1.00, 1.00, 0.50, 0.90, 1.00).

The agent's final message

The controller at `/app/work/controller.py` is final and passes the gate with wide margin. **Result on the circle scenario** (the graded task, `coarse` = RMS tip error ≤ 20 mm after 10 s): | Check | Seeds | Pass at 20 mm | Pass at 10 mm | Mean RMS | Worst RMS | |---|---|---|---|---|---| | Official verifier | 0–4 | 5/5 | 5/5 | 5.1 mm | – | | Batch rollouts | 0–99 | 100/100 | 100/100 | 5.2 mm | 9.0 mm | | Batch rollouts, fresh | 100–199 | 100/100 | 100/100 | 5.3 mm | 9.1 mm | The sequence-mode siblings also pass the coarse gate on their visible seeds: payload, hook, warm-up and weak-chamber at 5/5, nominal at 9/10. **Control law** (documented in the file's docstring): - Feed-forward: the target, led ahead along its velocity by 0.35 s, goes through a Newton inverse of the nominal static tip map to give the two differential commands. - Feedback on each camera frame: the tip error is notch-filtered at the arm's 1.25 Hz bending mode, saturated at 3 cm, mapped through a damped pseudo-inverse of the map Jacobian at the applied command, and drives a PI correction. The integrator is gated quadratically outside a 4 cm error radius, frozen against saturated chambers and clamped. - Output: feed-forward plus feedback, clipped, converted to four chamber commands with a co-contraction bias of 0.08. **What the iterations fixed:** the first version's loop gain was dimensionless and set far too high, which saturated every seed. Low-damping seeds then oscillated at the bending mode until th…

Controller family: other: feedforward inverse-map + notch-filtered PI tip servo

The controller leads the moving target, inverts the nominal static tip map via Newton iterations for feedforward pressure commands, and adds a notch-filtered, saturated PI correction mapped through a damped Jacobian inverse on each camera frame, then converts to chamber commands with a co-contraction bias.

Shown: public seed 0 (circle_v1); this episode passes the coarse rung. This episode: hold_error_max 0.00519, targets_held_fine 1, targets_held_coarse 1, settle_time_max 10, final_error_max 0.000926, track_rms 0.00519, saturation_ratio 0, max_speed 0.913, stiffness_scale 1.08, payload_mass 0, total_reward -15.

controller.py · agent transcript · trial soft-arm-trace__BTda9MW

Weakest passing attemptSonnet 5.5 (claude-code (exploration), 6 min) · circle_v1

Graded on the held-out seeds: passes every gate on the grader's held-out seeds.

criteriongradedneeded
base:coarse0.975≥ 0.900

How the agent got there: 6 min · 9 tool calls · 0 edit-tool edits · 5 runs of its own Python (tests, experiments, rewrites) · no tuner runs · official verifier 4× (success rates in order: 1.00, ?, ?, ?).

The agent's final message

`/app/work/controller.py` passes the coarse rung on every scenario I ran except `hook_v1`, which fails 1 of 20 seeds. It was within 20 mm on all six targets, or the circle's RMS bound, on 100% of seeds on the first set below. **What it does.** It inverts the nominal static tip map to get a feedforward command for the current target. On each camera frame it adds an integral correction through a damped Jacobian inverse, which absorbs the seed's material, hysteresis, creep and payload. A small velocity term damps the 1.25 Hz bending mode. The docstring in the file explains each gain. **Results** (coarse success rate; the controller was developed against seeds 0–9 of the first two scenarios): | Scenario | Seeds | Coarse | Fine | Fast | |---|---|---|---|---| | `nominal_v0` | 0–9 | 100% | 100% | 90% | | `circle_v1` | 0–9 | 100% | 100% | 10% | | `nominal_v0` | 10–29 | 100% | 100% | 90% | | `circle_v1` | 10–29 | 100% | 65% | 0% | | `payload_v1` | 10–29 | 100% | 100% | 70% | | `hook_v1` | 10–29 | 95% | 90% | 55% | | `warmup_v1` | 10–29 | 100% | 100% | 90% | | `weak_chamber_v1` | 10–29 | 100% | 100% | 50% | | `marker_v1` | 10–29 | 100% | 100% | 90% | **Failure.** The one failure is `hook_v1` seed 24, where the 10 g hook leaves a 41 mm worst hold error on one target. Raising the integral gain to 1.0 did not fix it. At 1.5 it fixed that seed but broke `nominal_v0` and `circle_v1` seeds, so I kept the gain at 0.8. The grader's gate is coarse success of at least 0.9 over its held-out …

Controller family: other: inverse-map feedforward + integral feedback

The controller inverts the nominal tip map to get a feedforward differential pressure command for the target, adds a clamped integral correction driven by filtered camera tip error through a regularized Jacobian pseudo-inverse plus a velocity damping term, and converts the result to four chamber commands with a co-contraction bias.

Shown: public seed 0 (circle_v1); this episode passes the coarse rung. This episode: hold_error_max 0.00492, targets_held_fine 1, targets_held_coarse 1, settle_time_max 10, final_error_max 0.00243, track_rms 0.00492, saturation_ratio 0, max_speed 0.901, stiffness_scale 1.08, payload_mass 0, total_reward -15.

controller.py · agent transcript · trial soft-arm-trace__w7WsMAy