Qwen3.5-4B Latent Decomposition: be your own tool-search
The one idea you need
Give a small model a tiny language of list operations and a three-move goal, then ask it to pick operations one at a time. It acts like a chess player who instantly spots checkmate-in-one but is blind to the opening move of a three-move combination.
The question
Can a small model plan its own multi-step solution by picking one operation at a time, and can cheap self-training teach it to plan ahead?
What we found
No, not out of the box. One step from the goal it picks the right operation about eight times better than chance, but on the opening move three steps out it ranks correctly only at chance — recognition, not planning. As its own guide it solved 1 of 80 puzzles, no better than random's 2. Self-training on its verified solutions installed real planning: 18 of 80, nearly matching trying every operation.
Why it matters
When a small model guides its own multi-step search, don't trust its early moves — confident-but-wrong first picks can drag it below random. Measure first-move accuracy, and self-train on verified full solutions to install transferable planning.
On this page
Results at a glance 2
How to read
Three groups mark distance to the goal: three, two, then one operation away. Bar height is how often the model's top-ranked operation was correct — taller is better, with random guessing near three percent. Colors compare the base model against two self-trained versions.
Takeaway → Base bars sit at the floor on the opening move and rise only near the finish; self-trained bars tower over base at every step — practice installed real planning, not just finishing.
Data table
| condition | base | banked N=640 | banked N=1280 |
|---|---|---|---|
| step 1 (goal 3 ops away) | 1.3% | 12.5% | 13.8% |
| step 2 (2 away) | 6.2% | 13.8% | 25% |
| step 3 (1 away) | 23.7% | 46.3% | 55% |
Numbers from
Technical framing
The lookahead wall & banking's fix: per-step next-op ranking accuracy (base vs banked) — 'Be your own tool-search': the fixed model ranks the 32 DSL ops given current-lists->goal; can it plan a depth-3 composition step by step? BASE has a LOOKAHEAD WALL -- at/below chance (0.031) for planning the first of 3 ops (step1 0.013), but ~8x chance for a 1-step transform (step3 0.237). It has depth-1 recognition, no lookahead, so as its own search guide it is WORSE THAN RANDOM (coverage 0.013 vs random 0.025 vs brute 0.287 at matched budget). I predicted banking (C24) would be monolithic compilation (lift only step-3). REFUTED: banking lifts EVERY step including lookahead, dose-dependently -- banking installs TRANSFERABLE PLANNING that transfers from monolithic prompt->code training to step-wise search-guidance.
How to read
Horizontal axis is compute budget — attempts allowed per puzzle; vertical is the share of 80 puzzles solved, higher is better. Lines sweep trying-every-operation and random proposals across budgets; two dots mark base-guided and self-trained-guided search at one matched low budget.
Takeaway → At equal budget the base dot sits below the random line, while the self-trained dot leaps about seventeenfold to nearly meet trying-everything — a misleading guide turned useful.
Data table
| interpreter calls per task (budget) | brute-force (all 32 ops) | random proposals | base-guided (beam 8) | banked N=1280-guided (beam 8) |
|---|---|---|---|---|
| 80 | — | 0% | — | — |
| 288 | — | 0% | — | — |
| 1088 | — | 2.5% | 1.3% | 22.5% |
| 1280 | 28.7% | — | — | — |
| 2304 | 35% | — | — | — |
| 4224 | — | 26.3% | — | — |
| 4352 | 48.7% | — | — | — |
| 8448 | 68.8% | — | — | — |
| 16.64k | 76.2% | 75% | — | — |
| 24.83k | 81.2% | — | — | — |
Numbers from
Technical framing
Banking upgrades the search-guide from worse-than-random to competitive with brute-force — End-to-end decomposition-search coverage on 80 true-depth-3 held-out tasks (terminates on VISIBLE only, graded on HIDDEN). At matched budget (~1088 interp/task) the BASE-guided search (0.013) is WORSE than random (0.025) and far below brute-force (0.287) -- the base model's confident-but-wrong first-op proposals mislead the beam. Banking upgrades it ~17x to 0.225, roughly matching brute at low budget (still below brute's 0.81 at high budget). Control: random+distance-pruning reaches only 0.037, so the interpreter's pruning alone does NOT crack depth-3 -- exhaustive/real proposals are required, and banking's lift is a genuine model improvement.
In the author’s words from the Overview · “Results”
Lookahead wall (base): per-step next-op top-1 = 0.013/0.062/0.237 (step1/2/3; chance 0.031). Recognition, no lookahead. Base as its own guide is WORSE than random (0.013 vs 0.025 vs brute 0.287 @ matched budget). Banking installs transferable LOOKAHEAD (refuting my monolithic-compilation hypothesis): banked lifts every step dose-dependently (step1 0.013->0.125->0.138, step2 0.062->0.138->0.250, step3 0.237->0.463->0.550). Upgrades the guide: banked1280-guided coverage 0.013->0.225 (~17x), competitive with brute at low budget. Control: random+pruning only 0.037 (pruning alone isn't the solver); brute+pruning 0.487. See reports/report.md, analysis/decomposition.png.
Overview
Research Program
- Program:
structured_execution_and_compilers - Question: can the FIXED model climb the depth wall by proposing+verifying one DSL op at a time (be its own tool-search)? WHERE does it break, and does banking (C24) fix it?
- Anchors: C12 (base decompose-guidance = efficiency not coverage), C24 (banking installs monolithic depth-3).
Pivot
An adversarial workflow review (reports/design_review.md, verdict flawed) showed the original "is depth-3 latent" framing was unfair + partly redundant with C12. Pivoted to DISSECT the failure (per-step ranking accuracy) and test whether banking installs transferable planning. Adopted all must-fixes: VISIBLE-only search termination (hidden-graded), brute-force honesty bar, min-depth-verified true-depth-3 (all 80), pruning ablation.
Setup
- Model: Qwen3.5-4B only. list 16-op DSL (32 op/param combos). 80 min-depth-verified true-depth-3 held-out.
- Model ranks the 32 ops by likelihood given current-lists->goal; interpreter applies+verifies; beam search.
- Guides: base / banked_640 / banked_1280 (reused C24 adapters). Controls: brute (all 32) / random.
Run
python scripts/run.py --tag base --search --with-controls python scripts/run.py --tag banked1280 --adapter <C24 banked_1280> --search python scripts/analyze.py
Results
- Lookahead wall (base): per-step next-op top-1 = 0.013/0.062/0.237 (step1/2/3; chance 0.031). Recognition, no lookahead. Base as its own guide is WORSE than random (0.013 vs 0.025 vs brute 0.287 @ matched budget).
- Banking installs transferable LOOKAHEAD (refuting my monolithic-compilation hypothesis): banked lifts every step dose-dependently (step1 0.013->0.125->0.138, step2 0.062->0.138->0.250, step3 0.237->0.463->0.550).
- Upgrades the guide: banked1280-guided coverage 0.013->0.225 (~17x), competitive with brute at low budget.
- Control: random+pruning only 0.037 (pruning alone isn't the solver); brute+pruning 0.487.
See reports/report.md, analysis/decomposition.png.
Interpretation
The single-shot depth wall is a LOOKAHEAD/planning gap; the model can't be its own multi-step search heuristic. But banking (self-training on verified solutions) installs TRANSFERABLE compositional planning -- not just a monolithic input->output map -- upgrading the model's step-wise search-guidance dose-dependently.
Knowledgebase Update
- Program evidence:
research_programs/structured_execution_and_compilers/evidence.md(C25) - Claim ledger: C25 added
Artifacts
scripts/decompose.py(search + vectorized op-scoring),scripts/run.py,scripts/analyze.pydata/eval_frozen_d3.jsonl(80 true-depth-3, reused from C23/C24),runs/rank_*.json,runs/search_*.json,runs/ablation.json,runs/verdict.json,analysis/decomposition.png,reports/{prereg,report,design_review}.md- Reuses C24 banked_640/banked_1280 adapters (out of repo).
Report
Rendered from reports/report.md
Summary
"Be your own tool-search": can the FIXED model climb the depth wall by proposing+verifying one DSL op at a time (it ranks the 32 ops given current lists -> goal; the interpreter applies + verifies; beam search)? An adversarial workflow review (reports/design_review.md, verdict flawed) showed the original "is depth-3 latent" framing was unfair and that the sibling C12 already ran the base-model version (guidance buys efficiency not coverage). So this experiment pivoted to dissect WHERE decomposition breaks and whether banking (C24) fixes it. All fixes adopted: search terminates on VISIBLE examples only (graded on hidden); brute-force (all 32 ops) is the honesty bar (random only a floor); all 80 held-out tasks are min-depth-VERIFIED true-depth-3; a pruning ablation is included.
1. The lookahead wall (base model)
Per-step ground-truth next-op ranking (n=80, chance top-1 = 0.031):
| step (goal distance) | top-1 | top-6 | mean rank |
|---|---|---|---|
| step 1 (3 ops away) | 0.013 | 0.125 | 19.7/32 |
| step 2 (2 away) | 0.062 | 0.237 | 17.9/32 |
| step 3 (1 away) | 0.237 | 0.375 | 15.4/32 |
The base model recognizes a one-step transform (step-3 ≈ 8× chance), has weak above-chance ranking two steps from the goal (step-2 top-1 0.062 versus chance 0.031), and is at/below chance only on the first move three steps from the goal. At matched budget (~1088 interpreter calls/task), base-guided search solves 1/80 tasks versus random's 2/80 and brute-force's 23/80 (coverage 0.013/0.025/0.287). The one-task base-versus- random difference is within noise: this establishes that base guidance is no better than random, not that it is reliably worse.
2. Banking installs transferable LOOKAHEAD (I predicted the opposite)
I pre-registered that banking (C24, monolithic depth-3 SFT) would be compilation not planning — lifting only terminal recognition. Refuted. The banked models rank the next op better at every step including lookahead. The dose trend is clear at steps 2–3; at step 1, the 640→1280 increment is only 10/80→11/80 and is within noise:
| guide | step 1 | step 2 | step 3 |
|---|---|---|---|
| base | 0.013 | 0.062 | 0.237 |
| banked N=640 | 0.125 | 0.138 | 0.463 |
| banked N=1280 | 0.138 | 0.250 | 0.550 |
Banking on monolithic prompt→code solutions installs a reusable multi-step planning improvement that transfers to the step-wise search-guide role — lookahead (step-1/2) lift = +0.156, terminal (step-3) lift = +0.313 (banked1280 vs base). It is not a lookup map.
3. This upgrades the guide from worse-than-random to competitive
banked1280-guided search solves 18/80, versus 2/80 random and 1/80 base, at matched budget — now roughly matching brute-force's 23/80 at the same low budget. Banking converts an uninformative base guide into a competitive one. (It still does not beat brute's high-budget coverage 0.81; only one beam width was tested.)
4. Controls (the model's contribution is real, not the pruning)
Pruning ablation (hidden coverage): random-proposals + distance-pruning reaches only 0.037 (pruning alone does NOT crack depth-3); brute (exhaustive proposals) + pruning reaches 0.487. So the solver is real proposals + pruning, and banking's lift to the guide is a genuine model improvement, not a pruning artifact.
Research Program Fit
Connects C12 (decompose-search: base guidance = efficiency not coverage) with C24 (banking installs depth-3). The novel finding: banking is not just monolithic memorization — it installs transferable compositional planning that upgrades the model's own search-guidance. Sharpens what banking does: it improves the latent compositional machinery, transferring across task formats (monolithic training → step-wise lookahead).
Method
List 16-op DSL (32 op/param combos). Fixed model ranks the 32 ops by length-normalized likelihood given a prompt showing the DSL + current lists → goal lists (batched forward, vectorized). Beam search (distance-to- target pruning), depths 1–3, VISIBLE-only termination, hidden-graded. Guides: base / banked_640 / banked_1280 (reused C24 adapters). Controls: brute (all 32) / random, swept over beam/budget. scripts/decompose.py (search), scripts/run.py (rank + search + ablation), scripts/analyze.py.
Pre-registered verdicts
- P1 (lookahead wall): PARTIAL — base ranking is monotone in goal-proximity; only step 1 is at/below chance, while step 2 is weakly above chance.
- P2 (does banking install planning?): REFUTED my hypothesis — banking lifts lookahead (step-1/2) dose-dependently; it installs transferable planning, not monolithic compilation only.
- P3 (coverage bar): base-guided does NOT beat brute and is within noise of random; banked-guided becomes competitive at matched budget but still does not exceed brute's high-budget coverage.
- P4 (pruning): HELD — random+pruning ≈ 0.037; pruning alone is not the solver.
Honest limits
Likelihood-ranking a closed 32-op set is easier than free generation (a generative variant is future work). Single frozen held-out (n=80), one seed; one beam width for the guided coverage point (no full budget curve for the banked guide). The claim is about step-wise proposal/planning on this substrate; it does not re-litigate C24's monolithic result (which stands). "Banking installs planning" means measurably transferable step-wise lookahead, not that the model becomes a superior search guide (it reaches parity, not dominance).
Next Experiments
- Full coverage-vs-budget curve for the banked guide (does it beat brute at any budget, or only reach parity?).
- Free-generation proposal variant (does the lookahead lift survive without the closed-set menu?).
- Does banking depth-4 install depth-4 lookahead (repeat the dissection one rung deeper)?
Artifact Manifest
See reports/artifact_manifest.yaml. Reuses C24 banked_640/banked_1280 adapters (out of repo).
Experiment log 1
Show the running log (1 entry)
Scaffold
Created as a new experiment scaffold.
Figures 1
Reproduce
Smoke test
python scripts/decompose.py # model vs brute vs random on 8 tasksFull run
python scripts/run.py --tag base --search --with-controls && python scripts/run.py --tag banked1280 --adapter <banked_1280> --search && python scripts/analyze.pyRun steps are documented inside the experiment folder (README and scripts).
