Research log Small Model Experimentation
GitHub

Counterexample-Guided Consistency Projection

Asking row by row beats forcing one rule

The one idea you need

You have four examples of how a column should be reformatted, say dates or phone numbers. Instead of transforming each new row directly, you hunt for one exact formula, invent extra test inputs, and let the model's own answers vote for which formula to trust.

The question

When a small model reformats data messily, can you distill its noisy guesses into one clean, reliable rule that works correctly on every new row?

What we found

No. Distilling the model's messy guesses into one reliable formula solved only 20% of tasks completely, versus 50% when it simply transformed each row directly, a 30-point drop. For 29 of the 40 tasks no formula even fit the four examples, and the model's own guesses picked winners no better than randomly shuffled labels.

Why it matters

When you need a small model to reformat data reliably, don't reverse-engineer one formula from a few examples: its self-labeled guesses are too noisy to steer the search. Transform each row directly, and reserve a fixed rule only where a valid one provably exists.

Tasks solved completely50% → 20%every new row correct: transforming each row directly versus forcing one fixed rule
Real guesses versus shuffled guesses20% vs 20%tasks solved with the model's real clues versus randomly shuffled ones, no difference
Tasks with no rule that even fit29 of 40roughly 3 in 4 tasks had no valid rule to choose from
Individual rows correct72% → 21%single rows right: direct versus fixed rule
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Question
    2. Setup
    3. Main Result
    4. Interpretation
    5. Diagnostic Findings
    6. Charts
    7. Family Breakdown
    8. Selected Program Examples
    9. Projection-Induced Program Changes
    10. Gated Projection Changes
    11. Files
  4. Experiment log
  5. Figures
  6. Data files
  7. Reproduce
  8. Related

Results at a glance 7

Tasks fully solved: direct answers beat fixed rules

How to read

Each bar is one method; height is the share of tasks solved perfectly, every row correct, so taller is better. The left three answer each row directly; the right three boil the guesses into one fixed rule.

0%20%40%60%direct row-by-rowdirect row-by-row50%gated projectiongated projection50%output majorityoutput majority47.5%probe-guided projectionprobe-guided projection20%shuffled-probe projectionshuffled-probe projection20%train-only selectiontrain-only selection20%

Takeaway → The three direct bars sit near 50% while the three rule bars flatten to 20%, and real guesses tie shuffled ones, so the rule approach threw away 30 points.

Data table
methodfull-task exact
direct row-by-row50%
gated projection50%
output majority47.5%
probe-guided projection20%
shuffled-probe projection20%
train-only selection20%

Numbers from experiments/qwen_counterexample_guided_projection/analysis/summary.csv

Technical framing

Full-task exactness: direct row inference beats probe-guided projection — Probe-guided projection loses 30 points to direct inference, and real probe labels do no better than shuffled labels or train-only selection.

Getting most rows right is not solving the whole task

How to read

For each of five methods, one bar shows the share of individual rows answered correctly and a second shows the share of tasks solved completely; taller is better for both.

0%20%40%60%80%direct row-by-rowdirect row-by-row72.1%50%gated projectiongated projection71.5%50%output majorityoutput majority71.5%47.5%probe-guided projectionprobe-guided projection21.2%20%train-only selectiontrain-only selection21.2%20%

Takeaway → Direct methods get about 72% of rows right but only half of tasks fully right; the rule method collapses to roughly 21% and 20% on both.

Data table
methodrow exactfull-task exact
direct row-by-row72.1%50%
gated projection71.5%50%
output majority71.5%47.5%
probe-guided projection21.2%20%
train-only selection21.2%20%

Numbers from experiments/qwen_counterexample_guided_projection/analysis/summary.csv

Technical framing

Row-level vs strict full-task accuracy by method — Direct methods get ~72% of rows right but only 50% of tasks fully right; projection collapses both because it rarely has a usable candidate.

Most tasks had no usable rule to choose from

How to read

