name: bimodality_grid_v1
investigation: bimodality
intent: |
  \begin{intent}[A first pass at whether seed cohorts concentrate or split]
  \label{bimodgrid1-intent}
  \begin{llm}[claude-opus-5]
  This experiment asks whether \@[models]{model} trained at one
  \@[α]{alpha} and differing only in \@{seed} concentrate around a single
  accuracy or fall into separate groups, and it asks the question across the
  whole useful range of α rather than near any particular value. Eight grid
  points run from 0.5 to 2.5, fifty \@[replicates]{replicate} each, with the
  same fifty \@{seeds} at every point. The spacing is deliberately coarse:
  the purpose is to find out whether a split exists anywhere and roughly
  where, not to locate its edge.
  \end{llm}
  \end{intent}
background: |
  \begin{background}[Sizing the cohort spread before committing to a grid]
  \label{bimodgrid1-background}
  \begin{llm}[claude-opus-5]
  A five-seed pilot at \@[α]{alpha} = 1.4 had shown replicates landing close
  together, which said that at least one point on the α axis is well behaved
  but left the rest of the range untouched. Fifty
  \@[replicates]{replicate} per grid point is the smallest cohort that makes
  a two-group reading distinguishable from a wide one-group reading, so this
  is the first \@{run} large enough to tell the two apart.
  \end{llm}
  \end{background}
hypothesis: |
  \begin{hypothesis}[Cohorts split in the middle of the range and not at its ends]
  \label{bimodgrid1-hypothesis}
  \begin{llm}[claude-opus-5]
  At low \@[α]{alpha} no \@{replicate} should reach the subject-verb
  \@{number} rule within the \@[budget]{budget}, and at high α most should,
  so both ends of the grid should give tight cohorts. The prediction is that
  somewhere between them the cohort spread grows large enough that the
  replicates are better described as two groups than as one, and that mean
  \@{unseen-mismatch} rises across that region.
  \end{llm}
  \end{hypothesis}
seed: 1000
base_args: []
runs:
  - label: alpha_grid
    args: [bimodality,
           --alphas, "0.5", "0.8", "1.0", "1.2", "1.4", "1.6", "2.0", "2.5",
           --n-seeds, "50", --seed-start, "1000",
           --eval-seed, "99999", --num-eval-pairs, "1000",
           --num-train-sentences, "12000",
           --max-iter, "1200", --batch-size, "32",
           --vocab-size, "40", --unseen-count, "10"]
compare:
  metric: unseen_mismatch
