Research log Small Model Experimentation
GitHub

Qwen Candidate-Conditioned Trace Verifier

It couldn't tell working fixes from broken ones

The one idea you need

Picture a program that might have a bug, plus 64 suggested rewrites, each with a receipt showing exactly what it did when run. The test: can a small model read those receipts and reliably pick the rewrite that actually works?

The question

If you show a small model each candidate fix for a program plus what it actually did when run, can it reliably pick the one that works?

What we found

No. Doing nothing already solved about 44% of tasks, and always choosing a correct candidate could reach 90%. Yet no trained picker captured any of that headroom; the best merely tied doing nothing. Left unchecked, the model rewrote almost every program, including ones already correct, breaking up to 97% and crashing accuracy to about 1%.

Why it matters

A model reading candidate code and its run trace still can't score which fix is correct. Before wiring a model fix-picker into a repair loop, gate it hard: unchecked, it breaks far more code than it repairs.

Doing nothing vs. an ideal picker44% → 90%tasks solved with no repair versus always choosing a correct candidate; a realistic shortlist tops out at 75%
Repair headroom the trained pickers capturednone of itthe reachable improvement the learned selectors recovered — the best only tied doing nothing
Correct programs wrecked when uncheckedup to 97%already-correct programs the unrestrained model overwrote with wrong fixes
Accuracy when the model edited freely44% → about 1%collapse once the model was allowed to swap in its chosen fixes
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Summary
    2. Setup
    3. Candidate Coverage
    4. Standard L24 Gate
    5. Split Results
    6. Held-Out Source Readout
    7. Training Dynamics
    8. Interpretation
    9. Artifacts
  4. Experiment log
  5. Figures
  6. Data files
  7. Reproduce
  8. Related

Results at a glance 7

No trained picker beats leaving the program alone

How to read

Each bar is accuracy (taller is better) for one way of choosing a fix: doing nothing, the best trained picker, two free-editing pickers, then two cheat pickers that already know the right answer.

0%25%50%75%100%no repair (base)no repair (base)44.4%best non-oracle selector (tied)best non-oracle selector (tied)44.4%Qwen ranking head (ungated)Qwen ranking head (ungated)6.9%frozen Qwen (ungated)frozen Qwen (ungated)1.4%oracle over shortlistoracle over shortlist75%oracle over full pooloracle over full pool90.3%

Takeaway → The best trained picker sits exactly level with doing nothing, the free-editing pickers collapse to the floor, and only the cheat pickers rise far above.

Data table
selectoraccuracy
no repair (base)44.4%
best non-oracle selector (tied)44.4%
Qwen ranking head (ungated)6.9%
frozen Qwen (ungated)1.4%
oracle over shortlist75%
oracle over full pool90.3%

Numbers from report table (Standard L24 Gate, reports/qwen_candidate_conditioned_trace_verifier_report.md)

Technical framing

Standard split: no trained selector beats the no-repair base policy — Oracles show 31-46pp of reachable repair headroom, but every deployable selector ties base at best; ungated Qwen selectors collapse.

A safety fallback stops the damage but adds no gains

How to read

For each picker variant, one bar is accuracy (taller better) and one is how often it broke a working program (shorter better). Each pair shows a free-editing version beside a fallback version that keeps the original when unsure.

0%25%50%75%100%frozen Qwenfrozen Qwen1.4%96.9%frozen Qwen + gatefrozen Qwen + gate44.4%0%Qwen rankQwen rank6.9%87.5%Qwen rank + gateQwen rank + gate41.7%6.2%Qwen echoQwen echo7.6%85.9%Qwen echo + gateQwen echo + gate44.4%0%

Takeaway → Free-editing versions show near-maxed breakage bars; the fallback versions zero out damage but their accuracy only climbs back to the do-nothing level, never past it.

