consensus-ring-8
Consensus · solved 13 of 13 agent attempts pass
Gate. final edge disagreement 0.5*sum a_ij (x_i-x_j)^2 <= 1e-3 after 200 steps; success rate >= 0.9 on 40 verifier-only seeds
Axes: topology:ring, n_agents:8, dynamics:single-integrator
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.
base| criterion | graded | needed |
|---|---|---|
| base:success | 1.000 | ≥ 0.900 |
The agent's final message
Done — the controller passes 50/50 seeds with final consensus error at machine precision (~1e-32, versus the 1e-3 threshold). The final `/app/work/controller.py` implements the standard distributed Laplacian consensus law: each agent applies `u_i = -K · Σ_j a_ij (x_i − x_j)`, using only its own adjacency row and neighbour states. The gain `K = 8` is chosen from the sampled-system stability condition `K · dt · λ_max(L) < 2` — the ring Laplacian has `λ_max = 4` and `dt = 0.05`, so any `K < 10` is stable, and 8 gives fast contraction of the slowest mode (`λ = 2 − √2`) with margin to spare. Actions are clipped to the ±2 limit, which only slows the initial transient. The docstring in the file explains all of this.
Each agent applies u_i = -K * sum_j a_ij (x_i - x_j) with K=8 chosen below the discrete-time stability bound K*dt*lambda_max<2 for the 8-ring, then clips to the action limit.
Shown: public seed 0 (base); this episode passes the default rung. This episode: final_error 0, total_reward -8.13.
controller.py · trial consensus-ring-8__328m6Pd