name: deform_v1
intent: >
  This is Phase 3 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 draws the deformation map, the campaign's headline result. The starting
  point is the front-runner from Phases 1 and 2, a three-tooth descending
  burst ladder delivered on continuously sampled data. Holding that shape
  fixed, the experiment perturbs one \@{schedule} parameter at a time and
  measures how each direction moves the two things still open: how soon the
  model reaches the 95 band (per-seed \@[time-to-band]{time-to-band}) and how
  many seeds reach it at all (coverage, the fraction of seeds whose own peak
  reaches 95). Peak height is \@[saturated]{saturation}, near 100 per seed,
  so it is not an objective here. Phase 2 showed the discrete bursts carry
  the coverage, so the burst parameters, valley depth, tooth count, and
  duty, are the primary axes, and the descending envelope's start and floor
  are the secondary axes. The output is a labelled map of which deformations
  are sloppy, meaning coverage and speed barely move, and which are stiff,
  meaning they collapse, together with where the cliffs sit.
hypothesis: >
  Two directions are taken as stiff before the run starts: removing the
  bursts, which Phase 2 established, and driving any level down to
  deep-uniform data at a valley of \@[α]{alpha} = 0, which earlier work
  established. Tooth count and duty over a moderate range are expected to be
  sloppy, and the envelope start over roughly 2 to 4 is expected to be a speed
  knob rather than a coverage knob. Two cliffs are expected: valley depth as
  it approaches about 0.4, where destructive
  \@[interference]{catastrophic-interference} should set in, and the
  envelope floor as it approaches 0. Because
  \@[time-to-band]{time-to-band} is measured only over the seeds that reached
  the band, each arm is read as a pair of numbers, its per-seed time-to-band
  together with its coverage, the fraction of seeds whose peak reaches 95; a
  fast time over few survivors is not an improvement. The analysis is
  per-seed, not on the cohort mean and not on the crossing of the seed-median
  curve.
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: []}
  # valley depth (burst floor) — expected cliff near ~0.4, collapse at 0
  - {label: v_0.0, args: [--env-valley, "0.0"]}
  - {label: v_0.4, args: [--env-valley, "0.4"]}
  - {label: v_0.7, args: [--env-valley, "0.7"]}
  - {label: v_1.3, args: [--env-valley, "1.3"]}
  # number of bursts (teeth)
  - {label: teeth_1, args: [--env-teeth, "1"]}
  - {label: teeth_2, args: [--env-teeth, "2"]}
  - {label: teeth_4, args: [--env-teeth, "4"]}
  - {label: teeth_6, args: [--env-teeth, "6"]}
  # duty (fraction of each tooth at the envelope peak vs in the burst)
  - {label: duty_0.25, args: [--env-duty, "0.25"]}
  - {label: duty_0.75, args: [--env-duty, "0.75"]}
  # envelope start (onset-speed knob)
  - {label: start_2, args: [--env-start, "2.0"]}
  - {label: start_4, args: [--env-start, "4.0"]}
  - {label: start_5, args: [--env-start, "5.0"]}
  # envelope end / floor — expected cliff toward 0
  - {label: end_0.7, args: [--env-end, "0.7"]}
  - {label: end_1.0, args: [--env-end, "1.0"]}
  - {label: end_1.6, args: [--env-end, "1.6"]}
compare:
  metric: unseen_mismatch