Data table
Qwen selector variantaccuracydamage rate (broke a correct base program)
frozen Qwen1.4%96.9%
frozen Qwen + gate44.4%0%
Qwen rank6.9%87.5%
Qwen rank + gate41.7%6.2%
Qwen echo7.6%85.9%
Qwen echo + gate44.4%0%

Numbers from report table (Standard L24 Gate, reports/qwen_candidate_conditioned_trace_verifier_report.md)

Technical framing

Validation gating stops the damage but recovers no gains (standard split) — Ungated Qwen selectors over-edit and break ~86-97% of correct base programs; the base-fallback gate removes the damage only by barely editing.

A working fix sits in the pile on every test set

How to read

Grouped bars per test set: doing nothing, a cheat picker limited to the shortlist, and a cheat picker over the full pile. Taller cheat bars mean more available improvement. Higher is better.

0%25%50%75%100%standardstandard44.4%75%90.3%held-out sourceheld-out source37.5%65.3%84.7%pairedpaired62.5%81.9%94.4%paired held-outpaired held-out38.9%65.3%88.9%paraphraseparaphrase84.7%94.4%98.6%

Takeaway → On every test set the cheat-picker bars tower over doing-nothing, proving correct fixes are present and the problem is choosing them, not lacking them.

Data table
evaluation split (L24)no repair (base)oracle over shortlistoracle over full pool
standard44.4%75%90.3%
held-out source37.5%65.3%84.7%
paired62.5%81.9%94.4%
paired held-out38.9%65.3%88.9%
paraphrase84.7%94.4%98.6%

Numbers from report table (Candidate Coverage, reports/qwen_candidate_conditioned_trace_verifier_report.md)

Technical framing

Repair headroom exists on every evaluation split — The candidate pool contains correct repairs on every split (full-pool oracle 14-50pp above base), so the failure is selection, not coverage.

Free-editing pickers rewrite almost every program

How to read

Per approach, one bar is how often it changed the original program and one is how often that change broke a working one. Both lower is safer. Cheat pickers and fallback variants sit low; free-editing variants sit high.

0%25%50%75%100%basebase0%0%oracle_fulloracle_full45.8%0%oracle_shortlistoracle_shortlist30.6%0%qwen_rankqwen_rank92.4%87.5%qwen_rank_gatedqwen_rank_gated10.4%6.2%qwen_echoqwen_echo92.4%85.9%qwen_echo_gatedqwen_echo_gated3.5%0%zero_qwenzero_qwen97.2%96.9%qwen_shuffledqwen_shuffled97.9%96.9%qwen_trace_corruptqwen_trace_corrupt97.9%98.4%

Takeaway → Free-editing bars nearly max out on both measures — they touch almost everything and wreck most working programs — unlike the cheat pickers, which edit only where a fix helps.

Data table
Selector armChanged base programDamaged a correct program
base0%0%
oracle_full45.8%0%
oracle_shortlist30.6%0%
qwen_rank92.4%87.5%
qwen_rank_gated10.4%6.2%
qwen_echo92.4%85.9%
qwen_echo_gated3.5%0%
zero_qwen97.2%96.9%
qwen_shuffled97.9%96.9%
qwen_trace_corrupt97.9%98.4%

Numbers from reports/qwen_candidate_conditioned_trace_verifier_report.md, Standard L24 Gate table

Technical framing

Ungated Qwen selectors rewrite almost everything on the standard split — Ungated Qwen arms edit ~92-98% of groups and damage most correct programs; oracles edit only where a repair exists.

Genuine fix-readers end up no better than scrambled controls

How to read

Bars show each training approach's final usefulness score, one bar per repeat run; higher is better. Simple baselines sit high; the real fix-reading models sit low, near controls fed scrambled labels or corrupted run traces.

-1-0.500.51feature_mlpfeature_mlp0.750.75trace_transformertrace_transformer0.750.75qwen_prompt_onlyqwen_prompt_only0.750.75qwen_rankqwen_rank-0.5-0.583qwen_echoqwen_echo-0.5-0.583qwen_shuffledqwen_shuffled-0.667-0.75qwen_candidate_onlyqwen_candidate_only-0.667-0.75qwen_trace_corruptqwen_trace_corrupt-0.75-0.75

