Research log Small Model Experimentation
GitHub

Rule-Family Diversity Scaling Experiment

Finished2026-06-21imported · line ZCollective Experimentation InfrastructureGitHub ↗
Variety beats volume for fixing unseen code

The one idea you need

Give a mechanic the same 240 practice repairs. Spread across only 3 engine types, they just memorize those engines. Spread across 12 types, they instead learn to read the diagnostic printout itself, and can then fix an engine model they have never seen before.

The question

With a fixed budget of practice examples for teaching a small model to fix buggy code, does covering more kinds of problems help it fix brand-new kinds?

What we found

Yes. Holding training at 240 examples but spreading them across 12 kinds of problems instead of 3 lifted fixes on completely unseen problem types from 0% to 29%, while fixes on familiar problems stayed high. But it only works because the model reads the failing-run evidence: strip that evidence and transfer drops to 0%. And the gain is lopsided, with one unseen type hitting 92% while two others never worked at all.

Why it matters

When fine-tuning a small model to generalize, spend a fixed example budget on breadth of problem types, not depth on a few. And feed it real execution-failure evidence at both training and answer time, or transfer to new types vanishes.

Fixing brand-new problem types0% → 29%3 versus 12 problem types, same 240 examples
Remove the failing-run evidence29% → 0%same model, evidence stripped at answer time
Very uneven across new types92% vs 0%best unseen type; two others never worked
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Abstract
    2. Design
    3. Core Results
    4. Diversity Scale Results
    5. Trace Control And Ablation Results
    6. Held-Out Rule Results By Family
    7. Interpretation
    8. Figures
    9. Artifacts
  4. Experiment log
  5. Figures
  6. Data files
  7. Reproduce
  8. Related

Results at a glance 7

Fixing brand-new problem types only takes off at the widest variety

How to read

Horizontal axis is how many problem-type varieties were in training (3, 6, 12); vertical axis is the share of buggy tasks fixed, higher is better. One line tracks familiar problems, one the same problems in new formats, one brand-new problem types.

