Research log Small Model Experimentation
GitHub

Qwen Active Crystallizer Public Gate

Right on each row, not one reliable rule

The one idea you need

Spreadsheets can watch you fill a few cells and infer one rule for the whole column. Here, thousands of candidate rules fit the shown examples, and a small model's yes/no votes on invented rows had to pick the single rule that holds on every future row.

The question

A model can usually reformat one text example correctly. Can its yes/no votes be distilled into a single fixed rule that reliably handles every future row?

What we found

No. Using the model's votes to choose a rule worked on 25% of tasks — barely above the 22.5% you get from scrambled, meaningless votes, and it never beat the best rule the candidate pool could offer. The model answered individual unseen rows correctly about 80% of the time, yet almost never turned that skill into one dependable rule.

Why it matters

A model being right row by row does not mean you can compile it into one reusable rule. If you need a rule that holds on every input, test whole-task consistency, not sampled rows — the per-row skill collapses.

Model votes picked a fully general rule25% vs 22.5%real model votes versus scrambled votes choosing a winning rule
Correct on a single unseen rowabout 80%the model answering one unseen row at a time
Correct on every row of a task37.5% vs 12.5%model answering directly versus the model-picked rule, all rows must match
Best any candidate rule could reach29.4%ceiling if you always picked the perfect available rule
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Abstract
    2. Method
    3. Run Configuration
    4. Primary Results
    5. Interpretation
    6. Limitations
    7. Artifacts
  4. Experiment log
  5. Figures
  6. Data files
  7. Reproduce
  8. Related

Results at a glance 6

Picking a rule with model votes versus answering row by row

How to read

Each bar is one method; height is the share of tasks solved on unseen rows, taller is better. Bars cover model votes, scrambled votes, plain shortest-rule picking, the best rule available, and the model answering one row directly.

0%20%40%60%80%direct Qwen, one held-out rowdirect Qwen, one held-out row70%candidate oracle ceilingcandidate oracle ceiling25%Qwen probe-label selectionQwen probe-label selection25%shuffled-label controlshuffled-label control22.5%examples-only shortestexamples-only shortest20.8%

Takeaway → The model-vote bar sits level with the scrambled-vote bar and the best-available ceiling, all far below the tall direct-answering bar.

Data table
methodheld-out success rate
direct Qwen, one held-out row70%
candidate oracle ceiling25%
Qwen probe-label selection25%
shuffled-label control22.5%
examples-only shortest20.8%

Numbers from analysis/qwen_summary.csv

Technical framing

Program selection vs direct answering on the Qwen-probe subset (120 tasks) — Qwen probe labels reach the 25% oracle ceiling but add only 2.5pp over shuffled labels, far below Qwen's 70% direct row answering.

Getting each row right versus getting a whole task right

How to read

Three bars on the same forty tasks; height is exact-match rate, taller is better. Left: model answering single rows; middle: model getting every row of a task right; right: one picked rule getting every row right.

0%20%40%60%80%direct Qwen, per-row exactdirect Qwen, per-row exact79.9%direct Qwen, all rows exactdirect Qwen, all rows exact37.5%selected program, all rows exactselected program, all rows exact12.5%

Takeaway → The tall single-row bar collapses when every row must match, and the picked-rule bar collapses furthest, showing consistency is the weak point.

Data table
metricexact-match rate
direct Qwen, per-row exact79.9%
direct Qwen, all rows exact37.5%
selected program, all rows exact12.5%

Numbers from analysis/qwen_direct_full_summary.csv; 12.5% (5/40) from report table

Technical framing

Strict diagnostic: row accuracy vs full-task consistency (same 40 tasks) — Direct Qwen gets 79.9% of rows right but only 37.5% of whole tasks; crystallized programs manage just 12.5% on the same tasks.

Fitting the shown examples is easy; generalizing is not

How to read