Takeaway → The real fix-reading bars land down near the deliberately-broken control bars on both runs, showing they learned nothing the run traces should have provided.

Data table
Training armTraining seed 101Training seed 202
feature_mlp0.750.75
trace_transformer0.750.75
qwen_prompt_only0.750.75
qwen_rank-0.5-0.583
qwen_echo-0.5-0.583
qwen_shuffled-0.667-0.75
qwen_candidate_only-0.667-0.75
qwen_trace_corrupt-0.75-0.75

Numbers from reports/qwen_candidate_conditioned_trace_verifier_report.md, Training Dynamics table

Technical framing

Trace corruption and label shuffling barely change the failure — Real candidate-reading Qwen heads end training near the shuffled-label and corrupted-trace controls, on both seeds.

How often the untouched program is already right swings by data batch

How to read

Grouped bars show how often the untouched program is already correct, split by test set. Each colored series is one batch of source problems; higher just means fewer things left to fix.

0%25%50%75%100%heldout_L24heldout_L2425%8.3%79.2%paired_L24paired_L2437.5%58.3%91.7%paired_heldout_L24paired_heldout_L2416.7%29.2%70.8%paraphrase_L24paraphrase_L2475%79.2%100%standard_L24standard_L240%41.7%91.7%

Takeaway → One batch sits near the top on every test set while another drops to zero, so the room for repair concentrates in particular batches of problems.

Data table
Evaluation splitSource seed 123Source seed 456Source seed 789
heldout_L2425%8.3%79.2%
paired_L2437.5%58.3%91.7%
paired_heldout_L2416.7%29.2%70.8%
paraphrase_L2475%79.2%100%
standard_L240%41.7%91.7%

Numbers from reports/candidate_summary.csv

Technical framing

Base-policy accuracy swings wildly across source seeds — Seed 789 is near ceiling while seed 123 hits 0% on standard, so repair headroom concentrates in specific source seeds.

On unfamiliar problems, the fallback is all that prevents collapse

How to read

Bars show accuracy on a batch of problems the model never trained on; taller is better. They span doing nothing, a cheat picker, and free-editing versus fallback versions of each trained picker.

0%25%50%75%100%basebase91.7%oracle_fulloracle_full95.8%zero_qwenzero_qwen0%zero_qwen_gatedzero_qwen_gated91.7%qwen_rankqwen_rank8.3%qwen_rank_gatedqwen_rank_gated87.5%qwen_echoqwen_echo12.5%qwen_echo_gatedqwen_echo_gated91.7%

Takeaway → With doing-nothing already near the top, the free-editing bars crash to the floor while the fallback bars climb back near do-nothing but never pass it.

Data table
Selector armAccuracy (training seed 101; frozen arms seed -1)
base91.7%
oracle_full95.8%
zero_qwen0%
zero_qwen_gated91.7%
qwen_rank8.3%
qwen_rank_gated87.5%
qwen_echo12.5%
qwen_echo_gated91.7%

Numbers from reports/qwen_candidate_conditioned_trace_verifier_report.md, Held-Out Source Readout table

Technical framing

On the held-out source, gating is the only thing standing between Qwen and collapse — With base already at 91.7%, ungated Qwen selectors fall to 0-12.5%; gated variants recover 87.5-91.7% but never beat base.

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

On standard_L24, no non-oracle selector improved over the no-repair base policy: base was 44.4%, the best tied selector accuracy was 44.4% (feature_mlp, qwen_echo_gated, trace_transformer, zero_qwen_gated), deployable-shortlist oracle accuracy was 75.0%, and full-pool oracle accuracy was 90.3%. Ungated candidate-conditioned Qwen selectors usually over-edited and damaged correct base programs; validation-gated variants avoided most damage by falling back to the base candidate, but did not recover the reachable repair gap.

