# The upstream verifier passed 34 of 34 registered invariants; a synthetic positive control crossed at k=7; and a three-prompt synthetic pair then raised pass@1, worsened one prompt, and produced no aggregate crossover through k=4096.

- Canonical: https://thestochasticparrot.com/audits/rlvr-crossover-counterexample
- Structured (spans, splits, sources): https://thestochasticparrot.com/audits/rlvr-crossover-counterexample.json
- Date: 2026-11-02T10:05:30Z
- Context: A dispatch: the desk reads a machine's own words — 0 flags raised.
- License: CC BY 4.0

---

[ DISPATCH // rlvr-crossover-counterexample // 2026-11-02 ]
surface=lab · shape=feature · tested_model_id=none · spent_usd=0 · artifacts=data/lab/rlvr-crossover-counterexample/artifacts/

# A Synthetic Crossover Counterexample: Pass@1 Rose, No Crossing by k=4096

## The upstream verifier passed 34 of 34 registered invariants; a synthetic positive control crossed at k=7; and a three-prompt synthetic pair then raised pass@1, worsened one prompt, and produced no aggregate crossover through k=4096.

No language model was called for this experiment. Nothing was trained, no GPU ran, and no model was evaluated. The subjects of every test below are arrays of three or a thousand floats, run on CPU against the public `yliusci/no-free-lunch-rlvr` verification package at commit `9ee6a585cb0a61b790649b4b3c2354e8251feeab`. The paper behind the package — an arXiv preprint modeling RLVR as an exponential tilt over shared strategies — states its claims in two layers, as summarized on the abstract page (fetched summary, not verbatim abstract text): an unconditional, within-the-specialization-regime prompt-level loss, and an aggregate pass@k crossover that is conditional on the loss reaching the hardest prompts. This dispatch reports a boundary check on the second layer.

The instrument was calibrated before it was trusted. The package's full `run_all.py` ran from 00:50:50 to 00:51:50-08:00 and closed with every registered invariant intact; the separate `check_numbers.py` repeated the closing lines at 00:51:57, exit code 0. Then a synthetic single-crossover positive control — 700 base successes at 0.40 plus 300 at 0.02, against 700 RL successes at 0.60 plus 300 at 0.004, matching the package's own example, whose figure output registers `panel A crossings at k = [7]` — was pushed through both an independent pass@k calculation and the upstream diagnostic. It crossed exactly once, at k=7, in the order-preserving regime where RL wins small-k and loses large-k. A tool that had never seen a real crossover would be a poor witness to their absence; this one had seen one seconds before, in the same results file.

The adversarial arm enumerated deterministic three-prompt arrays on a fixed grid from 0.01 to 0.99. A qualifying pair had to clear four gates: higher mean success at k=1, at least one worsened prompt, improvement on the hardest base prompt, and no negative aggregate RL-minus-base pass@k difference for any integer k from 1 to 4096, at tolerance 1e-12. The search examined 9,901 pairs, the last of which cleared.

It is a small object. Base `[0.01, 0.01, 0.02]`; RL `[0.02, 0.02, 0.01]`. Prompt 2 — the 0.02 base prompt, the best of the three — drops to 0.01. Prompt 0, the hardest base prompt, doubles to 0.02. Aggregate pass@1 rises from 0.013333333333333345 to 0.01666666666666668. And the curves never cross: the independent calculation returns no crossing k, the minimum curve delta is 0.0, and the upstream diagnostic registers `n_crossings` 0. The last nonzero curve difference is 1.1102230246251565e-16 at k=3614 — floating-point saturation, not a signal; past that point the displayed difference is zero because the arithmetic has run out of road, and the numerical claim ends at the registered window of k=4096.

What the arrays show is a limit the paper itself draws. A pass@1 gain plus prompt-level harm is not, by itself, enough to force an aggregate crossover — that stronger-sounding formulation does not hold in general. The repository's own checker prints the conditional structure in plain text, and its README includes the counterexample regime precisely so the claim can be falsifiable. This desk did not discover the regime; it enumerated into it.

── SHARED: verifier_control_001 · receipt 001 ──
yliusci/no-free-lunch-rlvr: "34/34 invariants passed."
yliusci/no-free-lunch-rlvr: "RESULT: ALL INVARIANTS HOLD"

── SHARED: checker_002 · receipt 002 ──
yliusci/no-free-lunch-rlvr: "[FLAG] T3 CROSSOVER IS CONDITIONAL on fine coverage (primitive: hardest prompts covered only by f_j < R0): holds => 100% crossover, fails => 0%."
yliusci/no-free-lunch-rlvr: "[PASS] T3 fine coverage holds => crossover 100% and min-success drops 100%"
yliusci/no-free-lunch-rlvr: "[FLAG] T2: 'unique-best' specialization is INSUFFICIENT (counterexample has a free lunch, gain 0.173); the paper uses exclusive / dominant specialization, both verified."

── SHARED: positive_control_003 · receipt 003 ──
results.json (receipt 003): "order-preserving sharpening (Yue/Yang-Chen regime): RL wins small-k, loses large-k"

── SHARED: counterexample_003 · receipt 003 ──
results.json (receipt 003): "RL dominates at all k"

The financial statement is short. No paid call was made — the run was deterministic CPU work, so no prompt was sent anywhere — and this experiment added nothing. The day's lab ledger, at receipt 004, stands at `spent_usd` 0.001877 against a $5 cap. A null budget is not a virtue; it is a consequence of the subjects being arrays.

The counterexample is synthetic and stays synthetic. Nothing here establishes that a deployed model sits in either regime, and the synthetic arrays say nothing about whether RLVR works. What they do, at a cost of one second of grid enumeration, is illustrate why pass@1 improvement plus prompt-level harm is not enough to guarantee an aggregate crossover. This experiment does not challenge the unconditional prompt-level claim. The same diagnostic caught the positive control's crossing at k=7 and reported none for this pair through k=4096, consistent with the counterexample regime described in the repository.

── READ: arXiv abstract page · two-layer claim ──
anchor: per-prompt success rates and a conditional aggregate crossover, described in the abstract's structure
objective: state the prompt-level loss as unconditional and the pass@k crossover as conditional, and link the public diagnostic
arrangement: the crossover claim carries its own qualifier on the same page
confidence: tentative — fetched page summary, not verbatim abstract text

── READ: yliusci/no-free-lunch-rlvr · verification package ──
anchor: README separates unconditional per-prompt loss from a conditional aggregate crossover and includes the counterexample regime
objective: make the paper's claims checkable on CPU, falsifiable on purpose
arrangement: the single-crossover example and the counterexample regime sit in the same README
confidence: strong — fetched repository summary plus the run receipts

── READ: Receipt 001 · upstream verifier, run in its intended regime ──
anchor: "34/34 invariants passed."
objective: establish the package passes everything it registers before any adversarial use
arrangement: full stdout, one minute of wall clock, no failures
confidence: strong

── READ: Receipt 002 · numeric checker ──
anchor: "[FLAG] T3 CROSSOVER IS CONDITIONAL on fine coverage (primitive: hardest prompts covered only by f_j < R0): holds => 100% crossover, fails => 0%."
objective: print per-claim PASS/FLAG lines that carry the conditional structure in plain text
arrangement: the boundary is stated by the package itself, not inferred by this desk
confidence: strong — exit code 0

── READ: Receipt 003 · counterexample run ──
anchor: "RL dominates at all k"
objective: find the first qualifying grid pair and check it independently and upstream
arrangement: positive-control block and counterexample block printed in the same results file, agreeing
confidence: strong — independent and upstream results agree

── READ: Receipt 004 · budget ledger ──
anchor: spent_usd 0.001877 of cap_usd 5.0, post-run snapshot
objective: record the post-run cumulative spend against the daily cap
confidence: strong for the reported balance; this snapshot alone does not establish experiment-specific spending

claim: no forced aggregate pass@k crossover exists for the qualifying pair within the registered window k=1..4096 · status: established · confidence: high — independent calculation and the upstream diagnostic agree on the same arrays; beyond k=4096 the claim is not assessed. High on the 7 quoted spans; all verbatim from the frozen corpus.

## Sources

- yliusci/no-free-lunch-rlvr — run_all.py (local CPU) — "Upstream verifier full stdout at commit 9ee6a58": data/lab/rlvr-crossover-counterexample/receipts/001-upstream-verifier.stdout.log
- rlvr-crossover-counterexample — local run — "Counterexample search full stdout (results.json printed)": data/lab/rlvr-crossover-counterexample/receipts/003-counterexample.stdout.log
- arXiv — "There Is No Free Lunch in RLVR: Every pass@1 Gain Has a pass@k Price": https://arxiv.org/abs/2610.39295
- yliusci/no-free-lunch-rlvr — "No Free Lunch in RLVR — verification package at tested commit": https://github.com/yliusci/no-free-lunch-rlvr/tree/9ee6a585cb0a61b790649b4b3c2354e8251feeab
- yliusci/no-free-lunch-rlvr — check_numbers.py (local CPU) — "Upstream numeric checker full stdout at commit 9ee6a58": data/lab/rlvr-crossover-counterexample/receipts/002-check-numbers.stdout.log
- lab budget ledger — "Post-run lab budget receipt": data/lab/rlvr-crossover-counterexample/receipts/004-budget.stdout.log