Bars split the 40 tasks by how many valid fixed rules were found: none, at least one, or more than one; a tall left bar means the rule method had little to work with.

0102030zero candidateszero candidates29at least oneat least one11more than onemore than one11

Takeaway → 29 of 40 tasks had zero valid rules, and every one of the 11 that had any had several, so on most tasks there was nothing to pick among.

Data table
train-consistent deterministic candidates per tasktasks
zero candidates29
at least one11
more than one11

Numbers from experiments/qwen_counterexample_guided_projection/analysis/task_details.csv (candidate_count per task; matches report Diagnostic Findings)

Technical framing

Candidate availability was the bottleneck (40 tasks) — 29 of 40 tasks had no train-consistent deterministic candidate at all, so probe labels had nothing to select among.

Fixed rules collapse on the biggest task groups

How to read

Grouped bars for five task types (addresses, cities, dates, numbers, phones) show three methods side by side; height is the share of tasks solved completely, so taller is better.

0%25%50%75%100%0%0%0%Address50%50%0%City56.2%56.2%12.5%DateTime30%20%0%Number100%100%100%Phone

Takeaway → On the two biggest groups, dates and numbers, the rule bars fall to near zero while direct answers hold 56% and 30%.

Data table
Task family (multi-task families)Direct row-by-rowOutput majorityProbe-guided projection
Address0%0%0%
City50%50%0%
DateTime56.2%56.2%12.5%
Number30%20%0%
Phone100%100%100%

Numbers from experiments/qwen_counterexample_guided_projection/analysis/family_summary.csv

Technical framing

Strict full-task exactness by task family — Projection collapses on the two largest families (DateTime, Number) while direct inference keeps 56% and 30% full-task exactness.

Row accuracy across the main task groups

How to read

The same five task types, three methods side by side; height is the share of individual rows answered correctly, so taller is better.

0%25%50%75%100%50%50%0%Address87.5%87.5%25%City70.8%76%12.5%DateTime64.2%56.7%0%Number100%100%100%Phone

Takeaway → The rule method drops to zero on several groups while direct answers stay high; voting among guesses nudges dates up but drags numbers down.

Data table
Task family (multi-task families)Direct row-by-rowOutput majorityProbe-guided projection
Address50%50%0%
City87.5%87.5%25%
DateTime70.8%76%12.5%
Number64.2%56.7%0%
Phone100%100%100%

Numbers from experiments/qwen_counterexample_guided_projection/analysis/family_summary.csv

Technical framing

Row-level accuracy by task family — Majority voting nudges DateTime rows up but hurts Number rows, so it never converts into more fully-solved tasks than direct inference.

Where rules existed, there were often many

How to read

Each bar is one task; height is how many valid fixed rules were found; of the 11 tasks that had any rule at all, 10 are shown.

0100200300400DateTime.000004DateTime.000004400BillingCode.000007BillingCode.000007104DateTime.000104DateTime.00010490FilePath.000001FilePath.00000188Number.000077Number.00007777City.000011City.00001159Language.000002Language.00000253Phone.000011Phone.00001144DateTime.000115DateTime.00011531Name.000028Name.00002824

Takeaway → Counts ranged from about two dozen up to 400, one hitting the cap, but this covered just 11 of 40 tasks while the rest had none.

Data table
Task (10 of 11 tasks with candidates shown)Train-consistent candidates
DateTime.000004400
BillingCode.000007104
DateTime.00010490
FilePath.00000188
Number.00007777
City.00001159
Language.00000253
Phone.00001144
DateTime.00011531
Name.00002824

Numbers from experiments/qwen_counterexample_guided_projection/reports/qwen_counterexample_guided_projection_report.md (Selected Program Examples table)

Technical framing

Train-consistent candidate counts on tasks that had any — Where the grammar covered a task at all, candidates ranged 24-400 (one hit the 400 cap); the other 29 tasks had zero.

The two times the safeguard fired, it never helped

How to read