Overview

Standalone experiment for testing whether Qwen can select executable repair candidates by reading the prompt, candidate program, and candidate execution trace.

Large embeddings and checkpoints live outside this directory:

/workspace/large_artifacts/qwen_candidate_conditioned_trace_verifier/

Reports

  • Markdown: reports/qwen_candidate_conditioned_trace_verifier_report.md
  • HTML: reports/qwen_candidate_conditioned_trace_verifier_report.html
  • Figures: reports/figures/

Report

Rendered from reports/qwen_candidate_conditioned_trace_verifier_report.md

Summary

This standalone experiment tests whether a Qwen reader can score concrete executable repair candidates. Each candidate contains a program and execution trace. Learned selectors are trained only from offline labels; at inference they do not receive the target answer or target state.

On standard_L24, no non-oracle selector improved over the no-repair base policy: base was 44.4%, the best tied selector accuracy was 44.4% (feature_mlp, qwen_echo_gated, trace_transformer, zero_qwen_gated), deployable-shortlist oracle accuracy was 75.0%, and full-pool oracle accuracy was 90.3%.

Ungated candidate-conditioned Qwen selectors usually over-edited and damaged correct base programs; validation-gated variants avoided most damage by falling back to the base candidate, but did not recover the reachable repair gap.

Setup

  • Base reader: Qwen/Qwen3-4B.

  • Candidate shortlist size: 64.

  • Held-out source seed: 789.

  • Train groups per non-held-out source: 32; validation groups per non-held-out source: 12; eval groups per source/split: 24.

Selectors:

  • base: no repair.

  • oracle_full: best answer-correct candidate in the full candidate pool.

  • oracle_shortlist: best answer-correct candidate in the deployable shortlist.

  • zero_qwen: frozen Qwen yes/no score with no training.

  • zero_qwen_gated: frozen Qwen score with validation-tuned base fallback.

  • feature_mlp: feature-only learned baseline.

  • trace_transformer: small trace-only learned baseline.

  • qwen_rank: Qwen embedding plus groupwise ranking head.

  • qwen_rank_gated: Qwen ranking head with validation-tuned base fallback.

  • qwen_echo: same ranking head with auxiliary candidate trace prediction.

  • qwen_echo_gated: ECHO-ablation head with validation-tuned base fallback.

  • Control arms: shuffled labels, prompt-only, candidate-only, and trace-corrupted candidate reading.

Candidate Coverage

splitgroupsavg_full_candidatesavg_shortlistbase_accuracyshortlist_oracle_accuracyfull_oracle_accuracyshortlist_oracle_capture
heldout_L24721776437.5%65.3%84.7%77.0%
paired_L24721776462.5%81.9%94.4%86.8%
paired_heldout_L24721776438.9%65.3%88.9%73.4%
paraphrase_L24721776484.7%94.4%98.6%95.8%
standard_L24721776444.4%75.0%90.3%83.1%
train_mixed_L24641776481.2%96.9%100.0%96.9%
val_mixed_L24241776475.0%83.3%91.7%90.9%

Coverage by source seed

Standard L24 Gate

armmean_accuracymean_gap_capturemean_changedmean_damagemean_recovery
base44.4%0.0%000
feature_mlp44.4%0.0%000
oracle_full90.3%100.0%0.45800.825
oracle_shortlist75.0%66.7%0.30600.55
qwen_candidate_only3.5%-89.4%0.9930.9220
qwen_echo7.6%-80.3%0.9240.8590.025
qwen_echo_gated44.4%0.0%0.03500
qwen_prompt_only44.4%0.0%000
qwen_rank6.9%-81.8%0.9240.8750.025
qwen_rank_gated41.7%-6.1%0.1040.0620
qwen_shuffled2.1%-92.4%0.9790.9690.013
qwen_trace_corrupt1.4%-93.9%0.9790.9840.013
trace_transformer44.4%0.0%000
zero_qwen1.4%-93.9%0.9720.9690
zero_qwen_gated44.4%0.0%000

