name: schedopt_calib
investigation: schedopt-v1
intent: '\begin{intent}[Calibrating the schedule-optimization objective]

  \label{schedopt-calib-intent}

  \begin{llm}[claude-fable-5]

  Phase 0 of the schedopt campaign (spec: \href{https://github.com/ClaireHobbs/imagining-syntax/blob/main/docs/superpowers/specs/2026-07-21-schedule-opt-campaign-design.md}{the
  design spec}): calibrate the objective. Eight probe \@[schedules]{schedule} chart how the probability
  of reaching a threshold m\_star by a step \@[budget]{budget} k varies across schedule shapes, so m\_star,
  k, and the smoothing/dwell guards can be frozen before any optimization runs. Nothing is optimized here.

  \end{llm}

  \end{intent}

  '
hypothesis: '\begin{hypothesis}[The 95 band within 250 steps separates the shapes]

  \label{schedopt-calib-hypothesis}

  \begin{llm}[claude-fable-5]

  At m\_star near 95 and k in 200-250, the probes separate: the incumbent and fast-descending shapes cross
  early, constants read near zero, and the ascending ramp sits between. If all probes are indistinguishable
  there, the campaign stops.

  \end{llm}

  \end{hypothesis}

  '
seed: 2000
base_args:
- curriculum
- --with-replacement
- --dataset-sentence-count
- '48000'
- --eval-ref-alphas
- '1.4'
- --num-pairs
- '1000'
- --n-iterations
- '30'
- --no-dataset-cache
- --no-waypoint-checkpoints
- --no-plot
runs:
- label: fixed_16
  args:
  - --schedule
  - 1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25,1.6:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: fixed_30
  args:
  - --schedule
  - 3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25,3:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: lin_up
  args:
  - --schedule
  - 0.1562:25,0.4688:25,0.7812:25,1.0938:25,1.4062:25,1.7188:25,2.0312:25,2.3438:25,2.6562:25,2.9688:25,3.2812:25,3.5938:25,3.9062:25,4.2188:25,4.5312:25,4.8438:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: lin_down
  args:
  - --schedule
  - 4.8438:25,4.5312:25,4.2188:25,3.9062:25,3.5938:25,3.2812:25,2.9688:25,2.6562:25,2.3438:25,2.0312:25,1.7188:25,1.4062:25,1.0938:25,0.7812:25,0.4688:25,0.1562:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: down_floor
  args:
  - --schedule
  - 4.8844:25,4.6531:25,4.4219:25,4.1906:25,3.9594:25,3.7281:25,3.4969:25,3.2656:25,3.0344:25,2.8031:25,2.5719:25,2.3406:25,2.1094:25,1.8781:25,1.6469:25,1.4156:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: early_fast
  args:
  - --schedule
  - 3.6919:25,3.1812:25,2.8799:25,2.6548:25,2.4711:25,2.3142:25,2.1762:25,2.0523:25,1.9395:25,1.8357:25,1.7392:25,1.649:25,1.5641:25,1.4839:25,1.4077:25,1.3351:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: late_fast
  args:
  - --schedule
  - 4.9999:25,4.997:25,4.9859:25,4.9613:25,4.9177:25,4.8497:25,4.7519:25,4.6189:25,4.4452:25,4.2255:25,3.9543:25,3.6262:25,3.2357:25,2.7775:25,2.2461:25,1.6361:25
  - --waypoints
  - '25'
  - '50'
  - '75'
  - '100'
  - '125'
  - '150'
  - '175'
  - '200'
  - '225'
  - '250'
  - '275'
  - '300'
  - '325'
  - '350'
  - '375'
  - '400'
- label: incumbent
  args:
  - --schedule-shape
  - envelope
  - --total-iters
  - '900'
  - --n-stages
  - '48'
  - --env-start
  - '5.0'
  - --env-end
  - '1.2857'
  - --env-valley
  - '0.7'
  - --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'
compare:
  metric: unseen_mismatch
objective:
  kind: crossing
  metric: unseen_mismatch
  m_star: 92.5
  k: 400
  w_smooth: 1
  w_dwell: 2
  source: experiments/schedopt/config.json
