name: budget_v1
intent: >
  This is Phase 4 of the φ-landscape study, whose design and full term
  definitions live in \href{https://github.com/ClaireHobbs/imagining-syntax/blob/main/docs/superpowers/specs/2026-07-13-phi-landscape-design.md}{the
  design spec}. It is the speed-versus-budget frontier, the study's final
  test of the speed limit. The earlier phases left two facts to build on:
  the peak of the generalization score is \@{saturation} at about 100 per
  seed, and the onset of that peak settles at about 196 iterations across
  every shape tried, with the ascent winner \texttt{s5\_v07} reaching the 95
  band at a per-seed median of 196 iterations and all 20 seeds covered. This
  phase time-compresses that winning shape, the same continuous burst
  ladder that starts at \@[α]{alpha} = 5, drops to a valley of 0.7, and runs
  three teeth, rendered over progressively shorter horizons T. The
  compression is meant to separate two explanations of the 196-iteration
  onset. It could be a property of the \@{schedule}'s timing at T = 900, in
  which case a compressed schedule should reach the band proportionally
  sooner; or it could be a hard learning floor, in which case the model
  cannot bootstrap the agreement rule faster than about 180 to 196
  iterations however the schedule is compressed. Each arm is read as the
  pair of its per-seed \@[time-to-band]{time-to-band} and its coverage,
  because an arm
  that reaches the band sooner while losing seeds has hit the wall rather
  than beaten it.
hypothesis: >
  If about 196 iterations is a hard learning floor, the short-horizon arms
  will not reach the band much before 180 to 196 iterations, and they will
  lose coverage as the \@{schedule} outruns the model's ability to
  consolidate, so T = 300 and T = 200 should begin dropping seeds. If
  instead the onset is bound by the schedule's timing, it should fall
  roughly in proportion to T while coverage holds. The prior evidence, a
  tight cluster near 196 iterations across very different shapes at T =
  900, favours a hard floor near 180 to 196.
seed: 42
base_args: [curriculum, --schedule-shape, envelope, --continuous,
            --n-iterations, "20", --n-stages, "48",
            --env-start, "5.0", --env-end, "1.2857",
            --env-valley, "0.7", --env-teeth, "3", --env-duty, "0.5"]
runs:
  - label: T900
    args: [--total-iters, "900", --waypoints, "25", "50", "75", "100", "125",
           "150", "175", "200", "225", "250", "275", "300", "325", "350", "375",
           "400", "450", "500", "550", "600", "650", "700", "750", "800", "850", "900"]
  - label: T600
    args: [--total-iters, "600", --waypoints, "25", "50", "75", "100", "125",
           "150", "175", "200", "225", "250", "275", "300", "325", "350", "375",
           "400", "450", "500", "550", "600"]
  - label: T450
    args: [--total-iters, "450", --waypoints, "25", "50", "75", "100", "125",
           "150", "175", "200", "225", "250", "275", "300", "325", "350", "375",
           "400", "450"]
  - label: T300
    args: [--total-iters, "300", --waypoints, "25", "50", "75", "100", "125",
           "150", "175", "200", "225", "250", "275", "300"]
  - label: T200
    args: [--total-iters, "200", --waypoints, "25", "50", "75", "100", "125",
           "150", "175", "200"]
compare:
  metric: unseen_mismatch