Standard accuracy

Standard gap capture

Split Results

splitarmseedaccuracygap_capturechanged_fractiondamage_raterecovery_rate
heldout_L24base-137.5%0.0%0.0%0.0%0.0%
paired_L24base-162.5%0.0%0.0%0.0%0.0%
paired_heldout_L24base-138.9%0.0%0.0%0.0%0.0%
paraphrase_L24base-184.7%0.0%0.0%0.0%0.0%
standard_L24base-144.4%0.0%0.0%0.0%0.0%
heldout_L24oracle_full-184.7%100.0%47.2%0.0%75.6%
paired_L24oracle_full-194.4%100.0%31.9%0.0%85.2%
paired_heldout_L24oracle_full-188.9%100.0%50.0%0.0%81.8%
paraphrase_L24oracle_full-198.6%100.0%13.9%0.0%90.9%
standard_L24oracle_full-190.3%100.0%45.8%0.0%82.5%
heldout_L24oracle_shortlist-165.3%58.8%27.8%0.0%44.4%
paired_L24oracle_shortlist-181.9%60.9%19.4%0.0%51.9%
paired_heldout_L24oracle_shortlist-165.3%52.8%26.4%0.0%43.2%
paraphrase_L24oracle_shortlist-194.4%70.0%9.7%0.0%63.6%
standard_L24oracle_shortlist-175.0%66.7%30.6%0.0%55.0%
heldout_L24zero_qwen-134.7%-5.9%4.2%7.4%0.0%
paired_L24zero_qwen-11.4%-191.3%98.6%100.0%3.7%
paired_heldout_L24zero_qwen-115.3%-47.2%54.2%60.7%0.0%
paraphrase_L24zero_qwen-112.5%-520.0%87.5%85.2%0.0%
standard_L24zero_qwen-11.4%-93.9%97.2%96.9%0.0%
heldout_L24zero_qwen_gated-137.5%0.0%0.0%0.0%0.0%
paired_L24zero_qwen_gated-161.1%-4.3%1.4%2.2%0.0%
paired_heldout_L24zero_qwen_gated-138.9%0.0%0.0%0.0%0.0%
paraphrase_L24zero_qwen_gated-172.2%-90.0%12.5%14.8%0.0%
standard_L24zero_qwen_gated-144.4%0.0%0.0%0.0%0.0%
heldout_L24feature_mlp10137.5%0.0%0.0%0.0%0.0%
paired_L24feature_mlp10162.5%0.0%0.0%0.0%0.0%
paired_heldout_L24feature_mlp10138.9%0.0%0.0%0.0%0.0%
paraphrase_L24feature_mlp10184.7%0.0%0.0%0.0%0.0%
standard_L24feature_mlp10144.4%0.0%0.0%0.0%0.0%
heldout_L24trace_transformer10137.5%0.0%0.0%0.0%0.0%
paired_L24trace_transformer10162.5%0.0%0.0%0.0%0.0%
paired_heldout_L24trace_transformer10138.9%0.0%0.0%0.0%0.0%
paraphrase_L24trace_transformer10184.7%0.0%0.0%0.0%0.0%
standard_L24trace_transformer10144.4%0.0%0.0%0.0%0.0%
heldout_L24qwen_rank10131.9%-11.8%13.9%14.8%0.0%
paired_L24qwen_rank10116.7%-143.5%86.1%77.8%7.4%
paired_heldout_L24qwen_rank10119.4%-38.9%61.1%57.1%4.5%
paraphrase_L24qwen_rank1016.9%-560.0%94.4%93.4%9.1%
standard_L24qwen_rank1016.9%-81.8%91.7%87.5%2.5%
heldout_L24qwen_rank_gated10137.5%0.0%0.0%0.0%0.0%
paired_L24qwen_rank_gated10159.7%-8.7%9.7%6.7%3.7%
paired_heldout_L24qwen_rank_gated10138.9%0.0%0.0%0.0%0.0%
paraphrase_L24qwen_rank_gated10173.6%-80.0%13.9%14.8%9.1%
standard_L24qwen_rank_gated10141.7%-6.1%9.7%6.2%0.0%
heldout_L24qwen_echo10131.9%-11.8%15.3%14.8%0.0%
paired_L24qwen_echo10116.7%-143.5%86.1%77.8%7.4%
paired_heldout_L24qwen_echo10122.2%-33.3%56.9%50.0%4.5%
paraphrase_L24qwen_echo1015.6%-570.0%94.4%93.4%0.0%
standard_L24qwen_echo1019.7%-75.8%90.3%81.2%2.5%
heldout_L24qwen_echo_gated10137.5%0.0%0.0%0.0%0.0%
paired_L24qwen_echo_gated10162.5%0.0%1.4%0.0%0.0%
paired_heldout_L24qwen_echo_gated10138.9%0.0%0.0%0.0%0.0%
paraphrase_L24qwen_echo_gated10180.6%-30.0%4.2%4.9%0.0%
standard_L24qwen_echo_gated10144.4%0.0%6.9%0.0%0.0%
heldout_L24feature_mlp20237.5%0.0%0.0%0.0%0.0%
paired_L24feature_mlp20262.5%0.0%0.0%0.0%0.0%
paired_heldout_L24feature_mlp20238.9%0.0%0.0%0.0%0.0%
paraphrase_L24feature_mlp20284.7%0.0%0.0%0.0%0.0%
standard_L24feature_mlp20244.4%0.0%0.0%0.0%0.0%
heldout_L24trace_transformer20237.5%0.0%0.0%0.0%0.0%
paired_L24trace_transformer20262.5%0.0%0.0%0.0%0.0%
paired_heldout_L24trace_transformer20238.9%0.0%0.0%0.0%0.0%
paraphrase_L24trace_transformer20284.7%0.0%0.0%0.0%0.0%
standard_L24trace_transformer20244.4%0.0%0.0%0.0%0.0%
heldout_L24qwen_rank20231.9%-11.8%15.3%14.8%0.0%
paired_L24qwen_rank20212.5%-156.5%88.9%84.4%7.4%
paired_heldout_L24qwen_rank20219.4%-38.9%61.1%53.6%2.3%
paraphrase_L24qwen_rank2024.2%-580.0%95.8%95.1%0.0%
standard_L24qwen_rank2026.9%-81.8%93.1%87.5%2.5%
heldout_L24qwen_rank_gated20237.5%0.0%0.0%0.0%0.0%
paired_L24qwen_rank_gated20258.3%-13.0%9.7%6.7%0.0%
paired_heldout_L24qwen_rank_gated20238.9%0.0%1.4%0.0%0.0%
paraphrase_L24qwen_rank_gated20275.0%-70.0%13.9%11.5%0.0%
standard_L24qwen_rank_gated20241.7%-6.1%11.1%6.2%0.0%
heldout_L24qwen_echo20233.3%-8.8%11.1%11.1%0.0%
paired_L24qwen_echo20215.3%-147.8%87.5%80.0%7.4%
paired_heldout_L24qwen_echo20216.7%-44.4%62.5%60.7%2.3%
paraphrase_L24qwen_echo2026.9%-560.0%93.1%91.8%0.0%
standard_L24qwen_echo2025.6%-84.8%94.4%90.6%2.5%

