name: slopesweep_v1
intent: >
  This experiment is a follow-up to the cds arm of \texttt{curriculum\_v1},
  which lowered the pairing concentration \@[α]{alpha} along the trajectory
  measured in child-directed speech. The question is whether a steeper,
  model-tuned decline in α does better than that empirical trajectory. The
  sweep crosses the starting concentration, from 1 to 5, with the floor the
  \@{schedule} settles to: from each start, α declines linearly to every
  value between that start and 0. All arms use the continuous, per-batch data
  setting. The goal is to map where the erosion floor sits as a function of
  the starting height.
hypothesis: >
  The declining slope is the right idea, but the magnitude and range measured
  in child-directed speech are not expected to carry over to the model. Three
  results from earlier runs shape the prediction: a bootstrapping cliff
  between a start of \@[α]{alpha} = 2 and α = 3; deep-uniform tails at α ≤ 0.4
  that destroy the learned rule; and erosion that acts as a gradient, nonzero
  even at a floor of 1.0, with the final α weighted most heavily. The
  prediction is that a steep decline from a high start to a moderate floor at
  or above about 2, for example the 4-to-2 \@{schedule}, both peaks early and
  stays stable; that any schedule ending at 0 collapses regardless of where
  it starts; and that higher starts peak earlier.
seed: 42
base_args: [curriculum, --continuous,
            --schedule-shape, linear, --n-stages, "24", --total-iters, "1200",
            --n-iterations, "10",
            --waypoints, "50", "100", "150", "200", "250", "300", "350", "400",
            "450", "500", "550", "600", "650", "700", "750", "800", "850",
            "900", "950", "1000", "1050", "1100", "1150", "1200"]
runs:
  # start 5
  - {label: s5_e5, args: [--alpha-start, "5", --alpha-end, "5"]}
  - {label: s5_e4, args: [--alpha-start, "5", --alpha-end, "4"]}
  - {label: s5_e3, args: [--alpha-start, "5", --alpha-end, "3"]}
  - {label: s5_e2, args: [--alpha-start, "5", --alpha-end, "2"]}
  - {label: s5_e1, args: [--alpha-start, "5", --alpha-end, "1"]}
  - {label: s5_e0, args: [--alpha-start, "5", --alpha-end, "0"]}
  # start 4
  - {label: s4_e4, args: [--alpha-start, "4", --alpha-end, "4"]}
  - {label: s4_e3, args: [--alpha-start, "4", --alpha-end, "3"]}
  - {label: s4_e2, args: [--alpha-start, "4", --alpha-end, "2"]}
  - {label: s4_e1, args: [--alpha-start, "4", --alpha-end, "1"]}
  - {label: s4_e0, args: [--alpha-start, "4", --alpha-end, "0"]}
  # start 3
  - {label: s3_e3, args: [--alpha-start, "3", --alpha-end, "3"]}
  - {label: s3_e2, args: [--alpha-start, "3", --alpha-end, "2"]}
  - {label: s3_e1, args: [--alpha-start, "3", --alpha-end, "1"]}
  - {label: s3_e0, args: [--alpha-start, "3", --alpha-end, "0"]}
  # start 2
  - {label: s2_e2, args: [--alpha-start, "2", --alpha-end, "2"]}
  - {label: s2_e1, args: [--alpha-start, "2", --alpha-end, "1"]}
  - {label: s2_e0, args: [--alpha-start, "2", --alpha-end, "0"]}
  # start 1
  - {label: s1_e1, args: [--alpha-start, "1", --alpha-end, "1"]}
  - {label: s1_e0, args: [--alpha-start, "1", --alpha-end, "0"]}
compare:
  metric: unseen_mismatch
claims:
  - id: s4e2_stays_high
    expect: {arm: s4_e2, rel: ">", ref: 70}
    at: final
  - id: s4e2_peaks_early
    expect: {arm: s4_e2, rel: "<=", ref: 300}
    measure: peak_time
  - id: floor2_beats_floor0
    expect: {arm: s4_e2, rel: ">", ref: s4_e0}
    at: final
  - id: s5e0_collapses
    expect: {arm: s5_e0, rel: "<", ref: 50}
    at: final
  - id: s4e0_collapses
    expect: {arm: s4_e0, rel: "<", ref: 50}
    at: final
  - id: s3e0_collapses
    expect: {arm: s3_e0, rel: "<", ref: 50}
    at: final
  - id: higher_start_peaks_earlier
    expect: {arm: s5_e2, rel: "<", ref: s3_e2}
    measure: peak_time
