Research log Small Model Experimentation
GitHub

Qwen3.5-4B Independent Code ABI Coverage Gate

Frozen toolbox barely reaches brand-new tasks

The one idea you need

Picture a toolbox of generic Python operations locked shut before you see any problem. A new task counts as solved only if one tool, or a short two-step chain, exactly reproduces the required answer, like a preset universal remote where you hope one button already matches.

The question

If you assemble a fixed toolbox of generic coding operations before seeing any problems, how many brand-new coding tasks can it solve exactly, out of the box?

What we found

No, hardly any. The locked toolbox solved only about 14% of brand-new tasks, roughly 1 in 7, versus 37% on the familiar tasks it was shaped around. Reshuffling which tasks are unseen barely moves it, around 18%. And nearly every win was a single tool matching by luck, not a real composed solution, far too thin to build a trainable system on top of.

Why it matters

Before training a small model to translate problems into a fixed operation library, first measure how much of the target tasks that library can even express on fresh problems. About 15% coverage, mostly trivial, leaves nothing broad to learn.

Brand-new tasks the toolbox solved14% (about 1 in 7)23 of 160 unseen tasks where some operation passed every test
Coverage drop moving to brand-new tasks37% → 14%familiar tuning tasks versus brand-new tasks
Wins that needed just one operation20 of 23only 3 solved tasks combined two operations
Matches that look right but are wrong92%candidates passing the visible examples that still fail hidden tests
On this page
  1. Results at a glance
  2. Overview
  3. Report
    1. Purpose
    2. Frozen ABI
    3. Headline Result
    4. Held-Out Sweep
    5. Slice Diagnostics
    6. Depth Diagnostics
    7. False-Pass Pressure
    8. Covered Held-Out Examples
    9. Decision
    10. Files
  4. Experiment log
  5. Figures
  6. Data files
  7. Reproduce
  8. Related

Results at a glance 4

Toolbox coverage collapses on brand-new tasks

How to read

Bars show the share of tasks the frozen toolbox solves, for the familiar tuning set, brand-new tasks, and a broader task pool; taller is better.

0%10%20%30%40%calibrationcalibration37.5%held-outheld-out14.4%traintrain19.5%

Takeaway → The brand-new bar falls to well under half the familiar bar, showing the toolbox does not carry over to unseen problems.

Data table
MBPP split (160 / 160 / 374 tasks)oracle coverage
calibration37.5%
held-out14.4%
train19.5%

Numbers from reports/coverage_gate_summary.json (calibration.overall, heldout.overall, train.overall)

Technical framing

Frozen ABI oracle coverage collapses on held-out tasks — The frozen ABI covers 37.5% of calibration tasks but only 14.4% held-out, failing the gate for a compiler-training run.

Coverage stays low across three fresh task samples

How to read

Each bar is one random sample of brand-new tasks; height is the share the frozen toolbox solves; taller is better.

0%5%10%15%20%18.8%seed 1118.1%seed 1718.1%seed 23

Takeaway → All three bars sit near the same low level, around a fifth, so the weak coverage is consistent, not an unlucky draw.

Data table
Random held-out sample (160 tasks each)oracle coverage
seed 1118.8%
seed 1718.1%
seed 2318.1%

Numbers from reports/coverage_gate_summary.json (sweep.coverage_values, sweep.results[].seed)

Technical framing

Held-out coverage is stable across three random-sample seeds — Three-seed sweep averages 18.3% (range 18.1-18.8%), confirming low held-out coverage is not a sampling fluke.

Every kind of task is poorly covered

How to read

Bars split brand-new tasks into categories like text, list, and number tasks; height is the share the toolbox solves; taller is better.

0%10%20%30%string_regexstring_regex20.7%otherother18.5%list_tuplelist_tuple17.6%dict_counterdict_counter14.3%numericnumeric4.4%algorithmic_controlalgorithmic_control0%

Takeaway → No category clears about a fifth and number tasks nearly bottom out, so the gap spans every domain, not one weak spot.

Data table
Held-out task sliceoracle coverage
string_regex20.7%
other18.5%
list_tuple17.6%
dict_counter14.3%
numeric4.4%
algorithmic_control0%