For the only two tasks where high guess-agreement triggered the safeguard, paired bars compare direct answers against the gated rule; height is the share of rows correct, taller is better.

0%20%40%60%80%City.000011City.00001175%50%DateTime.000115DateTime.0001150%0%

Takeaway → On both tasks the gate locked in a single constant answer; one task got worse and the other stayed at zero, so the safeguard never helped.

Data table
Task where high probe agreement triggered the gateDirect row-by-rowGated projection
City.00001175%50%
DateTime.0001150%0%

Numbers from experiments/qwen_counterexample_guided_projection/reports/qwen_counterexample_guided_projection_report.md (Gated Projection Changes table)

Technical framing

The only two gate-triggered tasks: gating never helped — High probe agreement (87.5% and 100%) selected constant programs; one task got worse at the row level and the other stayed at zero.

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

Can noisy row-level model guesses be converted into a stable task-level deterministic transformation?

Overview

This top-level README was generated during repository normalization because the imported experiment did not include one.

How To Read

Start with the primary report, then inspect data/, reports/, analysis/, src/, and scripts/ as available. This folder remains self-contained; do not move its run data into shared directories.

Summary

Can noisy row-level model guesses be converted into a stable task-level deterministic transformation?

Report

Rendered from reports/qwen_counterexample_guided_projection_report.md

Question

Can noisy row-level model guesses be converted into a stable task-level deterministic transformation?

The experiment generates counterexample-style probe inputs from each task's training examples, labels those probes with a row-level model, and selects among train-consistent deterministic expressions using probe-label agreement plus a small complexity penalty. The selected expression is then evaluated on held-out rows from the same public transformation tasks.

Setup

  • Benchmark root: /workspace/large_artifacts/qwen_counterexample_guided_projection/prose-benchmarks
  • Run: main_qwen_probe_40
  • Tasks: 40
  • Train rows per task: 4
  • Held-out cap per task: 6
  • Generated probes per task: 8
  • Candidate cap per task: 400
  • Probe labels used: 320
  • New probe-label calls during this invocation: no

Main Result

methodtasksrow_exactfull_task_exactmedian_candidatesmedian_probe_agreement
direct_row_by_row4072.1%50.0%0.000.0%
qwen_projection_gated_direct4071.5%50.0%0.000.0%
output_majority4071.5%47.5%0.000.0%
qwen_projection4021.2%20.0%0.000.0%
qwen_projection_random4021.2%20.0%0.000.0%
qwen_projection_shuffled4021.2%20.0%0.000.0%
train_only4021.2%20.0%0.000.0%

Interpretation

The probe-guided projection underperformed direct row inference by 30.0 points. Real and shuffled probe labels were separated by only 0.0 points. Probe-guided and train-only deterministic selection were separated by only 0.0 points.

The primary success condition is not row-level accuracy alone. The goal is to improve strict full-task exactness: every held-out row for a task must be correct under one stable transformation.

Diagnostic Findings

  • Candidate availability was the main bottleneck: 29 of 40 tasks had zero train-consistent deterministic candidates, 11 had at least one, and 11 had more than one.
  • The ungated projection did not improve over train-only selection. This means the probe labels did not rescue the candidate-selection objective on this benchmark slice.
  • The gated projection changed 2 tasks: 0 helped, 2 tied, and 0 hurt relative to direct row inference on strict full-task exactness.
  • The output-majority baseline did not improve over direct row inference, so simple agreement among prompt variants was not enough to stabilize full-task behavior.

Charts

Full-task exact by method

Row versus task accuracy

Candidate availability

Gated decisions

Probe agreement

Family heatmap

Family Breakdown

