clone

an endless marble-race generator in the browser; the url is the seed, so every track can be shared

main
marbles / docs / rail-recovery-sample-2026-08-26.md
rail-recovery-sample-2026-08-26.md 3.7K source

Rail recovery sample — 2026-08-26

Method

  • 18 isolated headless Chrome runs (rail-sample-000 through 017).
  • 401-racer field, 300 simulated seconds per seed, real endless client and Box3D/autopilot code. Pack LOD keeps the nearby physics subset live.
  • Counted only tileCandidate: true recoveries: falls and six-second stalls. Intentional distance-LOD handoffs and stream culls were excluded.
  • 644 candidate events across 413 generated segments and 7,965 generated path windows. No page errors occurred.
  • Percentages are event share, not an independent per-marble failure probability: many racers can hit the same broken generated transition.

Event share by concrete piece

Piece Events Event share Falls Stalls Seeds with event Generated-window share
ramp-long-b 367 56.99% 0 367 1 0.43%
straight 151 23.45% 21 130 4 58.20%
helix-large-quarter-right 42 6.52% 0 42 1 0.14%
end-hole-rounded 18 2.80% 0 18 8 0.46%
ramp 18 2.80% 17 1 6 0.38%
end-hole-square 14 2.17% 0 14 6 0.31%
slant 12 1.86% 12 0 2 1.36%
split 9 1.40% 0 9 2 2.03%
ramp-start-c 7 1.09% 7 0 1 2.07%
s-curve-short-left-a 2 0.31% 2 0 2 2.40%
wave-c 2 0.31% 2 0 1 1.82%
ramp-long-c 1 0.16% 1 0 1 0.58%
wave-b 1 0.16% 1 0 1 1.48%

Overall: 581 stalls (90.22%) and 63 falls (9.78%).

Dominant generated instances

Two seeds produced 565/644 events (87.73%), so the main result is two broken layouts/transitions rather than a uniform weakness in common pieces.

rail-sample-008

  • Segment 11, window 5, ramp-long-b: repeated stalls (367 in the sample; rate-limited replay reached the 256-count log).
  • Immediately adjacent segment 11, window 6, helix-large-quarter-right: 42 stalls (32-count replay log).
  • Segment 11, window 11, boost ramp-start-c: a small fall cluster.

The adjacency makes the ramp-long-b → helix-large-quarter-right transition the first fix target; treating the two pieces independently would miss the stronger explanation.

rail-sample-015

  • Segment 14, window 5, plain straight: largest repeated stall cluster.
  • Segment 14, window 0, alternate icy tunnel lane, parts 6–7: another large stall cluster (the concrete rendered host is straight).
  • Segment 14, windows 21–22 around the braid/tunnel exit: smaller stall clusters, including split on the alternate lane.

This looks like one problematic braid/icy-lane layout whose congestion spills onto nominally ordinary straight stations, not evidence that plain straight pieces are broadly bad.

Sensitivity without the two pathological seeds

The remaining 79 events rank as follows:

Piece Events Share of remaining events
ramp 18 22.78%
end-hole-rounded 16 20.25%
straight 15 18.99%
end-hole-square 14 17.72%
slant 12 15.19%
s-curve-short-left-a 2 2.53%
split 1 1.27%
ramp-long-c 1 1.27%

The recurring cross-seed signals are therefore the two end-hole variants, generic ramps/slants, and a much smaller ordinary-straight tail.

Instrumentation correction made before the final sample

Jump/reorient meshes are removed from the final endless placement array. Path placementIndex values were not remapped after that filtering, so the first sample could mislabel later windows as supports/decor. The final sample above was collected only after remapping surviving path windows to final placement indices and adding a regression test that every addressable path window resolves to a track placement.