Numbers from reports/coverage_gate_summary.json (heldout.by_slice)

Technical framing

Held-out coverage is low in every task slice — No slice exceeds 21% held-out coverage; numeric tasks are worst at 4.4%, so the gap is not confined to one domain.

Passing the quick check rarely means a real solution

How to read

For each task group, one shade shows how often tasks with a quick-check match had no true solution, another how often individual matches fail hidden tests; lower is better.

0%25%50%75%100%calibrationcalibration35.5%82.6%held-outheld-out59.6%91.9%traintrain54.1%84.3%

Takeaway → On brand-new tasks over nine in ten quick-check passes still fail hidden tests, so the visible check gives false confidence.

Data table
MBPP splittask false-pass ratecandidate hidden-wrong rate
calibration35.5%82.6%
held-out59.6%91.9%
train54.1%84.3%

Numbers from reports/coverage_gate_summary.json (overall.visible_false_pass_rate_among_visible, overall.visible_hidden_wrong_rate_among_candidates)

Technical framing

Visible-test filtering is unreliable: false-pass pressure by split — On held-out tasks 59.6% of visible passes have no full winner and 91.9% of visible-consistent candidates fail hidden tests.

In the author’s words from the Report · “Headline Result”

Held-out coverage is low. The frozen independent ABI covers 23/160 held-out tasks (14.4%). The three-seed held-out sweep averages 18.3%, range 18.1%-18.8%. Calibration coverage is higher at 37.5%, but the held-out slice and random sweep are the primary readout.

Overview

Standalone no-training coverage gate for an independently specified code ABI.

The experiment freezes a general-purpose Python/stdlib-style primitive inventory before evaluation, then measures oracle coverage on MBPP calibration and held-out slices. It does not train a model and does not add kernels after inspecting held-out misses.

Final report will be written to reports/final_report.md.

Report

Rendered from reports/final_report.md

Purpose

This standalone no-training experiment tests whether an independently specified Python/stdlib-style ABI covers held-out MBPP tasks at a useful rate. The ABI was frozen before evaluation. No kernels were added after looking at held-out misses.

Frozen ABI

The inventory contains generic Python operations: argument routing, list/tuple transforms, dictionary/counter utilities, regex/string transforms, predicates and label adapters, bounded arithmetic/combinatorics/bit utilities, and small generic compositions. At max arity 4 the inventory enumerates 903 candidates: {'dict_counter': 14, 'generic': 8, 'list_tuple': 189, 'numeric': 296, 'predicate': 32, 'predicate_label': 264, 'string_regex': 100}.

This is an oracle coverage gate, not a learned compiler and not a deployable solver. Coverage means at least one ABI candidate passes all available tests for a task.

Headline Result

Held-out coverage is low. The frozen independent ABI covers 23/160 held-out tasks (14.4%). The three-seed held-out sweep averages 18.3%, range 18.1%-18.8%.

Calibration coverage is higher at 37.5%, but the held-out slice and random sweep are the primary readout.

Coverage main splits

splitnoracle-coveredoracle coveragefirst-visible correctvisible-any taskstask false-pass ratecandidate hidden-wrong ratemean candidates
calibration1606037.5%359335.5%82.6%219.8
heldout1602314.4%75759.6%91.9%247.1
train3747319.5%3615954.1%84.3%241.6

Held-Out Sweep

seednoracle-coveredoracle coveragefirst-visible correcttask false-pass rate
111603018.8%1044.4%
171602918.1%1347.3%
231602918.1%950.8%

Coverage sweep

Slice Diagnostics

slicenoracle-coveredoracle coveragefirst-visible correcttask false-pass rate
algorithmic_control100.0%0100.0%
dict_counter7114.3%150.0%
list_tuple51917.6%350.0%
numeric4524.4%088.2%
other27518.5%150.0%
string_regex29620.7%233.3%

Held-out coverage by slice

Depth Diagnostics

Held-out covered tasks by winning depth: {'1': 20, '2': 3}. Most covered tasks are depth-1 single-primitive hits; held-out composition coverage is very small.

Held-out depth counts

False-Pass Pressure

