name: faithful_v1
investigation: data-reuse
intent: |
  \begin{intent}[Whether the paper's α curve survives a faithful sampler]
  \label{faithful-v1-intent}
  \begin{llm}[claude-opus-5]
  Every \@{sweep} this project has run drew its training \@{sentences}
  \@{without-replacement}, and that draw does not deliver the \@[α]{alpha} it
  was asked for. Requesting a pool of distinct sentences larger than the
  \@{grammar} can comfortably supply pushes the sampler into the tail of the
  \@{subject-offset} distribution, so the marginal the \@{model} trains on is
  flatter than the one requested. The paper's headline curve,
  \@{unseen-mismatch} against α with an intermediate peak, is therefore plotted
  against a nominal α that overstates the realized one by an amount that grows
  with α.

  This experiment holds the paper's \@{budget}, \@{vocabulary}, and evaluation
  fixed and varies only how the pool is drawn. Two \@{arms} sweep α from 0.0 to
  3.0 at a pool of 48,000 \@{sentences}, one \@{without-replacement} and one
  \@{with-replacement}, and two more do the same at the \@{oneshot} limit. At
  that pool size 1,200 \@{steps} at \@{batch} 32 consume the training split
  exactly once, so neither regime recycles and the sampler is the only thing
  that differs.
  \end{llm}
  \end{intent}
background: |
  \begin{background}[What deduplication does to the axis the curve is plotted against]
  \label{faithful-v1-background}
  \begin{llm}[claude-opus-5]
  \@[reuse\_v1]{reuse-v1-intent} asked whether recycling the paper's training
  sentences changes its result, comparing a 12,000-\@{sentence} pool against a
  48,000-sentence pool with both drawn \@{without-replacement}. It located the
  \@{unseen-mismatch} peak at \@[α]{alpha} = 1.2 in the smaller pool and α = 1.4
  in the larger one, a shift of two grid points that reads naturally as an
  effect of \@[epochs]{epoch}.

  Recomputing the \@{subject-offset} marginal those two pools actually contain
  suggests a different reading. At \@{vocabulary} size 40 the nominal α = 1.2
  pool of 12,000 realizes 1.09, and the nominal α = 1.4 pool of 48,000 realizes
  1.18. Measured in realized α the two peaks sit 0.09 apart rather than 0.20, so
  roughly half of that shift is the larger pool reaching further into the tail
  rather than the loss of reuse. The residual is smaller than the 0.1 grid step
  and this design does not separate it. These figures come from the sampler
  itself rather than from any training \@{run}, and drawn \@{with-replacement}
  the realized and nominal α agree to two decimal places at every level tested,
  which is why the sampler is the variable here and the pool size is held fixed.

  Two prior results frame what is at stake. The \@{joint-fidelity-ceiling}
  establishes that uniqueness and fidelity to the \@{grammar} exclude each other
  at any \@[budget]{budget} this project uses, and
  \@[the page on the paper's own corpus]{form-collapse} works out what the
  paper's pool costs in the \@{form-class} mix. The schedule-optimization
  campaign has drawn \@{corpus-faithful} pools since its fourth round, so its
  constant-α reference points and the paper's are not currently on the same
  axis.
  \end{llm}
  \end{background}
hypothesis: |
  \begin{hypothesis}[The peak moves down the axis when the sampler is faithful]
  \label{faithful-v1-hypothesis}
  \begin{llm}[claude-opus-5]
  The \@{unseen-mismatch} peak of the \@{with-replacement} \@{sweep} falls at a
  lower nominal \@[α]{alpha} than the peak of the \@{without-replacement} sweep,
  and lands between 1.1 and 1.2. The deduplicated \@{arm} peaks near α = 1.4.

  The \@{oneshot} \@{arms} test the same prediction where the effect on corpus
  composition is largest. The \@{grammar} builds only 80 bare \@{sentences} at a
  single \@{pairing}, so deduplication reduces them from a quarter of the pool
  to 0.17 percent of it, against 24.99 percent when the pool is drawn with
  replacement. No direction is registered for the height of the peak or for the
  spread across \@{seeds}. Those are estimated rather than predicted.
  \end{llm}
  \end{hypothesis}
seed: 42
base_args: [--n-iterations, "10"]
runs:
  # Deduplicated arms reproduce reuse_v1's no-reuse pair exactly (same seed,
  # pool, and grid), so the dataset cache serves their data and the contrast
  # against the faithful arms is adjudicated inside one report.
  - label: dedup_zipfian
    args: [--parameter-range, "0.0,3.0", --step, "0.1",
           --dataset-sentence-count, "48000"]
  - label: faithful_zipfian
    args: [--parameter-range, "0.0,3.0", --step, "0.1",
           --dataset-sentence-count, "48000", --with-replacement]
  - label: dedup_oneshot
    args: [--oneshot, --dataset-sentence-count, "48000"]
  - label: faithful_oneshot
    args: [--oneshot, --dataset-sentence-count, "48000", --with-replacement]
compare:
  metric: unseen_mismatch
  pair:
    treatment: faithful_zipfian
    reference: dedup_zipfian
    label: Faithful − deduplicated