methodfamilytasksrow_exactfull_task_exact
direct_row_by_rowAddress250.0%0.0%
direct_row_by_rowBillingCode133.3%0.0%
direct_row_by_rowCity287.5%50.0%
direct_row_by_rowColumn1100.0%100.0%
direct_row_by_rowDateTime1670.8%56.2%
direct_row_by_rowFilePath1100.0%100.0%
direct_row_by_rowGender166.7%0.0%
direct_row_by_rowLanguage1100.0%100.0%
direct_row_by_rowName1100.0%100.0%
direct_row_by_rowNumber1064.2%30.0%
direct_row_by_rowPhone2100.0%100.0%
direct_row_by_rowShippingCode133.3%0.0%
direct_row_by_rowUserAgent1100.0%100.0%
output_majorityAddress250.0%0.0%
output_majorityBillingCode10.0%0.0%
output_majorityCity287.5%50.0%
output_majorityColumn1100.0%100.0%
output_majorityDateTime1676.0%56.2%
output_majorityFilePath1100.0%100.0%
output_majorityGender166.7%0.0%
output_majorityLanguage1100.0%100.0%
output_majorityName1100.0%100.0%
output_majorityNumber1056.7%20.0%
output_majorityPhone2100.0%100.0%
output_majorityShippingCode133.3%0.0%
output_majorityUserAgent1100.0%100.0%
qwen_projectionAddress20.0%0.0%
qwen_projectionBillingCode1100.0%100.0%
qwen_projectionCity225.0%0.0%
qwen_projectionColumn10.0%0.0%
qwen_projectionDateTime1612.5%12.5%
qwen_projectionFilePath1100.0%100.0%
qwen_projectionGender10.0%0.0%
qwen_projectionLanguage1100.0%100.0%
qwen_projectionName1100.0%100.0%
qwen_projectionNumber100.0%0.0%
qwen_projectionPhone2100.0%100.0%
qwen_projectionShippingCode10.0%0.0%
qwen_projectionUserAgent10.0%0.0%
qwen_projection_gated_directAddress250.0%0.0%
qwen_projection_gated_directBillingCode133.3%0.0%
qwen_projection_gated_directCity275.0%50.0%
qwen_projection_gated_directColumn1100.0%100.0%
qwen_projection_gated_directDateTime1670.8%56.2%
qwen_projection_gated_directFilePath1100.0%100.0%
qwen_projection_gated_directGender166.7%0.0%
qwen_projection_gated_directLanguage1100.0%100.0%
qwen_projection_gated_directName1100.0%100.0%
qwen_projection_gated_directNumber1064.2%30.0%
qwen_projection_gated_directPhone2100.0%100.0%
qwen_projection_gated_directShippingCode133.3%0.0%
qwen_projection_gated_directUserAgent1100.0%100.0%
qwen_projection_randomAddress20.0%0.0%
qwen_projection_randomBillingCode1100.0%100.0%
qwen_projection_randomCity225.0%0.0%
qwen_projection_randomColumn10.0%0.0%
qwen_projection_randomDateTime1612.5%12.5%
qwen_projection_randomFilePath1100.0%100.0%
qwen_projection_randomGender10.0%0.0%
qwen_projection_randomLanguage1100.0%100.0%
qwen_projection_randomName1100.0%100.0%
qwen_projection_randomNumber100.0%0.0%
qwen_projection_randomPhone2100.0%100.0%
qwen_projection_randomShippingCode10.0%0.0%
qwen_projection_randomUserAgent10.0%0.0%
qwen_projection_shuffledAddress20.0%0.0%
qwen_projection_shuffledBillingCode1100.0%100.0%
qwen_projection_shuffledCity225.0%0.0%
qwen_projection_shuffledColumn10.0%0.0%
qwen_projection_shuffledDateTime1612.5%12.5%
qwen_projection_shuffledFilePath1100.0%100.0%
qwen_projection_shuffledGender10.0%0.0%
qwen_projection_shuffledLanguage1100.0%100.0%
qwen_projection_shuffledName1100.0%100.0%
qwen_projection_shuffledNumber100.0%0.0%
qwen_projection_shuffledPhone2100.0%100.0%
qwen_projection_shuffledShippingCode10.0%0.0%
qwen_projection_shuffledUserAgent10.0%0.0%
train_onlyAddress20.0%0.0%
train_onlyBillingCode1100.0%100.0%
train_onlyCity225.0%0.0%
train_onlyColumn10.0%0.0%
train_onlyDateTime1612.5%12.5%
train_onlyFilePath1100.0%100.0%
train_onlyGender10.0%0.0%
train_onlyLanguage1100.0%100.0%
train_onlyName1100.0%100.0%
train_onlyNumber100.0%0.0%
train_onlyPhone2100.0%100.0%
train_onlyShippingCode10.0%0.0%
train_onlyUserAgent10.0%0.0%

