|
1 | 1 | # Cross-Ref Research Workspace |
2 | 2 |
|
3 | | -## Essence |
| 3 | +## Purpose |
4 | 4 |
|
5 | | -This workspace tests whether external benchmark scores line up with LLM Chess results after conservative model mapping. |
| 5 | +This workspace tests whether frozen external benchmark scores line up with LLM Chess outcomes after conservative model identity mapping. |
6 | 6 |
|
7 | | -Current answer: Epoch ECI has a real positive relationship with LLM Chess Elo. ARC-AGI-2 is positive but weaker, noisier, and more blocked by model-identity ambiguity. |
| 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. | |
8 | 21 |
|
9 | 22 | ## Methodology |
10 | 23 |
|
11 | | -| Step | Rule | Why it matters | |
12 | | -| --- | --- | --- | |
13 | | -| Source parse | Keep external snapshots in `evals/`; parse the target score to a numeric column. | The benchmark score must be traceable to a frozen source file. | |
14 | | -| Model mapping | Only `accepted`, `alias`, and `variant-compatible` rows enter analysis. `ambiguous`, `unmatched`, and `excluded` rows stay visible but out of correlations. | Weak identity guesses would move the numbers more than the math does. | |
15 | | -| Join to chess | Mapped rows join to LLM Chess rows by canonical player name. | The row must exist in the current chess dataset. | |
16 | | -| Deduplication | If several eval rows map to one chess player, keep the highest external score for that player. | One chess player should not get multiple votes in a correlation. | |
17 | | -| Metric sample | Non-Elo chess metrics use `metric_analysis_rows_max_dedupe`. | These rows have chess metrics even when Elo is missing. | |
18 | | -| Elo sample | Elo relationships use `elo_analysis_rows_max_dedupe`. | These rows have both an external score and non-null LLM Chess Elo. | |
| 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. |
19 | 36 |
|
20 | 37 | ## Statistics |
21 | 38 |
|
22 | 39 | - Pearson `r`: linear correlation. Larger absolute value means a straighter line. |
23 | 40 | - Spearman `rho`: rank correlation. Larger absolute value means the ordering agrees more, even if the line is not clean. |
24 | | -- Simple `R2`: Pearson `r` squared for one metric against the external score. |
25 | | -- Release-controlled Elo: Pearson correlation after both external score and LLM Chess Elo are residualized on release month. |
| 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. |
26 | 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. |
27 | 44 |
|
28 | | -## Current Signal |
| 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. |
29 | 57 |
|
30 | | -| Eval | Raw Elo | Release-controlled | Top chess metric | OLS CV | |
31 | | -| --- | --- | --- | --- | --- | |
32 | | -| Epoch ECI | Pearson `0.697`, Spearman `0.698`, `n=66` | Pearson `0.493`, `n=65` | `player_wins_percent`: Pearson `0.637`, Spearman `0.769`, `n=81` | `R2=0.381` vs mean baseline `-0.043`; rank Spearman `0.683` | |
33 | | -| ARC-AGI-2 | Pearson `0.527`, Spearman `0.630`, `n=52` | Pearson `0.384`, `n=52` | `player_wins_percent`: Pearson `0.401`, Spearman `0.607`, `n=55` | `R2=-0.041` vs mean baseline `-0.044`; rank Spearman `0.485` | |
| 58 | +In formula form: |
34 | 59 |
|
35 | | -Interpretation: ECI carries usable signal. ARC carries some rank-order signal, but its calibrated prediction result is basically baseline-level. |
| 60 | +```text |
| 61 | +raw_elo = corr(external_score, llm_chess_elo) |
36 | 62 |
|
37 | | -## Trust Status |
| 63 | +external_residual = external_score - predict(external_score from release_month) |
| 64 | +elo_residual = llm_chess_elo - predict(llm_chess_elo from release_month) |
38 | 65 |
|
39 | | -- Published artifacts currently reproduce: audit `reproducibility_status = pass`. |
40 | | -- Coverage is not clean: audit `coverage_status = review-needed` because `169` mapping rows still need review. |
41 | | -- Do not turn the correlations into capability claims until the high-impact mapping queue shrinks. |
| 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. |
42 | 78 |
|
43 | 79 | ## Review Order |
44 | 80 |
|
45 | | -1. [CONSOLIDATED_REPORT.md](CONSOLIDATED_REPORT.md): current findings and next actions. |
46 | | -2. [results/cross_ref_summary.json](results/cross_ref_summary.json): machine-readable aggregate facts. |
47 | | -3. [results/mapping_review.csv](results/mapping_review.csv): row-level mapping debt. |
48 | | -4. [mappings/eci.csv](mappings/eci.csv) and [mappings/arc_agi_2.csv](mappings/arc_agi_2.csv): identity source of truth used by the runner. |
| 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. |
49 | 86 |
|
50 | 87 | ## Commands |
51 | 88 |
|
52 | 89 | From the repository root with `.venv` active: |
53 | 90 |
|
54 | 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 |
55 | 96 | .venv/bin/python data/cross-ref/run_cross_ref.py audit |
56 | 97 | ``` |
57 | 98 |
|
58 | | -The default run writes temporary review outputs. Use `--publish` only after reviewing the output and intentionally updating checked-in artifacts. |
| 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. |
59 | 100 |
|
60 | | -Detailed agent-only command and artifact contracts live in the cross-ref skill references: [commands](../../.agents/skills/cross-ref-research/references/commands.md), [artifacts](../../.agents/skills/cross-ref-research/references/artifacts.md), [methodology](../../.agents/skills/cross-ref-research/references/methodology.md), and [mapping rules](../../.agents/skills/cross-ref-research/references/mapping-rules.md). |
| 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 | +``` |
61 | 108 |
|
62 | 109 | ## Layout |
63 | 110 |
|
64 | | -- `evals/`: frozen external source snapshots and provenance notes. |
65 | | -- `mappings/`: mapping CSVs read by the runner. |
66 | | -- `mapping-research/`: evidence notes for mapping decisions. |
67 | | -- `model-identity/`: generated LLM Chess model inventory. |
68 | | -- `results/`: generated summaries, coverage, audit, and review surfaces. |
69 | | -- `adapters/`, `framework/`, `run_cross_ref.py`: normalization, analysis, and publication code. |
| 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