0%50%100%150%57.510in-distribution (base IID)in-distribution (…format holdoutheld-out rule familiesheld-out rule fam…

Takeaway → The brand-new-type line barely lifts off zero, going 0% then just 4%, until 12 varieties, where it jumps to 29%, while familiar-problem fixes stay high throughout.

Data table
training rule familiesin-distribution (base IID)format holdoutheld-out rule families
394.4%50%0%
677.8%52.8%4.2%
1286.1%44.4%29.2%

Numbers from reports/final_core_results.csv

Technical framing

Repair success vs number of training rule families — Transfer to unseen rule families only emerges at 12 training families (0% -> 4% -> 29%), while in-distribution repair stays high throughout.

New-type fixes need real failing-run evidence at training and answer time

How to read

Each bar is a setup's share of never-seen-type bugs fixed, taller is better. First bar is the full trained model with real evidence; the rest drop or scramble that evidence at answer or training time, or use the untouched base model.

0%10%20%30%trace-trained + trace prompttrace-trained + trace prompt29.2%trace-trained, no-trace prompttrace-trained, no-trace prompt0%trace-trained, shuffled-trace prompttrace-trained, shuffled-trace pro…4.2%no-trace trainingno-trace training2.1%shuffled-trace trainingshuffled-trace training2.1%frozen basefrozen base0%

Takeaway → Only the full setup with real evidence reaches 29%; every stripped or scrambled variant collapses to 4% or below, so the evidence does the work.

Data table
conditionrepair@1
trace-trained + trace prompt29.2%
trace-trained, no-trace prompt0%
trace-trained, shuffled-trace prompt4.2%
no-trace training2.1%
shuffled-trace training2.1%
frozen base0%

Numbers from reports/final_core_results.csv, reports/final_ablation_results.csv

Technical framing

Held-out rule-family repair: 12-family trace training vs controls and prompt ablations — The 29% transfer requires real traces at both training and test time: removing or shuffling the trace at either stage collapses it to near zero.

Almost all the transfer comes from a single new problem type

How to read

Each bar is one never-seen problem type, with 12 tasks each; height is the share fixed, higher is better.

0%25%50%75%100%sorted_joinsorted_join91.7%quadratic_shiftquadratic_shift25%parity_offsetparity_offset0%tuple_maxtuple_max0%

Takeaway → One type is nearly solved at 92% and another partly at 25%, while two get zero fixes, so the gain is narrow, not broad.

Data table
held-out rule family12-family trace-trained
sorted_join91.7%
quadratic_shift25%
parity_offset0%
tuple_max0%

Numbers from reports/final_trace_by_family.csv

Technical framing

Where the 12-family model's transfer comes from: held-out families, one by one — Transfer is concentrated: one held-out family is nearly solved (92%), one partially (25%), and two show zero transfer.

On familiar problems, only one bug type wobbles as variety grows

How to read

Bars show the share of familiar bugs fixed for three bug types, grouped by 3, 6, and 12 training varieties; higher is better.

0%25%50%75%100%affine_intaffine_int83.3%33.3%58.3%slug_affixslug_affix100%100%100%threshold_labelthreshold_label100%100%100%

Takeaway → Two bug types stay perfectly fixed at every variety level, and all the movement lands on the linear-formula bug type.

Data table
Bug family (base IID split)3 families6 families12 families
affine_int83.3%33.3%58.3%
slug_affix100%100%100%
threshold_label100%100%100%

Numbers from reports/final_trace_by_family.csv

Technical framing

Trained-family repair on in-distribution bugs as diversity grows — Adding families leaves slug and threshold repairs perfect; all in-distribution interference lands on affine_int.

Coping with new formats depends heavily on the bug type

How to read

Bars show the share of same-problems-in-new-formats bugs fixed for three bug types, grouped by 3, 6, and 12 training varieties; higher is better.

0%25%50%75%100%affine_intaffine_int8.3%8.3%8.3%slug_affixslug_affix50%58.3%25%threshold_labelthreshold_label91.7%91.7%100%

Takeaway → The threshold-labeling bug type stays near-perfect across formats, the linear-formula type is stuck near the bottom, and the text-slug type slips at the widest variety.

Data table
Bug family (format holdout split)3 families6 families12 families
affine_int8.3%8.3%8.3%
slug_affix50%58.3%25%
threshold_label91.7%91.7%100%

Numbers from reports/final_trace_by_family.csv

Technical framing

Format-holdout repair by bug family: robustness is family-specific — Under new surface formats threshold_label stays near-perfect, affine_int is stuck at 1/12, and slug_affix degrades at 12 families.

Getting the rule label right shows up before full fixes do

How to read

Horizontal axis is training variety (3, 6, 12); vertical axis is a share on new-type problems, higher is better. One line is how often the model names the correct fix rule, the other how often it fully fixes the bug.

0%20%40%60%57.510Correct rule marker presentCorrect rule mark…Repair@1

Takeaway → The correct-label line climbs steadily while full fixes stay flat until 12 varieties, so partial understanding builds before complete repairs arrive.

Data table
Number of training rule familiesCorrect rule marker presentRepair@1
322.9%0%
633.3%4.2%
1245.8%29.2%

Numbers from reports/final_core_results.csv

Technical framing

On held-out families, partial rule-marker progress precedes full repairs — Marker presence climbs steadily with diversity while full repairs only catch up at 12 families, hinting transfer builds gradually.

The transfer gain is not bought with extra thinking time

How to read

Bars show median seconds to produce one attempt on new-type problems for each setup; there is no better direction, this just checks whether some setups simply ran longer.

02.557.510Frozen baseFrozen base3.983-family trace3-family trace8.076-family trace6-family trace7.7512-family trace12-family trace7.9212-family no-trace12-family no-trace7.7812-family shuffled-trace12-family shuffled-trace7.75

Takeaway → Every trained setup takes about eight seconds regardless of variety, so the widest-variety gain is not explained by more time per attempt.

Data table
Model condition (rule holdout split)Median seconds per attempt
Frozen base3.98
3-family trace8.07
6-family trace7.75
12-family trace7.92
12-family no-trace7.78
12-family shuffled-trace7.75

Numbers from reports/final_core_results.csv

Technical framing

Generation time on held-out families: transfer is not bought with extra decoding — All trained adapters spend about 8s per attempt regardless of diversity, so the 12-family transfer gain is not extra test-time compute.

In the author’s words from the Report · “Abstract”

This experiment tests whether increasing rule-family diversity in trace-conditioned repair training improves transfer to unseen rule structures when the total number of training records is fixed. Three trace-conditioned LoRA adapters were trained on 240 examples each, using 3, 6, or 12 rule families. The evaluation separates base-IID repair, format holdout, and fully held-out rule-family transfer. Controls test frozen-model behavior, no-trace training, shuffled-trace training, and prompt-time trace ablations.

Overview

This directory contains the small, download-friendly artifacts for a standalone rule-family diversity scaling experiment.

Large generated artifacts such as model adapters and checkpoints are stored separately in:

/workspace/large_artifacts/rule_family_diversity_scaling/

Contents

  • configs/: experiment configuration.
  • data/: generated JSONL datasets and dataset manifest.
  • figures/: report figures generated by scripts/make_report.py.
  • logs/: detailed experiment log.
  • reports/: evaluation JSON, CSV summaries, and final paper.
  • scripts/: dataset builder, evaluator, final evaluation runner, and report generator.

Main Report

Read reports/rule_family_diversity_scaling_paper.md after final report generation.

Headline final results:

  • Best base-IID repair among trace diversity scales: scale3_trace, 34/36.
  • Best format-holdout repair among trace diversity scales: scale6_trace, 19/36.
  • Best held-out rule-family repair among trace diversity scales: scale12_trace, 14/48.
  • scale12_trace rule-holdout transfer collapses under prompt ablations: no-trace prompt 0/48, shuffled-trace prompt 2/48.
  • Scale12 no-trace training and shuffled-trace training controls each reached only 1/48 on rule holdout.

Large Artifacts

Adapters and checkpoints live in:

/workspace/large_artifacts/rule_family_diversity_scaling/models/

Do not include that directory when downloading only the small package.

Report

Rendered from reports/rule_family_diversity_scaling_paper.md

Date: 2026-06-21

Abstract

This experiment tests whether increasing rule-family diversity in trace-conditioned repair training improves transfer to unseen rule structures when the total number of training records is fixed. Three trace-conditioned LoRA adapters were trained on 240 examples each, using 3, 6, or 12 rule families. The evaluation separates base-IID repair, format holdout, and fully held-out rule-family transfer. Controls test frozen-model behavior, no-trace training, shuffled-trace training, and prompt-time trace ablations.

Design

  • Base model: Qwen/Qwen2.5-Coder-3B-Instruct.
  • Revision: 488639f1ff808d1d3d0ba301aef8c11461451ec5.
  • Training method: QLoRA, rank 32, alpha 64, dropout 0.05.
  • Training budget: 240 records per diversity scale, 3 epochs.
  • Evaluation metric: repair@1, requiring both visible and hidden tests to pass.
  • Validation splits: 36 base-IID records, 36 format-holdout records, and 48 held-out rule-family records.

Training family counts:

  • 3-family scale: 80 records per family.
  • 6-family scale: 40 records per family.
  • 12-family scale: 20 records per family.

Held-out rule families:

  • parity_offset_holdout
  • quadratic_shift_holdout
  • tuple_max_holdout
  • sorted_join_holdout

Core Results

ConditionBase IIDFormat HoldoutRule Holdout
Frozen trace0.0% (0/36)0.0% (0/36)0.0% (0/48)
3 families, trace94.4% (34/36)50.0% (18/36)0.0% (0/48)
6 families, trace77.8% (28/36)52.8% (19/36)4.2% (2/48)
12 families, trace86.1% (31/36)44.4% (16/36)29.2% (14/48)
12 families, no trace train/eval0.0% (0/36)0.0% (0/36)2.1% (1/48)
12 families, shuffled trace train0.0% (0/36)0.0% (0/36)2.1% (1/48)

Diversity Scale Results

ConditionBase IIDFormat HoldoutRule Holdout
3 families, trace94.4% (34/36)50.0% (18/36)0.0% (0/48)
6 families, trace77.8% (28/36)52.8% (19/36)4.2% (2/48)
12 families, trace86.1% (31/36)44.4% (16/36)29.2% (14/48)

Trace Control And Ablation Results

ConditionBase IIDFormat HoldoutRule Holdout
12 families, trace86.1% (31/36)44.4% (16/36)29.2% (14/48)
12-family trace adapter, no trace prompt0.0% (0/36)0.0% (0/36)0.0% (0/48)
12-family trace adapter, shuffled trace prompt0.0% (0/36)0.0% (0/36)4.2% (2/48)

Held-Out Rule Results By Family

ConditionFamilyrepair@1Successes
3 families, traceparity_offset_holdout0.0%0/12
3 families, tracequadratic_shift_holdout0.0%0/12
3 families, tracesorted_join_holdout0.0%0/12
3 families, tracetuple_max_holdout0.0%0/12
6 families, traceparity_offset_holdout0.0%0/12
6 families, tracequadratic_shift_holdout16.7%2/12
6 families, tracesorted_join_holdout0.0%0/12
6 families, tracetuple_max_holdout0.0%0/12
12 families, traceparity_offset_holdout0.0%0/12
12 families, tracequadratic_shift_holdout25.0%3/12
12 families, tracesorted_join_holdout91.7%11/12
12 families, tracetuple_max_holdout0.0%0/12

Interpretation

  • Best held-out rule-family repair among the diversity-scale adapters was scale12_trace at 29.2% (14/48).
  • Best format-holdout repair among the diversity-scale adapters was scale6_trace at 52.8% (19/36).
  • Best base-IID repair among the diversity-scale adapters was scale3_trace at 94.4% (34/36).
  • On held-out rule families, the 12-family trace adapter scored 29.2%, while the no-trace control scored 2.1% and the shuffled-trace-trained control scored 2.1%.

The central comparison is the diversity-scale curve on the rule-holdout split. A useful positive result is not simply high base-IID repair; it is improved rule-holdout repair under the same 240-record training budget. The control rows indicate whether any held-out repair depends on valid trace evidence or can be explained by patch priors learned from the training distribution.

Figures

Artifacts

Experiment log 12

Show the running log (12 entries, 2026-06-21)

2026-06-21 Setup

Objective: run a standalone rule-family diversity scaling experiment that tests whether trace-conditioned repair learns a transferable counterexample-to-rule procedure as training family diversity increases.

Directory policy:

Initial hypothesis:

If trace-conditioned repair is learning a general counterexample-to-rule procedure, then adapters trained on more diverse rule families should improve on held-out rule families even when total training record count is held fixed.

Design constraints:

  • The paper and artifacts must be standalone.
  • Total training records are fixed at 240 for every diversity scale.
  • The exact target rule is not stated in issue text.
  • Visible failure traces contain concrete counterexamples.
  • Hidden tests use inputs not present in the visible trace.
  • Final evaluation must separately report trained-family IID, trained-family format holdout, and fully held-out rule-family transfer.

2026-06-21 Dataset Builder Smoke Test

Builder:

experiments/rule_family_diversity_scaling/scripts/build_diversity_dataset.py

Smoke command:

python experiments/rule_family_diversity_scaling/scripts/build_diversity_dataset.py --output-dir /tmp/rfds_smoke --total-train-records 12 --base-iid-per-family 1 --format-per-family 1 --holdout-per-family 1 --seed 20260621

Smoke result:

  • Build completed successfully.
  • Each diversity scale had 12 training records.
  • Validation smoke splits had 3 base-IID records, 3 format-holdout records, and 4 held-out-family records.
  • The builder initially exposed a useful edge case: numeric wrong rules can coincidentally pass one visible case, which would omit that expected output from the failure trace. The builder now rejects and resamples any record that does not satisfy the trace-evidence invariant.

2026-06-21 Full Dataset Build

Command:

python experiments/rule_family_diversity_scaling/scripts/build_diversity_dataset.py --output-dir experiments/rule_family_diversity_scaling/data --total-train-records 240 --base-iid-per-family 12 --format-per-family 12 --holdout-per-family 12 --seed 20260621

Result:

  • train_scale3: 240 records from 3 families, 80 records per family.
  • train_scale6: 240 records from 6 families, 40 records per family.
  • train_scale12: 240 records from 12 families, 20 records per family.
  • val_base_iid: 36 records from the 3 base families.
  • val_format_holdout: 36 records from the 3 base families with shifted numeric ranges and token formats.
  • val_rule_holdout: 48 records from 4 families absent from every training scale.
  • repair_all: 840 total records.

Training-family scales:

  • scale3: affine_int, threshold_label, slug_affix.
  • scale6: affine_int, threshold_label, slug_affix, abs_shift, clamp_offset, tuple_linear.
  • scale12: affine_int, threshold_label, slug_affix, abs_shift, clamp_offset, tuple_linear, length_label, contains_label, prefix_switch, modulo_label, sign_piece, replace_wrap.

Held-out rule families:

  • parity_offset_holdout
  • quadratic_shift_holdout
  • tuple_max_holdout
  • sorted_join_holdout

All builder invariants passed.

2026-06-21 Frozen Evaluation Smoke

Command:

python experiments/rule_family_diversity_scaling/scripts/eval_diversity.py --data experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --output experiments/rule_family_diversity_scaling/reports/frozen_trace_base_iid_pilot6.json --condition trace --max-records 6 --max-new-tokens 256

Result:

  • Records: 6 base-IID examples.
  • Repair@1: 0/6.
  • Patch apply rate: 0/6.
  • Visible pass rate: 0/6.

Decision:

  • The evaluator works on the new record schema.
  • Proceed with LoRA training for diversity scales and controls.

2026-06-21 Training: scale3_trace_lora

Command:

python scripts/train_repair_lora.py --train experiments/rule_family_diversity_scaling/data/repair_train_scale3.jsonl --eval experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --mode trace --model-id Qwen/Qwen2.5-Coder-3B-Instruct --revision 488639f1ff808d1d3d0ba301aef8c11461451ec5 --output-dir large_artifacts/rule_family_diversity_scaling/models/scale3_trace_lora --max-length 3072 --epochs 3 --lr 1.5e-4 --rank 32 --alpha 64 --dropout 0.05 --grad-accum 8 --save-steps 30 --eval-steps 30

Result:

  • Completed successfully.
  • Output directory: large_artifacts/rule_family_diversity_scaling/models/scale3_trace_lora.
  • Trainable parameters: 59,867,136 (1.9031%).
  • Training steps: 90.
  • Train runtime: 411 seconds.
  • Final train loss: 0.01668.
  • Evaluation loss by epoch on val_base_iid: epoch 1 = 0.004631, epoch 2 = 0.003665, epoch 3 = 0.001845.
  • Checkpoints and adapter weights were written under large_artifacts/, not under the downloadable experiment package.

2026-06-21 Training: scale6_trace_lora

Command:

python scripts/train_repair_lora.py --train experiments/rule_family_diversity_scaling/data/repair_train_scale6.jsonl --eval experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --mode trace --model-id Qwen/Qwen2.5-Coder-3B-Instruct --revision 488639f1ff808d1d3d0ba301aef8c11461451ec5 --output-dir large_artifacts/rule_family_diversity_scaling/models/scale6_trace_lora --max-length 3072 --epochs 3 --lr 1.5e-4 --rank 32 --alpha 64 --dropout 0.05 --grad-accum 8 --save-steps 30 --eval-steps 30

Result:

  • Completed successfully.
  • Output directory: large_artifacts/rule_family_diversity_scaling/models/scale6_trace_lora.
  • Trainable parameters: 59,867,136 (1.9031%).
  • Training steps: 90.
  • Train runtime: 415.4 seconds.
  • Final train loss: 0.02493.
  • Evaluation loss by epoch on val_base_iid: epoch 1 = 0.01205, epoch 2 = 0.01092, epoch 3 = 0.0101.
  • Checkpoints and adapter weights were written under large_artifacts/, not under the downloadable experiment package.

2026-06-21 Training: scale12_trace_lora

Command:

python scripts/train_repair_lora.py --train experiments/rule_family_diversity_scaling/data/repair_train_scale12.jsonl --eval experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --mode trace --model-id Qwen/Qwen2.5-Coder-3B-Instruct --revision 488639f1ff808d1d3d0ba301aef8c11461451ec5 --output-dir large_artifacts/rule_family_diversity_scaling/models/scale12_trace_lora --max-length 3072 --epochs 3 --lr 1.5e-4 --rank 32 --alpha 64 --dropout 0.05 --grad-accum 8 --save-steps 30 --eval-steps 30

Result:

  • Completed successfully.
  • Output directory: large_artifacts/rule_family_diversity_scaling/models/scale12_trace_lora.
  • Trainable parameters: 59,867,136 (1.9031%).
  • Training steps: 90.
  • Train runtime: 393.7 seconds.
  • Final train loss: 0.02588.
  • Evaluation loss by epoch on val_base_iid: epoch 1 = 0.0199, epoch 2 = 0.01371, epoch 3 = 0.01347.
  • Checkpoints and adapter weights were written under large_artifacts/, not under the downloadable experiment package.

2026-06-21 Training: scale12_no_trace_lora

Command:

python scripts/train_repair_lora.py --train experiments/rule_family_diversity_scaling/data/repair_train_scale12.jsonl --eval experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --mode no_trace --model-id Qwen/Qwen2.5-Coder-3B-Instruct --revision 488639f1ff808d1d3d0ba301aef8c11461451ec5 --output-dir large_artifacts/rule_family_diversity_scaling/models/scale12_no_trace_lora --max-length 3072 --epochs 3 --lr 1.5e-4 --rank 32 --alpha 64 --dropout 0.05 --grad-accum 8 --save-steps 30 --eval-steps 30

Result:

  • Completed successfully.
  • Output directory: large_artifacts/rule_family_diversity_scaling/models/scale12_no_trace_lora.
  • Trainable parameters: 59,867,136 (1.9031%).
  • Training steps: 90.
  • Train runtime: 391 seconds.
  • Final train loss: 0.2446.
  • Evaluation loss by epoch on val_base_iid: epoch 1 = 0.2427, epoch 2 = 0.2351, epoch 3 = 0.2393.
  • Checkpoints and adapter weights were written under large_artifacts/, not under the downloadable experiment package.

2026-06-21 Training: scale12_shuffled_trace_lora

Command:

python scripts/train_repair_lora.py --train experiments/rule_family_diversity_scaling/data/repair_train_scale12.jsonl --eval experiments/rule_family_diversity_scaling/data/repair_val_base_iid.jsonl --mode trace --shuffle-traces --model-id Qwen/Qwen2.5-Coder-3B-Instruct --revision 488639f1ff808d1d3d0ba301aef8c11461451ec5 --output-dir large_artifacts/rule_family_diversity_scaling/models/scale12_shuffled_trace_lora --max-length 3072 --epochs 3 --lr 1.5e-4 --rank 32 --alpha 64 --dropout 0.05 --grad-accum 8 --save-steps 30 --eval-steps 30

Result:

  • Completed successfully.
  • Output directory: large_artifacts/rule_family_diversity_scaling/models/scale12_shuffled_trace_lora.
  • Trainable parameters: 59,867,136 (1.9031%).
  • Training steps: 90.
  • Train runtime: 394.4 seconds.
  • Final train loss: 0.2452.
  • Evaluation loss by epoch on val_base_iid: epoch 1 = 0.2418, epoch 2 = 0.2307, epoch 3 = 0.2331.
  • Checkpoints and adapter weights were written under large_artifacts/, not under the downloadable experiment package.

2026-06-21 Final Evaluation Suite

Command:

python experiments/rule_family_diversity_scaling/scripts/run_final_evaluations.py --force

Evaluation protocol:

  • Deterministic generation with max_new_tokens=256.
  • repair@1 requires both visible and hidden tests to pass.
  • Full splits were evaluated: 36 base-IID records, 36 format-holdout records, and 48 held-out rule-family records.
  • Final outputs were written to experiments/rule_family_diversity_scaling/reports/final/.
  • The final suite produced 18 core result JSONs, 6 ablation result JSONs, and final_evaluation_jobs.json.

Core repair@1 results:

ConditionBase IIDFormat HoldoutRule Holdout
Frozen trace0/360/360/48
scale3 trace34/3618/360/48
scale6 trace28/3619/362/48
scale12 trace31/3616/3614/48
scale12 no-trace train/eval0/360/361/48
scale12 shuffled-trace train, real trace eval0/360/361/48

Scale12 trace adapter prompt ablations:

Prompt conditionBase IIDFormat HoldoutRule Holdout
Real trace31/3616/3614/48
No trace0/360/360/48
Shuffled trace0/360/362/48

Held-out family detail for scale12_trace:

  • parity_offset_holdout: 0/12.
  • quadratic_shift_holdout: 3/12.
  • sorted_join_holdout: 11/12.
  • tuple_max_holdout: 0/12.

Interpretation:

  • Increasing trace-training diversity from 3 to 12 rule families improved held-out rule-family repair from 0/48 to 14/48 under the same 240-record training budget.
  • The transfer gain was not uniform across held-out families; it was concentrated in sorted_join_holdout and, to a smaller extent, quadratic_shift_holdout.
  • Valid trace evidence was necessary for the observed transfer: no-trace training, shuffled-trace training, no-trace prompting, and shuffled-trace prompting all scored at or near zero on the same held-out split.
  • The broadest diversity condition did not dominate every split: scale3_trace was best on base-IID and scale6_trace was best on format holdout.

2026-06-21 Report Generation

Command:

python experiments/rule_family_diversity_scaling/scripts/make_report.py

Generated compact artifacts:

Packaging checks:

2026-06-21 Final Verification

Verification commands checked:

  • Final evaluation manifest: 24 jobs, 24 completed.
  • Final result JSONs: 18 core JSON files and 6 ablation JSON files.
  • Generated reports, CSVs, and figures are present.
  • No __pycache__ or .ipynb_checkpoints directories remain in the compact package.
  • No active train_repair_lora.py, eval_diversity.py, or run_final_evaluations.py processes remain.
  • No model weight/checkpoint files or files larger than 50 MB were found under experiments/rule_family_diversity_scaling/.
  • No references to earlier experiment directory names were found under experiments/rule_family_diversity_scaling/.

Final package sizes:

Conclusion:

  • The experiment is complete and packaged with small artifacts separated from adapters/checkpoints.

Figures 3

diversity scale curve
diversity scale curve · figures/
final repair by condition split
final repair by condition split · figures/
scale12 trace ablation
scale12 trace ablation · figures/

Data files 4

Result tables and metrics copied from the experiment folder — preview inline or open the raw file.

Reproduce

Runnable scripts exist in the experiment folder, but the exact invocation was not written down.

Browse the experiment folder on GitHub ↗