Selected Program Examples

task_idfamilymethodcandidate_countprobe_agreement_rateprogramrow_exactfull_task_exact
Address.000002Addressdirect_row_by_row00.0%33.3%False
Address.000013Addressdirect_row_by_row00.0%66.7%False
BillingCode.000007BillingCodedirect_row_by_row1040.0%33.3%False
City.000010Citydirect_row_by_row00.0%100.0%True
City.000011Citydirect_row_by_row590.0%75.0%False
Column.000001Columndirect_row_by_row00.0%100.0%True
DateTime.000004DateTimedirect_row_by_row4000.0%100.0%True
DateTime.000007DateTimedirect_row_by_row00.0%100.0%True
DateTime.000017DateTimedirect_row_by_row00.0%100.0%True
DateTime.000025DateTimedirect_row_by_row00.0%100.0%True
DateTime.000027DateTimedirect_row_by_row00.0%33.3%False
DateTime.000034DateTimedirect_row_by_row00.0%100.0%True
DateTime.000051DateTimedirect_row_by_row00.0%33.3%False
DateTime.000076DateTimedirect_row_by_row00.0%66.7%False
DateTime.000081DateTimedirect_row_by_row00.0%50.0%False
DateTime.000094DateTimedirect_row_by_row00.0%100.0%True
DateTime.000104DateTimedirect_row_by_row900.0%100.0%True
DateTime.000108DateTimedirect_row_by_row00.0%100.0%True
DateTime.000111DateTimedirect_row_by_row00.0%100.0%True
DateTime.000114DateTimedirect_row_by_row00.0%0.0%False
DateTime.000115DateTimedirect_row_by_row310.0%0.0%False
DateTime.000116DateTimedirect_row_by_row00.0%50.0%False
FilePath.000001FilePathdirect_row_by_row880.0%100.0%True
Gender.000001Genderdirect_row_by_row00.0%66.7%False
Language.000002Languagedirect_row_by_row530.0%100.0%True
Name.000028Namedirect_row_by_row240.0%100.0%True
Number.000008Numberdirect_row_by_row00.0%33.3%False
Number.000015Numberdirect_row_by_row00.0%33.3%False
Number.000016Numberdirect_row_by_row00.0%83.3%False
Number.000022Numberdirect_row_by_row00.0%100.0%True
Number.000028Numberdirect_row_by_row00.0%100.0%True
Number.000029Numberdirect_row_by_row00.0%66.7%False
Number.000043Numberdirect_row_by_row00.0%100.0%True
Number.000049Numberdirect_row_by_row00.0%25.0%False
Number.000075Numberdirect_row_by_row00.0%66.7%False
Number.000077Numberdirect_row_by_row770.0%33.3%False
Phone.000008Phonedirect_row_by_row80.0%100.0%True
Phone.000011Phonedirect_row_by_row440.0%100.0%True
ShippingCode.000008ShippingCodedirect_row_by_row00.0%33.3%False
UserAgent.000003UserAgentdirect_row_by_row00.0%100.0%True
Address.000002Addressoutput_majority00.0%33.3%False
Address.000013Addressoutput_majority00.0%66.7%False
BillingCode.000007BillingCodeoutput_majority1040.0%0.0%False
City.000010Cityoutput_majority00.0%100.0%True
City.000011Cityoutput_majority590.0%75.0%False
Column.000001Columnoutput_majority00.0%100.0%True
DateTime.000004DateTimeoutput_majority4000.0%100.0%True
DateTime.000007DateTimeoutput_majority00.0%100.0%True
DateTime.000017DateTimeoutput_majority00.0%100.0%True
DateTime.000025DateTimeoutput_majority00.0%100.0%True
DateTime.000027DateTimeoutput_majority00.0%66.7%False
DateTime.000034DateTimeoutput_majority00.0%100.0%True
DateTime.000051DateTimeoutput_majority00.0%33.3%False
DateTime.000076DateTimeoutput_majority00.0%66.7%False
DateTime.000081DateTimeoutput_majority00.0%50.0%False
DateTime.000094DateTimeoutput_majority00.0%100.0%True
DateTime.000104DateTimeoutput_majority900.0%100.0%True
DateTime.000108DateTimeoutput_majority00.0%100.0%True
DateTime.000111DateTimeoutput_majority00.0%100.0%True
DateTime.000114DateTimeoutput_majority00.0%50.0%False
DateTime.000115DateTimeoutput_majority310.0%0.0%False
DateTime.000116DateTimeoutput_majority00.0%50.0%False
FilePath.000001FilePathoutput_majority880.0%100.0%True
Gender.000001Genderoutput_majority00.0%66.7%False
Language.000002Languageoutput_majority530.0%100.0%True
Name.000028Nameoutput_majority240.0%100.0%True
Number.000008Numberoutput_majority00.0%16.7%False
Number.000015Numberoutput_majority00.0%50.0%False
Number.000016Numberoutput_majority00.0%50.0%False
Number.000022Numberoutput_majority00.0%33.3%False
Number.000028Numberoutput_majority00.0%100.0%True
Number.000029Numberoutput_majority00.0%66.7%False
Number.000043Numberoutput_majority00.0%100.0%True
Number.000049Numberoutput_majority00.0%0.0%False
Number.000075Numberoutput_majority00.0%83.3%False
Number.000077Numberoutput_majority770.0%66.7%False
Phone.000008Phoneoutput_majority80.0%100.0%True
Phone.000011Phoneoutput_majority440.0%100.0%True
ShippingCode.000008ShippingCodeoutput_majority00.0%33.3%False
UserAgent.000003UserAgentoutput_majority00.0%100.0%True

