← all tasks

platoon-delay-noise-20-staged

Vehicle platoon · solved 10 of 12 agent attempts pass

The task. Curriculum control for the flat task: the June 2026 harness only reached hard_delay_noise_v1 by moving the gate by hand across ten runs.

more

Here the ladder is declared in the task and enforced by Harbor steps (min_reward gates), with the same total agent budget as the flat task (3 x 1200 s = 3600 s; a first attempt with 600 s for stage 1 timed out two agents that solve the flat task within 3600 s, so unused stage time being lost is part of what this variant measures). Compare final-stage reward, verify calls and tokens with the flat task.

Gate. final stage identical to platoon-delay-noise-20: no collision; spacing-error RMS <= 3.0 m; string peak gain <= 1.35; success rate >= 0.9 on 40 verifier-only seeds of hard_delay_noise_v1

Axes: n_vehicles:20, curriculum:3-stage, observation:local-delayed-noisy, leader:hard_brake_train, spacing:constant-time-headway

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 attemptOpus 5.5 (claude-code, 36 min) · hard_delay_noise_v1

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

criteriongradedneeded
base:default1.000≥ 0.900

How the agent got there: 36 min · 34 tool calls · 1 edit-tool edits · 24 runs of its own Python (tests, experiments, rewrites) · no tuner runs · official verifier 3× (success rates in order: ?, 1.00, ?).

The agent's final message

The controller in `/app/work/controller.py` already passes stage 3, so I left it as it is. It's the one I built in the earlier stages. **Results on `hard_delay_noise_v1`:** - **Official evaluator, seeds 0–19:** all 20 passed. Spacing-error RMS averaged 0.21 m (max 0.25 m, limit 3.0). The smallest gap was about 16 m and there were no collisions. String peak gain averaged 0.81, with a worst case of 1.30 against the 1.35 limit. - **My parallel evaluator, seeds 0–449:** 446 of 450 passed (about 99%), against the required 90%. All four failures came from the string-gain criterion, never from a collision or the RMS limit. In each one, sensor noise pushed the peak spacing error of follower 1 or 2 a little over the 1.0 m floor (for example 1.44 m against 1.0 m). - **Gain sensitivity:** setting `K_E` to 0.4 or 0.6 made almost no difference, so the result doesn't depend on fine tuning. Lowering `Q_U` to 0.25 was slightly worse, so I kept 0.35. **How the controller works** (also described in its docstring): - **Control law:** a constant-time-headway law with the actuator lag compensated. It drives the spacing error to zero at rate `K_E` (0.5 /s), and each vehicle smooths its predecessor's acceleration over the 1 s headway. This keeps disturbances from growing down the platoon. - **Own state:** each vehicle replays its own recorded commands through the actuator model, starting from its latest delayed reading. That gives its current speed and acceleration despite the delay. - **Predeces…

Controller family: string-stable CACC / platoon

Each follower estimates the current gap, relative speed and predecessor acceleration with a delay-aware Kalman filter, replays its own actuator model to know its present state, then applies a constant-time-headway law that drives spacing error to zero at rate K_E with actuator-lag compensation and clips the command.

Shown: public seed 0 (hard_delay_noise_v1); this episode passes the default rung. This episode: collision no, min_gap 16.2, spacing_error_rms 0.222, spacing_error_abs_max 0.784, string_peak_gain 0.784, episode_steps 600, total_reward -50.5.

controller.py · trial platoon-delay-noise-20-staged__TgEeNAk

FailureCodex (GPT) (cursor-cli (pre-clock), 17 min) · hard_delay_noise_v1

Graded on the held-out seeds: misses the main gate narrowly (success rate between 0.5 and the gate).

criteriongradedneeded
base:success0.875≥ 0.900