Three bars, height is share of tasks, taller is better. Left: tasks where some rule fits the shown examples; middle: tasks where a fitting rule also handles unseen rows; right: picking the shortest fitting rule.

0%25%50%75%100%some program fits train examplessome program fits train examples100%oracle: a train-fitting program is held-out validoracle: a train-fitting program i…29.4%examples-only shortest selectionexamples-only shortest selection22.7%

Takeaway → Every task has a rule fitting the examples, yet only about a third of those rules generalize, so fitting examples is easy but generalizing is not.

Data table
conditiontask rate
some program fits train examples100%
oracle: a train-fitting program is held-out valid29.4%
examples-only shortest selection22.7%

Numbers from analysis/static_summary.csv

Technical framing

Candidate DSL coverage across all static tasks (309 tasks) — Every task has train-fitting programs, but only 29.4% have one that generalizes: the bottleneck is held-out validity, not train fit.

Best-possible rule coverage by kind of task

How to read

Task kinds along the bottom; paired bars show the best rule available versus the plain shortest-rule pick; taller is better. The two largest kinds, date-and-time and numbers, appear first.

0%25%50%75%100%DateTime (106)DateTime (106)11%9%Number (84)Number (84)19%13%Name (28)Name (28)61%43%Phone (16)Phone (16)50%38%ShippingCode (10)ShippingCode (10)80%70%City (9)City (9)11%0%Email (6)Email (6)67%67%BillingCode (6)BillingCode (6)100%67%Address (6)Address (6)17%0%UserAgent (7)UserAgent (7)57%43%

Takeaway → The date-and-time and number bars are lowest despite being the biggest groups, dragging overall rule coverage down below simpler kinds.

Data table
Task family (10 largest, by task count)Candidate oracle coverageExamples-only shortest program
DateTime (106)11%9%
Number (84)19%13%
Name (28)61%43%
Phone (16)50%38%
ShippingCode (10)80%70%
City (9)11%0%
Email (6)67%67%
BillingCode (6)100%67%
Address (6)17%0%
UserAgent (7)57%43%

Numbers from report table (Family Breakdown, reports/qwen_active_crystallizer_public_gate_report.md)

Technical framing

Oracle DSL ceiling vs examples-only selection by task family — The DSL ceiling collapses on the two biggest families, DateTime and Number, so overall coverage is capped well below simpler families.

Results hold steady across three run sizes

How to read

Three run sizes along the bottom; grouped bars show each method's share of tasks solved on unseen rows, taller is better. Bars include model votes, scrambled votes, the best rule available, shortest-rule picking, and direct answering.

0%20%40%60%80%Smoke (12 tasks)Smoke (12 tasks)Pilot (50 tasks)Pilot (50 tasks)Main (120 tasks)Main (120 tasks)

Takeaway → Across all three sizes the model-vote bars stay pinned near the scrambled-vote and best-available bars, while direct answering stays far higher.

Data table
Run suite (Qwen-probe tasks)Candidate oracleQwen probe selectShuffled probe controlExamples shortestQwen direct (first row)
Smoke (12 tasks)50%33.3%25%33.3%75%
Pilot (50 tasks)20%18%18%16%70%
Main (120 tasks)25%25%22.5%20.8%70%

Numbers from runs/smoke_v1/qwen_summary.csv, runs/pilot_v1/qwen_summary.csv, runs/main_v1/qwen_summary.csv

Technical framing

Probe-selection methods across smoke, pilot, and main suites — The pattern is stable across suite sizes: probe selection hugs the oracle ceiling with only a thin margin over shuffled labels.

Best-possible rule coverage depends on the task sample

How to read

Three sample sizes along the bottom; paired bars show the best rule available versus the plain shortest-rule pick; taller is better. Only the largest sample gives a stable reading.

0%20%40%60%Smoke (35 tasks)Smoke (35 tasks)45.7%31.4%Pilot (100 tasks)Pilot (100 tasks)18%13%Main (309 tasks)Main (309 tasks)29.4%22.7%