Accuracy by split

Held-Out Source Readout

armseedaccuracybase_accuracyoracle_accuracygap_capturechanged_fractiondamage_raterecovery_rate
base-191.7%91.7%95.8%0.0%0.0%0.0%0.0%
oracle_full-195.8%91.7%95.8%100.0%4.2%0.0%50.0%
oracle_shortlist-195.8%91.7%95.8%100.0%4.2%0.0%50.0%
zero_qwen-10.0%91.7%95.8%-2200.0%100.0%100.0%0.0%
zero_qwen_gated-191.7%91.7%95.8%0.0%0.0%0.0%0.0%
feature_mlp10191.7%91.7%95.8%0.0%0.0%0.0%0.0%
trace_transformer10191.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_rank1018.3%91.7%95.8%-2000.0%91.7%90.9%0.0%
qwen_rank_gated10187.5%91.7%95.8%-100.0%4.2%4.5%0.0%
qwen_echo10112.5%91.7%95.8%-1900.0%87.5%86.4%0.0%
qwen_echo_gated10191.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_shuffled1014.2%91.7%95.8%-2100.0%95.8%95.5%0.0%
qwen_prompt_only10191.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_candidate_only1014.2%91.7%95.8%-2100.0%100.0%95.5%0.0%
qwen_trace_corrupt1014.2%91.7%95.8%-2100.0%100.0%95.5%0.0%
feature_mlp20291.7%91.7%95.8%0.0%0.0%0.0%0.0%
trace_transformer20291.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_rank2028.3%91.7%95.8%-2000.0%91.7%90.9%0.0%
qwen_rank_gated20287.5%91.7%95.8%-100.0%4.2%4.5%0.0%
qwen_echo2028.3%91.7%95.8%-2000.0%91.7%90.9%0.0%
qwen_echo_gated20291.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_shuffled2024.2%91.7%95.8%-2100.0%95.8%95.5%0.0%
qwen_prompt_only20291.7%91.7%95.8%0.0%0.0%0.0%0.0%
qwen_candidate_only2028.3%91.7%95.8%-2000.0%100.0%90.9%0.0%
qwen_trace_corrupt2020.0%91.7%95.8%-2200.0%100.0%100.0%0.0%

