|
| 1 | +# Cross-Ref Research Workspace |
| 2 | + |
| 3 | +## Purpose |
| 4 | + |
| 5 | +This workspace tests whether frozen external benchmark scores line up with LLM Chess outcomes after conservative model identity mapping. |
| 6 | + |
| 7 | +This README is the operating guide. It should stay stable across result refreshes: use it for layout, artifact roles, commands, and methodology. Use [CONSOLIDATED_REPORT.md](CONSOLIDATED_REPORT.md) and the per-eval result artifacts for current findings. |
| 8 | + |
| 9 | +## Artifact Map |
| 10 | + |
| 11 | +| Artifact | Role | |
| 12 | +| --- | --- | |
| 13 | +| [CONSOLIDATED_REPORT.md](CONSOLIDATED_REPORT.md) | Cross-eval findings, current caveats, and research next steps. | |
| 14 | +| [results/eci_summary.json](results/eci_summary.json), [results/arc_agi_2_summary.json](results/arc_agi_2_summary.json) | Machine-readable per-eval facts used for reporting. | |
| 15 | +| [results/eci.html](results/eci.html), [results/arc_agi_2.html](results/arc_agi_2.html) | Human-readable per-eval reports. | |
| 16 | +| [results/eci_coverage.csv](results/eci_coverage.csv), [results/arc_agi_2_coverage.csv](results/arc_agi_2_coverage.csv) | Row-level coverage and inclusion surfaces. | |
| 17 | +| [mappings/eci.csv](mappings/eci.csv), [mappings/arc_agi_2.csv](mappings/arc_agi_2.csv) | Runtime model-identity source of truth. | |
| 18 | +| [mapping-research](mapping-research) | Evidence notes behind mapping decisions. | |
| 19 | +| [evals/eci/SOURCE.md](evals/eci/SOURCE.md), [evals/arc-agi-2/SOURCE.md](evals/arc-agi-2/SOURCE.md) | External source provenance and score semantics. | |
| 20 | +| [evals/eci/epoch_eci_apr_2026.csv](evals/eci/epoch_eci_apr_2026.csv), [evals/arc-agi-2/arc-agi-2-apr-2026.csv](evals/arc-agi-2/arc-agi-2-apr-2026.csv) | Frozen external source snapshots. | |
| 21 | + |
| 22 | +## Methodology |
| 23 | + |
| 24 | +### Pipeline |
| 25 | + |
| 26 | +1. Parse each frozen external snapshot into normalized rows with one numeric target score. |
| 27 | +2. Map external model names to canonical LLM Chess player names through the mapping CSVs. |
| 28 | +3. Include only `accepted`, `alias`, and `variant-compatible` mappings in statistics. |
| 29 | +4. Keep `ambiguous`, `unmatched`, and `excluded` rows visible in coverage outputs, but out of correlations. |
| 30 | +5. Join included mappings to LLM Chess rows by canonical player name. |
| 31 | +6. If multiple external rows map to one chess player, keep the highest external score for that player. |
| 32 | +7. Compute non-Elo metric relationships on `metric_analysis_rows_max_dedupe`. |
| 33 | +8. Compute Elo relationships on `elo_analysis_rows_max_dedupe`, which requires non-null external score and LLM Chess Elo. |
| 34 | + |
| 35 | +The mapping step is intentionally conservative. A plausible name match is not enough when reasoning mode, product tier, context window, benchmark system, or preview status could change the identity of the model being evaluated. |
| 36 | + |
| 37 | +## Statistics |
| 38 | + |
| 39 | +- Pearson `r`: linear correlation. Larger absolute value means a straighter line. |
| 40 | +- Spearman `rho`: rank correlation. Larger absolute value means the ordering agrees more, even if the line is not clean. |
| 41 | +- Raw Elo correlation: `corr(external_score, llm_chess_elo)` on the Elo sample. |
| 42 | +- Simple `R2`: Pearson `r` squared for one single metric against the external score. |
| 43 | +- OLS CV: repeated 5-fold cross-validation over 3 seeds. Features are selected inside each training fold from predeclared non-Elo chess metrics, then scored on held-out rows. |
| 44 | + |
| 45 | +### Release-Controlled Elo |
| 46 | + |
| 47 | +Raw Elo correlation uses two lists: external scores and LLM Chess Elo values. Release-controlled Elo uses the same final correlation operation, but first replaces both lists with release-date residuals. |
| 48 | + |
| 49 | +Starting from the Elo sample, keep rows with usable release-month metadata: |
| 50 | + |
| 51 | +1. Convert each model release date to a release-month value. |
| 52 | +2. Fit a linear model that predicts external score from release month. |
| 53 | +3. Subtract predicted external score from actual external score. This gives one external-score residual per row. |
| 54 | +4. Fit a separate linear model that predicts LLM Chess Elo from release month. |
| 55 | +5. Subtract predicted Elo from actual Elo. This gives one Elo residual per row. |
| 56 | +6. Compute Pearson correlation between the two residual lists. |
| 57 | + |
| 58 | +In formula form: |
| 59 | + |
| 60 | +```text |
| 61 | +raw_elo = corr(external_score, llm_chess_elo) |
| 62 | +
|
| 63 | +external_residual = external_score - predict(external_score from release_month) |
| 64 | +elo_residual = llm_chess_elo - predict(llm_chess_elo from release_month) |
| 65 | +
|
| 66 | +release_controlled_elo = corr(external_residual, elo_residual) |
| 67 | +``` |
| 68 | + |
| 69 | +The release-controlled value answers a stricter question: among models with comparable release timing, do models that beat their date-based external-score expectation also beat their date-based chess-Elo expectation? It removes only the linear release-month trend, not every possible time-related confounder. |
| 70 | + |
| 71 | +## Interpretation Boundaries |
| 72 | + |
| 73 | +- Correlation is association, not causation. |
| 74 | +- Raw Elo correlation can be inflated by chronology because newer models often improve across many benchmarks at once. |
| 75 | +- Release-controlled correlation is a timing check, not a full causal adjustment. |
| 76 | +- OLS CV is a prediction check; it can fail even when rank correlation is positive. |
| 77 | +- Mapping uncertainty is part of the result. Do not hide unresolved rows just because they are excluded from statistics. |
| 78 | + |
| 79 | +## Review Order |
| 80 | + |
| 81 | +1. Read [CONSOLIDATED_REPORT.md](CONSOLIDATED_REPORT.md) for the cross-eval bottom line and current caveats. |
| 82 | +2. Inspect [results/eci.html](results/eci.html) and [results/arc_agi_2.html](results/arc_agi_2.html) for per-eval detail. |
| 83 | +3. Check [results/eci_summary.json](results/eci_summary.json) and [results/arc_agi_2_summary.json](results/arc_agi_2_summary.json) when a claim needs machine-readable backing. |
| 84 | +4. Use [results/eci_coverage.csv](results/eci_coverage.csv), [results/arc_agi_2_coverage.csv](results/arc_agi_2_coverage.csv), and the mapping CSVs to review row-level inclusion decisions. |
| 85 | +5. Use `mapping-review` or `audit` commands below for generated review surfaces that are not necessarily checked in. |
| 86 | + |
| 87 | +## Commands |
| 88 | + |
| 89 | +From the repository root with `.venv` active: |
| 90 | + |
| 91 | +```bash |
| 92 | +.venv/bin/python data/cross-ref/run_cross_ref.py eci |
| 93 | +.venv/bin/python data/cross-ref/run_cross_ref.py arc_agi_2 |
| 94 | +.venv/bin/python data/cross-ref/run_cross_ref.py cross-eval |
| 95 | +.venv/bin/python data/cross-ref/run_cross_ref.py mapping-review |
| 96 | +.venv/bin/python data/cross-ref/run_cross_ref.py audit |
| 97 | +``` |
| 98 | + |
| 99 | +Default runs write scratch review outputs. Add explicit `--summary-output`, `--report-output`, `--csv-output`, or `--html-output` paths when you need a stable temporary artifact. Use `--publish` only after reviewing outputs and intentionally updating checked-in generated artifacts. |
| 100 | + |
| 101 | +Focused examples: |
| 102 | + |
| 103 | +```bash |
| 104 | +.venv/bin/python data/cross-ref/run_cross_ref.py mapping-review --status ambiguous --eval-id eci |
| 105 | +.venv/bin/python data/cross-ref/run_cross_ref.py rerun-diff eci |
| 106 | +.venv/bin/python data/cross-ref/run_cross_ref.py cross-eval --summary-output /tmp/cross_ref_summary.json |
| 107 | +``` |
| 108 | + |
| 109 | +## Layout |
| 110 | + |
| 111 | +- [evals](evals): frozen external source snapshots and provenance notes. |
| 112 | +- [mappings](mappings): mapping CSVs read by the runner. |
| 113 | +- [mapping-research](mapping-research): evidence notes for mapping decisions. |
| 114 | +- [model-identity](model-identity): generated LLM Chess model inventory. |
| 115 | +- [results](results): checked-in per-eval summaries, coverage files, and human reports. |
| 116 | +- [adapters](adapters), [framework](framework), and [run_cross_ref.py](run_cross_ref.py): normalization, analysis, and publication code. |
0 commit comments