Takeaway → The best-available bar swings widely between small samples, so only the full-size run gives a trustworthy estimate of how far rules can reach.

Data table
Static task sampleCandidate oracle coverageExamples-only shortest program
Smoke (35 tasks)45.7%31.4%
Pilot (100 tasks)18%13%
Main (309 tasks)29.4%22.7%

Numbers from runs/smoke_v1/static_summary.csv, runs/pilot_v1/static_summary.csv, runs/main_v1/static_summary.csv

Technical framing

DSL oracle ceiling estimate depends on the task sample — Oracle coverage swings from 46% to 18% across samples; only the full 309-task run gives a trustworthy 29% ceiling.

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

This standalone experiment tests whether frozen Qwen probe labels can select a deterministic transformation program from sparse examples. The model labels synthetic train-like probes; held-out benchmark rows are used only for evaluation.

Overview

Standalone experiment testing whether frozen Qwen probe labels can turn sparse example-level transformation behavior into a deterministic program selected from a broad candidate DSL.

Question

Can a model's direct few-shot transformation behavior be crystallized into a single executable program that generalizes across held-out rows?

Method

  • Use public Microsoft PROSE Transformation.Text tasks.
  • Split each task into train and held-out rows.
  • Generate a broad deterministic candidate DSL from train inputs only.
  • Generate synthetic probe inputs from train inputs only.
  • Ask frozen Qwen/Qwen3-4B to label selected probes.
  • Select among train-fitting candidate programs using probe-label agreement.
  • Compare against examples-only selection, shuffled probe labels, and oracle candidate coverage.

Artifacts

Report

Rendered from reports/qwen_active_crystallizer_public_gate_report.md

Abstract

This standalone experiment tests whether frozen Qwen probe labels can select a deterministic transformation program from sparse examples. The model labels synthetic train-like probes; held-out benchmark rows are used only for evaluation.

Method

  • Dataset: public Microsoft PROSE Transformation.Text tasks.
  • Split: first 4 examples are train examples; up to 50 following examples are held out.
  • Candidate DSL: extraction, casing, regex groups, date/time/number utilities, affixes, two-part concatenation, and small finite maps.
  • Candidate oracle: whether any train-fitting candidate also matches all held-out rows.
  • Examples-only selector: shortest train-fitting candidate.
  • Active crystallizer: Qwen labels synthetic train-like probes chosen to maximize candidate disagreement; the selected program is then evaluated on all held-out rows.
  • Shuffled-label control: same probes, but labels are rotated before program selection.
  • Direct Qwen baseline: one held-out query per sampled task, not a full-task program-consistency metric.

Run Configuration

  • Suite: main.
  • Static candidate tasks: 309.
  • Qwen-probe tasks: 120.
  • Qwen model: Qwen/Qwen3-4B.
  • Max candidates per task: 40000.
  • Max Qwen probes per task: 4.

Primary Results

Static Candidate Coverage

methodtasksscore
candidate_oracle30929.4%
examples_shortest30922.7%
has_train_match309100.0%

Qwen-Probe Subset

methodtasksscore
candidate_oracle12025.0%
examples_shortest12020.8%
qwen_probe_select12025.0%
shuffled_probe_select12022.5%
qwen_direct_first_row12070.0%

Strict Direct-Qwen Full-Heldout Diagnostic

This diagnostic uses the same train examples and asks frozen Qwen to answer every held-out row for a capped task subset. A task counts only if every held-out row is exact.

metrictasksrowsscore
row_exact4045879.9%
full_task_exact4045837.5%
  • On the same 40 tasks, active selected-program full-task exact is 12.5% (5/40).
  • Direct Qwen full-task exact is 37.5% (15/40).

Family Breakdown