Training Dynamics

armseedepochtrain_lossval_accuracyval_damage_rateval_recovery_rateval_utility
qwen_trace_corrupt10183.9350.0%100.0%0.0%-0.75
qwen_candidate_only10183.5594.2%94.4%0.0%-0.667
qwen_shuffled10183.8334.2%94.4%0.0%-0.667
qwen_prompt_only10183.72875.0%0.0%0.0%0.75
trace_transformer10181.43575.0%0.0%0.0%0.75
feature_mlp10180.06275.0%0.0%0.0%0.75
qwen_rank10183.27312.5%88.9%16.7%-0.5
qwen_echo10184.68412.5%88.9%16.7%-0.5
qwen_echo20284.6338.3%88.9%0.0%-0.583
qwen_rank20283.2958.3%88.9%0.0%-0.583
feature_mlp20280.06775.0%0.0%0.0%0.75
trace_transformer20281.37275.0%0.0%0.0%0.75
qwen_prompt_only20283.67975.0%0.0%0.0%0.75
qwen_shuffled20283.6730.0%100.0%0.0%-0.75
qwen_candidate_only20283.7140.0%100.0%0.0%-0.75
qwen_trace_corrupt20283.5620.0%100.0%0.0%-0.75

Interpretation

The decisive measurement is not raw accuracy alone. The report separates candidate coverage from selector capture, because a selector cannot choose a correct program that is absent from its candidate shortlist. A useful selector should capture a stable fraction of the available oracle gap, make nontrivial repairs, and avoid damaging already-correct base programs.

Artifacts

Experiment log 8

Show the running log (8 entries, 2026-06-25)

Objective

Test whether candidate-conditioned Qwen reading can select correct executable repair candidates from a fixed candidate pool without using the target answer or target state at inference.

