name: peaksweep_v1
intent: >
  The \@[α]{alpha}-\@{schedule} line that produced efficiency\_v1's winning
  curriculum settled on a descending ladder of concentration values that
  starts at α = 3.0 and alternates with drops to α = 1.0 across six
  150-iteration stages. This experiment asks whether 3.0 is the right height
  to start that ladder from. It holds the winning schedule's structure fixed,
  keeping the same stage length, the same seeds, and the same 900-iteration
  prefix, and sweeps only the ladder's starting peak P from 1.0 to 5.0,
  scaling the three rungs together as P, 0.714P, and 0.429P. The P = 3.0 arm
  is byte-identical training to efficiency\_v1's winner over these 900
  iterations, so what is new is the P axis and a finer \@{waypoint} spacing,
  every 50 iterations instead of 150, to resolve when the generalization peak
  actually arrives.
hypothesis: >
  The first prediction is that the strength of the peaked-first effect rises
  with P and then flattens. At P of 1.5 or below the ladder loses the
  peaked-first advantage and its onset should look like a fixed
  \@[α]{alpha} = 1.4 run; P = 2 should be a partial case; and P across 3 to 5
  should behave alike. The test of \@{saturation} is whether peak\_40 or
  peak\_50 beats peak\_30 on peak height or on time-to-90\%: if either does,
  α = 3 was under-saturated and the next sweep should start higher. The
  second prediction is that the finer \@{waypoint} grid will place the true
  peak before iteration 600, which the 150-iteration grid could not
  distinguish from 450, and that the trajectory will jump during the second
  ladder stage, between iterations 300 and 450, once the first α = 1.0 burst
  has consolidated the collocations built at α = P.
seed: 42
base_args: [curriculum, --n-iterations, "10",
            --waypoints, "50", "100", "150", "200", "250", "300", "350",
            "400", "450", "500", "550", "600", "650", "700", "750", "800",
            "850", "900"]
runs:
  - label: peak_10
    args: [--schedule, "1.0:150,1.0:150,0.7143:150,1.0:150,0.4286:150,1.0:150"]
  - label: peak_15
    args: [--schedule, "1.5:150,1.0:150,1.0714:150,1.0:150,0.6429:150,1.0:150"]
  - label: peak_20
    args: [--schedule, "2.0:150,1.0:150,1.4286:150,1.0:150,0.8571:150,1.0:150"]
  - label: peak_30
    args: [--schedule, "3.0:150,1.0:150,2.1429:150,1.0:150,1.2857:150,1.0:150"]
  - label: peak_40
    args: [--schedule, "4.0:150,1.0:150,2.8571:150,1.0:150,1.7143:150,1.0:150"]
  - label: peak_50
    args: [--schedule, "5.0:150,1.0:150,3.5714:150,1.0:150,2.1429:150,1.0:150"]
compare:
  metric: unseen_mismatch
baseline:
  label: fixed α 1.4 (efficiency_v1 fixed_14)
  run: runs/20260712_084956_efficiency_v1/fixed_14
  link: /exp/20260712_084956_efficiency_v1/fixed_14