familytasksoracle_coverageexamples_scoretrain_match_rate
Author10.000.00100.0%
Column20.000.00100.0%
Meteorite10.000.00100.0%
FilePath10.000.00100.0%
Log40.000.00100.0%
Product20.000.00100.0%
Url10.000.00100.0%
City90.110.00100.0%
DateTime1060.110.09100.0%
Address60.170.00100.0%
Number840.190.13100.0%
Gender30.330.33100.0%
Rating20.500.50100.0%
EmergencyCall20.500.00100.0%
Language20.500.50100.0%
Phone160.500.38100.0%
UserAgent70.570.43100.0%
Name280.610.43100.0%
Email60.670.67100.0%
ShippingCode100.800.70100.0%
Airline11.001.00100.0%
Abbreviation11.001.00100.0%
BillingCode61.000.67100.0%
Currency31.001.00100.0%
Song11.001.00100.0%
Noise11.001.00100.0%
Team11.001.00100.0%
State11.001.00100.0%
ZipCode11.001.00100.0%

Qwen-Probe Task Examples

task_idfamilyfeaturesoracle_coveredexamples_full_exactqwen_probe_full_exactshuffled_probe_full_exactqwen_direct_first_exactprobe_countqwen_program
Abbreviation.000001AbbreviationConcatenation,Conditional,SubstringTrueTrueTrueTrueTrue4initials(COL0)
BillingCode.000007BillingCodeConcatenationTrueTrueTrueTrueFalse4affix['',']'](COL0)
DateTime.000003DateTimeDateTimeTrueTrueTrueTrueTrue4number_int(COL0)
DateTime.000004DateTimeConcatenation,DateTime,MulticolumnTrueTrueTrueTrueTrue4concat' '
DateTime.000013DateTimeConditional,DateTimeTrueTrueTrueTrueTrue4COL0
DateTime.000103DateTimeDateTimeTrueTrueTrueTrueTrue0word4
DateTime.000104DateTimeDateTimeTrueTrueTrueTrueTrue4title(alpha(COL0))
DateTime.000107DateTimeDateTimeTrueTrueTrueTrueTrue4word2
EmergencyCall.000003EmergencyCallCasing,SubstringTrueFalseTrueTrueTrue4title(field;,1)
Gender.000003GenderConditionalTrueTrueTrueTrueTrue1mapl->0,m->1,k->2)
Language.000002LanguageMulticolumn,SubstringTrueTrueTrueTrueTrue4word3
Name.000017NameSubstringTrueTrueTrueTrueFalse4title(slice0:4)
Name.000027NameSubstringTrueTrueTrueTrueTrue4alpha(COL0)
Name.000028NameSubstringTrueTrueTrueTrueTrue4word0
Name.000029NameConcatenation,SubstringTrueFalseTrueTrueTrue4concat', ',word0)
Name.000038NameCasing,Concatenation,SubstringTrueFalseTrueTrueTrue4affix'','@'))
Number.000007NumberNumeric,NumericRoundingTrueFalseTrueTrueTrue4affix'','0')
Number.000029NumberNumeric,NumericRoundingTrueTrueTrueTrueTrue4number_round10(COL0)
Number.000044NumberNumericTrueTrueTrueTrueTrue4number_int(COL0)
Number.000049NumberNumeric,NumericRoundingTrueTrueTrueFalseFalse4number_round100(COL0)
Number.000051NumberNumeric,NumericRoundingTrueTrueTrueTrueTrue4number_round100(COL0)
Number.000077NumberNumeric,NumericRoundingTrueFalseTrueFalseFalse4affix'','0')
Number.000078NumberNumeric,NumericRoundingTrueTrueTrueTrueTrue4number_round10(COL0)
Phone.000011PhoneConcatenation,SubstringTrueTrueTrueTrueTrue4title(COL0)

Qwen-Probe Misses