Visible-test filtering is not reliable. On held-out tasks, 57 tasks have at least one visible-consistent candidate, but the task-level visible-pass/no-full-winner rate is 59.6%, and the candidate-level hidden-wrong rate among visible-consistent candidates is 91.9%.

False pass rates

Covered Held-Out Examples

taskslicedepthwinning programtask
175string_regex1{"arg": 0, "op": "all_distinct_arg0"}Write a function to verify validity of a string of parentheses.
190numeric1{"args": [2, 0], "op": "floordiv_2_0"}Write a python function to count the number of integral co-ordinates that lie inside a squ
191other1{"arg": 0, "op": "all_distinct_arg0"}Write a function to check whether the given month name contains 30 days or not.
192string_regex1{"arg": 0, "op": "has_duplicate_arg0"}Write a python function to check whether a string has atleast one letter and one number.
201list_tuple1{"arg": 0, "op": "has_duplicate_arg0"}Write a python function to check whether the elements in a list are same or not.
203other1{"args": [1, 0], "op": "floordiv_1_0"}Write a python function to find the hamming distance between given two integers.
204string_regex1{"args": [0, 1], "op": "count_0_1"}Write a python function to count the occurrence of a given character in a string.
211other1{"arg": 0, "op": "bit_count_arg0"}Write a python function to count numbers whose oth and nth bits are set.
216list_tuple2{"args": [0, 1], "op": "contains_subsequence_0_1"}Write a function to check if a nested list is a subset of another nested list.
223list_tuple1{"arg": 1, "op": "is_odd_arg1"}Write a function to check for majority element in the given sorted array.

Some covered tasks are likely test-suite coincidences rather than semantic equivalence. That makes the low held-out coverage an optimistic upper bound, not a pessimistic one.

Decision

This gate does not support a code-ABI compiler-training run. A frozen independent ABI covers only about 14-18% of held-out MBPP tasks, mostly as depth-1 single-primitive matches. Training a compiler on this ABI would have too little held-out expressivity to test broad reusable code compilation.

The useful next step is not to add task-specific kernels. A better test would use a real independently curated task domain whose tasks are known to be deterministic transformations, then repeat this same held-out coverage gate.

Files

  • scripts/run_independent_abi_gate.py: frozen ABI evaluator and gate runner.
  • reports/coverage_gate_summary.json: all summary metrics.
  • data/calibration_records.jsonl, data/heldout_records.jsonl, data/train_records.jsonl: per-task records.
  • data/sweep_records.jsonl: per-task sweep records.
  • reports/figures/: generated charts.

Experiment log 1

Show the running log (1 entry, 2026-06-27)

2026-06-27

  • Created standalone experiment package.
  • Defined the frozen ABI as a general-purpose Python/stdlib-style primitive inventory before running coverage.
  • Primary gate: held-out oracle coverage on unseen MBPP test records using only this frozen ABI.
  • No training is planned unless held-out coverage is meaningfully high.
  • Implemented scripts/run_independent_abi_gate.py with the frozen ABI and evaluator.
  • Ran calibration, held-out, train, and three-seed held-out sweep.
  • Main results:

    • calibration coverage: 60/160 (37.5%)
    • held-out coverage: 23/160 (14.4%)
    • train coverage: 73/374 (19.5%)
    • held-out sweep: 30/160, 29/160, 29/160; mean 18.3%
    • held-out covered depth counts: 20 depth-1, 3 depth-2, 0 depth-3
    • held-out task-level visible-pass/no-full-winner rate: 59.6%
    • held-out candidate-level hidden-wrong rate among visible-consistent candidates: 91.9%
  • Decision: no compiler training. The frozen independent ABI does not cover held-out MBPP tasks at a useful rate.
  • Generated report and charts at reports/final_report.md and reports/figures/.

Figures 5

coverage main splits
coverage main splits · reports/figures/
coverage sweep seeds
coverage sweep seeds · reports/figures/
false pass rates
false pass rates · reports/figures/
heldout coverage by slice
heldout coverage by slice · reports/figures/
heldout depth counts
heldout depth counts · reports/figures/

Data files 1

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

Reproduce

Run steps are documented inside the experiment folder (README and scripts).

Browse the experiment folder on GitHub ↗