name: ascent_v1
intent: >
  This is Phase 5 of the φ-landscape study, the ascent, 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}. The Phase 3 deformation map found the generalization peak
  \@{saturation} in every direction and located one clear uphill move: raising
  the burst ladder's envelope start from 3 to 4 or 5 beat the incumbent on
  both onset speed and coverage. This phase combines the uphill directions, a
  high start, a coverage-safe valley depth at or below 1.0, and a small tooth
  count of 2 to 4, into candidate shapes and asks whether the combination
  pushes onset below the roughly 197-iteration single-deformation best while
  holding full 20 of 20 coverage. All arms are the continuous burst ladder at
  a horizon of 900 iterations, and every arm is scored on a pair of numbers,
  the per-seed \@[time-to-band]{time-to-band} and the coverage (the fraction
  of seeds whose peak reaches 95, \texttt{peak\_per\_seed.summary.frac\_ge[95]}),
  rather than on the cohort mean. Peak height is saturated near 100 and is
  not an objective.
hypothesis: >
  Start looks like the dominant speed lever: in the map, start 4 reached the
  band at about 197 iterations with 20 of 20 coverage and start 5 at about 199
  with 20 of 20, against the incumbent's 219 with 19 of 20. Combining a high
  start of 4 or 5 with a slightly deeper but still coverage-safe valley at
  0.7, which held 20 of 20 in the map, and fewer teeth, 2, which was fast at
  248, should keep full coverage while shortening onset. The best guess going
  in is \texttt{s5\_v07\_t2}. Onset is expected to floor somewhere around 180
  to 200 iterations; below that the model cannot bootstrap the rule any
  faster whatever the \@{schedule}, a real speed limit.
seed: 42
base_args: [curriculum, --schedule-shape, envelope, --continuous,
            --total-iters, "900", --n-iterations, "20", --n-stages, "48",
            --env-start, "3.0", --env-end, "1.2857",
            --env-valley, "1.0", --env-teeth, "3", --env-duty, "0.5",
            --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"]
runs:
  - {label: incumbent, args: []}
  # start raised (re-confirm the map's uphill move at matched seeds)
  - {label: s4, args: [--env-start, "4.0"]}
  - {label: s5, args: [--env-start, "5.0"]}
  # start up + deeper coverage-safe valley
  - {label: s4_v07, args: [--env-start, "4.0", --env-valley, "0.7"]}
  - {label: s5_v07, args: [--env-start, "5.0", --env-valley, "0.7"]}
  # start up + fewer teeth
  - {label: s4_t2, args: [--env-start, "4.0", --env-teeth, "2"]}
  - {label: s5_t2, args: [--env-start, "5.0", --env-teeth, "2"]}
  - {label: s4_t4, args: [--env-start, "4.0", --env-teeth, "4"]}
  # the combined best-guess: high start, deep valley, few teeth
  - {label: s5_v07_t2, args: [--env-start, "5.0", --env-valley, "0.7", --env-teeth, "2"]}
compare:
  metric: unseen_mismatch