task_idfamilyfeaturesoracle_coveredqwen_probe_full_exactqwen_direct_first_exactdirect_targetdirect_prediction
Address.000002AddressSubstringFalseFalseFalse880 81th Place880 81th Place SE
Address.000003AddressSubstringFalseFalseTrue319 09th Lane319 09th Lane
Address.000013AddressConditional,SubstringFalseFalseTrue8989
City.000004CityConditionalFalseFalseTrueSan FranciscoSan Francisco
City.000008CityConditionalFalseFalseFalse
City.000010CityConditional,NumericFalseFalseTrue99
City.000011CityConditionalFalseFalseTrueNew York CityNew York City
Column.000001ColumnConcatenation,Conditional,SubstringFalseFalseTrueCol1Col1
DateTime.000005DateTimeConditional,DateTimeFalseFalseTrueJun 2027Jun 2027
DateTime.000007DateTimeDateTimeFalseFalseTrueSep 2007Sep 2007
DateTime.000012DateTimeConditional,DateTimeFalseFalseTrue20332033
DateTime.000014DateTimeDateTimeFalseFalseFalseFriday #1 February 2013Saturday #1 February 2013
DateTime.000015DateTimeDateTimeFalseFalseFalseFriday, 2013W05Thursday, 2013W01
DateTime.000017DateTimeDateTimeFalseFalseTrue30/3/224130/3/2241
DateTime.000018DateTimeDateTimeFalseFalseTrue30 Mar 224130 Mar 2241
DateTime.000023DateTimeDateTimeFalseFalseTrue0330224103302241
DateTime.000025DateTimeDateTimeFalseFalseTrueMar 41Mar 41
DateTime.000027DateTimeDateTimeFalseFalseFalseQ1 '2241Q1 '241
DateTime.000029DateTimeDateTimeFalseFalseFalseTuesdaySunday
DateTime.000032DateTimeDateTimeFalseFalseTrue10:02 PM10:02 PM
DateTime.000034DateTimeDateTime,SubstringFalseFalseTrue2002-09-12 16:15:082002-09-12 16:15:08
DateTime.000035DateTimeDateTime,MulticolumnFalseFalseTrue2002-09-12 16:15:082002-09-12 16:15:08
DateTime.000040DateTimeDateTime,SubstringFalseFalseTrueJanuary 31, 1846January 31, 1846
DateTime.000044DateTimeDateTimeFalseFalseFalseJanuary the 31th 1846January the 31st 1846

method_scores.png

failure_decomposition.png

family_oracle_coverage.png

train_match_ambiguity.png

direct_full_consistency.png

Interpretation

On the Qwen-probe subset, active crystallization selects a full held-out-valid program for 25.0% of tasks, compared with 22.5% for the shuffled-label control and a candidate-oracle ceiling of 25.0%. Frozen Qwen direct answering reaches 70.0% on one held-out row per sampled task, which is a different metric: it measures row-level inference, not whether a single executable program generalizes over all held-out rows. The strict direct-Qwen diagnostic narrows that comparison: direct row accuracy is 79.9%, but full-task consistency drops to 37.5%. Direct Qwen is still ahead of active selected programs on the matched subset, but it is not a solved consistency baseline. Across all static tasks, the candidate DSL has a full-heldout oracle ceiling of 29.4%, while examples-only shortest selection reaches 22.7%. The main failure is not a lack of train-fitting programs: finite maps can fit train examples for every task. The failure is that most train-fitting programs are not held-out-valid, and Qwen probe labels only add a small margin over the shuffled-label control. Under this setup, fuzzy model labels did not crystallize Qwen's row-level competence into broadly reliable executable programs.

Limitations

This run uses synthetic probes generated from train inputs, not human-authored counterexamples. The Qwen-probe subset is capped for runtime. Direct Qwen is scored on one held-out row per task, while program methods require one executable program to match all held-out rows.