How the agent got there: 17 min · 89 tool calls · 23 edit-tool edits · 10 runs of its own Python (tests, experiments, rewrites) · no tuner runs · official verifier 36× (success rates in order: 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 1.00, 0.00, 0.00, ?, ?, ?, 0.00, 0.00, 1.00, 1.00, 0.00, ?, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.75, 1.00, 1.00, 1.00).

Pre-clock session: the agent had no clock and may have stopped early believing its hour was over; treat a failure here as a lower bound.

The agent's final message

Implemented and tuned `controller.py` for stage 3 with a delay/noise-robust decentralized CTH controller. What I changed in `/app/work/controller.py`: - Added a **stateful controller** (`controller(obs, memory) -> (cmd, memory)`). - Added **filtered local measurements** (`gap_front`, `relative_velocity_front`). - Added **dropout-robust predecessor acceleration handling** (decaying hold when readout drops to ~0). - Added **delay compensation** to predict current relative velocity/gap from delayed observations. - Used a **composite control law**: - spacing/velocity feedback (`kp`, `kv`) - predecessor accel feedforward (`ka_ff`) - own acceleration damping (`ka_self`) - light cruise recovery (`k_cruise`) - Added **safety shaping** via closing-speed damping and TTC/gap brake overrides. - Added **asymmetric command smoothing** (different response for accel vs brake) and clipping to limits. - Kept the file readable with a short docstring describing the control law and gain roles. Validation results: - `--seeds 0-4` (official verifier): **success_rate = 1.000**, solved. - `--seeds 0-19` (extra stress check): **success_rate = 1.000**, no collisions. - On those runs: - `collision_rate = 0` - `spacing_error_rms_max ≈ 2.61` (threshold `<= 3.0`) - `string_peak_gain_max ≈ 1.34` (threshold `<= 1.35`) Final deliverable is in place at: - `controller.py`

Controller family: string-stable CACC / platoon

A decentralized constant-time-headway CACC controller filters noisy delayed gap and relative-velocity measurements, predicts the current state over the delay, applies PD spacing feedback plus predecessor-acceleration feedforward and cruise recovery, then enforces tiered braking overrides and smooths the command with faster braking than acceleration.

Shown: public seed 22 (hard_delay_noise_v1); this episode fails the default rung. This episode: collision no, min_gap 10.9, spacing_error_rms 2.43, spacing_error_abs_max 5.95, string_peak_gain 1.37, episode_steps 600, total_reward -3556. It was the first failing one of 23 public seeds tried.

controller.py · trial platoon-delay-noise-20-staged__meCUhft

FailureComposer 2.5 (cursor-cli (pre-clock), 32 min) · hard_delay_noise_v1

Graded on the held-out seeds: fails the main gate badly (success rate below 0.5).

criteriongradedneeded
base:success0.000≥ 0.900

How the agent got there: 32 min · 98 tool calls · 15 edit-tool edits · 26 runs of its own Python (tests, experiments, rewrites) · no tuner runs · official verifier 20× (success rates in order: 0.00, 1.00, 1.00, ?, ?, ?, 1.00, 1.00, 1.00, 0.00, 1.00, ?, 0.00, 0.00, 1.00, 1.00, 0.00, 1.00, 0.00, 1.00).

Pre-clock session: the agent had no clock and may have stopped early believing its hour was over; treat a failure here as a lower bound.

The agent's final message

Inspecting the controller and environment, then running the evaluator.

Controller family: string-stable CACC / platoon

Each follower computes a linear CACC command from filtered, delay-compensated spacing error, relative velocity, and predecessor/own acceleration, with bias removal, emergency braking when gap or TTC is small, and smoothing, jerk limiting, and saturation of the output.

Shown: public seed 0 (hard_delay_noise_v1); this episode fails the default rung. This episode: collision yes, min_gap -0.303, spacing_error_rms 12.5, spacing_error_abs_max 53.8, string_peak_gain 2.04, episode_steps 407, total_reward -73684. It was the first failing one of 1 public seeds tried.

controller.py · trial platoon-delay-noise-20-staged__NMJZgFR