Projection-Induced Program Changes

task_idprobe_agreement_ratetrain_only_programprojection_programtrain_only_full_task_exactprojection_full_task_exacttrain_only_row_exactprojection_row_exact
BillingCode.00000725.0%affix('',COL0,']')affix('',upper(COL0),']')TrueTrue100.0%100.0%
Language.00000237.5%file_stem(COL1)lower(file_stem(COL1))TrueTrue100.0%100.0%
Name.00002812.5%first_word(COL0)title(first_word(COL0))TrueTrue100.0%100.0%

Gated Projection Changes

task_idprobe_agreement_rateprogramdirect_rowgated_rowdirect_fullgated_full
City.00001187.5%const('New York City')0.750.50FalseFalse
DateTime.000115100.0%const('0-20')0.000.00FalseFalse

Files

  • runs/main_qwen_probe_40/task_details.csv
  • runs/main_qwen_probe_40/row_details.csv
  • runs/main_qwen_probe_40/probe_details.csv
  • runs/main_qwen_probe_40/qwen_probe_labels.csv
  • analysis/summary.csv
  • analysis/family_summary.csv
  • analysis/task_details.csv
  • analysis/row_details.csv
  • analysis/probe_details.csv

Experiment log 9

Show the running log (9 entries, 2026-06-27)

Objective

Test whether a model's row-level transformation guesses can be crystallized into a stable task-level deterministic transducer by generating counterexample-style probe inputs, labeling those probes with the model, and selecting a train-consistent program using a noise-aware objective.

The experiment is standalone: it uses public text-transformation tasks, writes all local outputs under this directory, and stores any large reusable artifacts under /workspace/large_artifacts/qwen_counterexample_guided_projection.