Artifacts

  • Static details: analysis/static_details.csv
  • Qwen-probe details: analysis/qwen_probe_details.csv
  • Static summary: analysis/static_summary.csv
  • Qwen summary: analysis/qwen_summary.csv
  • Strict direct-Qwen full-heldout diagnostic: analysis/qwen_direct_full_summary.csv
  • Public benchmark checkout: /workspace/large_artifacts/qwen_active_crystallizer_public_gate/prose-benchmarks

Experiment log 9

Show the running log (9 entries)

Setup

  • Created fresh experiment directory: /workspace/experiments/qwen_active_crystallizer_public_gate
  • Large artifacts directory: /workspace/large_artifacts/qwen_active_crystallizer_public_gate
  • Public benchmark checkout is available under the large artifacts directory.
  • Core question: whether Qwen probe labels can select an executable transformation program from a candidate DSL under held-out validation.
  • Report format: standalone Markdown and HTML with plots.

Smoke Debug Note

  • First smoke attempt exposed a duplicate-probe loop in synthetic probe generation before producing metrics. Added an attempt cap and deterministic task seed before rerunning.

Smoke Debug Note 2

  • Second smoke attempt showed finite-map enumeration was running over concat-expanded candidates. Restricted maps to base/wrapped expressions and lowered concat breadth before rerunning.

Run smoke_v1

  • Started: 2026-06-27 04:36:01 UTC
  • Static tasks: 35; Qwen-probe tasks: 12
  • Completed in 23.8s.
  • Candidate-oracle full-heldout coverage: 31.4%.
  • Examples-only full-heldout score: 31.4%.
  • Qwen-probe selected-program score: 33.3%.
  • Shuffled-label selected-program score: 33.3%.
  • Direct Qwen first-heldout-row score: 66.7%.

Smoke Debug Note 3

  • Third inspection showed train-signature deduplication erased candidate ambiguity. Removed that deduplication so probe labels can distinguish train-equivalent programs, and made Qwen tasks sampled by seed.

Run smoke_v1

  • Started: 2026-06-27 04:37:26 UTC
  • Static tasks: 35; Qwen-probe tasks: 12
  • Completed in 46.8s.
  • Candidate-oracle full-heldout coverage: 45.7%.
  • Examples-only full-heldout score: 31.4%.
  • Qwen-probe selected-program score: 33.3%.
  • Shuffled-label selected-program score: 25.0%.
  • Direct Qwen first-heldout-row score: 75.0%.

Run pilot_v1

  • Started: 2026-06-27 04:38:41 UTC
  • Static tasks: 100; Qwen-probe tasks: 50
  • Completed in 170.9s.
  • Candidate-oracle full-heldout coverage: 18.0%.
  • Examples-only full-heldout score: 13.0%.
  • Qwen-probe selected-program score: 18.0%.
  • Shuffled-label selected-program score: 18.0%.
  • Direct Qwen first-heldout-row score: 70.0%.

Run main_v1

  • Started: 2026-06-27 04:42:01 UTC
  • Static tasks: 309; Qwen-probe tasks: 120
  • Completed in 384.9s.
  • Candidate-oracle full-heldout coverage: 29.4%.
  • Examples-only full-heldout score: 22.7%.
  • Qwen-probe selected-program score: 25.0%.
  • Shuffled-label selected-program score: 22.5%.
  • Direct Qwen first-heldout-row score: 70.0%.

Strict Direct-Qwen Full-Heldout Diagnostic

  • Model: Qwen/Qwen3-4B
  • Tasks: 40; held-out rows: 458
  • Row exact: 79.9% (366/458).
  • Full-task exact: 37.5% (15/40).
  • Full-task exact requires every held-out row for the task to be answered exactly.

Figures 5

direct full consistency
direct full consistency · analysis/figures/
failure decomposition
failure decomposition · analysis/figures/
family oracle coverage
family oracle coverage · analysis/figures/
method scores
method scores · analysis/figures/
train match ambiguity
train match ambiguity · analysis/figures/

Data files 9

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 ↗