Design Commitments

  • Fresh experiment directory: experiments/qwen_candidate_conditioned_trace_verifier/.
  • Large artifacts separated under: large_artifacts/qwen_candidate_conditioned_trace_verifier/.
  • Candidate pool and prompt reconstruction are deterministic.
  • Main report is standalone and does not require external experiment context.
  • Raw accuracy is reported, but source-normalized oracle-gap capture is the primary selector-quality metric.
  • Include no-repair, oracle, feature, trace-only, frozen Qwen, trained Qwen, ECHO-ablation, shuffled-label, prompt-only, candidate-only, trace-corrupted, and held-out-source diagnostics.

Iterations

2026-06-25 Scaffold

Created the standalone directory, large-artifact directories, README, and experiment log.

2026-06-25 Smoke Iteration 1

Ran the full smoke path with the initial text serialization. It completed, but inspection showed that full prompt-plus-candidate examples were about 955 Qwen tokens, so the configured reader context would have truncated the verifier question and candidate tail.

Patched serialization before the main run:

  • Strip internal register placeholders from the task text.
  • Compact the natural task to semicolon-separated operations.
  • Compact candidate traces to short step:op=value lines.

The corrected full prompt-plus-candidate serialization is about 367 tokens on a length-24 example, fitting the configured reader context without cutting off the verdict question.

2026-06-25 Smoke Iteration 2

Ran smoke_candidate_conditioned_qwen_trace_verifier_v2 with compact serialization and all controls enabled. Cache loading, prompt reconstruction, Qwen embedding, feature baseline, trace baseline, Qwen ranking head, ECHO-ablation, shuffled-label control, prompt-only, candidate-only, trace-corrupted controls, metrics, charts, Markdown report, and HTML report all completed.

2026-06-25 Main Iteration 1

Ran main_candidate_conditioned_qwen_trace_verifier_v1 with three source seeds, two critic seeds, shortlist size 64, and full candidate-conditioned Qwen embeddings rebuilt from Qwen/Qwen3-4B.

Important results:

  • Candidate coverage was high. On standard_L24, no repair was 44.4%, deployable-shortlist oracle was 75.0%, and full-pool oracle was 90.3%.
  • Frozen Qwen yes/no scoring was destructive on standard_L24: 1.4% accuracy, 97.2% changed fraction, and 96.9% damage rate.
  • Trained candidate-conditioned Qwen heads also over-edited. qwen_rank reached 6.9%; qwen_echo reached 5.6-9.7%.
  • Feature-only and trace-only baselines selected no repair and therefore tied the 44.4% base accuracy.

This showed that concrete candidate reading did not produce a safe selector in the ungated setup; the dominant failure was high-confidence destructive edits.

2026-06-25 Main Iteration 2

Patched the runner to add validation-tuned base fallback gates for frozen Qwen, qwen_rank, and qwen_echo, plus an --embedding_run_name flag so the second main run could reuse the large Qwen embedding cache without loading the model again.

Ran main_candidate_conditioned_qwen_trace_verifier_v2 using the v1 embedding cache. Runtime was 291.979 seconds and all trained/control heads completed.

Main result:

  • Gating prevented most destructive edits but did not recover the reachable repair gap.
  • On standard_L24, qwen_echo_gated tied the base at 44.4% with 0.0% oracle-gap capture; qwen_rank_gated fell to 41.7%.
  • The validation-tuned gates mostly selected no-op. For qwen_rank_gated and qwen_echo_gated, validation accuracy equaled the base validation accuracy and validation recovery was 0.0%.
  • The main report and HTML report were regenerated from v2 metrics.

Interpretation: the candidate set contains many answer-correct repairs, but the tested Qwen-conditioned selectors did not learn to identify them safely without target leakage. Safe gating converted the method into a conservative no-op policy rather than a useful repair selector.

Figures 4

accuracy by split
accuracy by split · reports/figures/
coverage by source seed
coverage by source seed · reports/figures/
standard accuracy by arm
standard accuracy by arm · reports/figures/
standard gap capture by arm
standard gap capture by arm · reports/figures/

Data files 14

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

Reproduce

This entry is source code or analysis only — there is no separate run to reproduce.

Browse the experiment folder on GitHub ↗