Initial Plan

  1. Build a standalone runner for public text-transformation tasks.
  2. Enumerate deterministic candidate expressions that exactly match training examples.
  3. Generate task-local probe inputs by mutating and recombining training inputs.
  4. Label probes with Qwen row inference.
  5. Select among train-consistent expressions using probe-label agreement plus a complexity penalty.
  6. Compare against train-only deterministic selection, shuffled probe labels, direct Qwen held-out outputs, and simple output-level ensemble/majority baselines when available.
  7. Generate CSVs, charts, a Markdown report, and an HTML report.

Run Notes

2026-06-27 06:48 UTC - Smoke: smoke_no_qwen

  • Created a new standalone experiment directory.
  • Ran a 6-task no-Qwen smoke test to verify benchmark loading, deterministic candidate enumeration, CSV writing, chart generation, Markdown report, and HTML report.
  • Finding: the scaffold worked, but the initial candidate deduplication would have collapsed all train-consistent candidates into one because train-consistent expressions share the same train signature. Fixed that before real probe labeling.

2026-06-27 06:51 UTC - Candidate-class iteration

  • Added token-span extraction and simple affix expressions.
  • Reran a no-Qwen smoke test.
  • Finding: the broader grammar helped some substring-style tasks but many public tasks still had zero train-consistent candidates.

2026-06-27 06:53 UTC - Matched-split diagnostic: diagnostic_no_qwen_matched

  • Aligned the task split with the cached direct row-by-row baseline: seed 20260627, 40 tasks, 4 train rows, up to 6 held-out rows.
  • Train-only deterministic selection reached 20.0% full-task exact and 21.2% row exact.
  • Direct row-by-row baseline reached 50.0% full-task exact and 72.1% row exact.
  • Candidate availability was the main bottleneck: 29/40 tasks had zero train-consistent candidates; 11/40 had at least one candidate.

2026-06-27 06:56 UTC - Qwen probe pilot: pilot_qwen_6

  • Queried Qwen on 24 generated probe rows across 6 tasks.
  • Probe labels were often sensible, especially for date/month and numeric-format tasks.
  • The projection still could not act on most tasks because there were no train-consistent deterministic candidates.
  • Added a high-agreement gated projection arm that falls back to direct row inference unless the selected program strongly agrees with probe labels.
  • Added a concrete-output majority baseline over existing row/batch prompt variants.

2026-06-27 07:01 UTC - Main run: main_qwen_probe_40

  • Queried Qwen for 320 generated probe labels: 40 tasks x 8 probes.
  • Main results:

    • direct_row_by_row: 72.1% row exact, 50.0% full-task exact.
    • qwen_projection: 21.2% row exact, 20.0% full-task exact.
    • train_only: 21.2% row exact, 20.0% full-task exact.
    • qwen_projection_shuffled: 21.2% row exact, 20.0% full-task exact.
    • qwen_projection_gated_direct: 71.5% row exact, 50.0% full-task exact.
    • output_majority: 71.5% row exact, 47.5% full-task exact.
  • Interpretation:

    • Real Qwen probe labels did not separate from shuffled/random probe controls on full-task accuracy.
    • The ungated projection was limited by deterministic hypothesis coverage.
    • The gated projection safely tied direct full-task exact but did not improve it, and it slightly reduced row exact.
    • Simple output-majority across prompt variants also did not improve over direct row-by-row.

2026-06-27 07:05 UTC - Report hardening

  • Added candidate availability diagnostics.
  • Added gated-decision diagnostics.
  • Regenerated the standalone Markdown and HTML reports with six charts.

Figures 6

candidate availability
candidate availability · analysis/figures/
family heatmap
family heatmap · analysis/figures/
full task by method
full task by method · analysis/figures/
gated decisions
gated decisions · analysis/figures/
probe agreement
probe agreement · analysis/figures/
row vs task
row vs task · analysis/figures/

Data files 2

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 ↗