Try-and-error ablation, minimal few-shot context, single shot per level, a
ladder L0 (fn returns 42) to L7 (full SMA). Two ladders: base few-shot that
only destructures, then one that also constructs (term-ctor).
Finding: Qwen is NOT generally incapable. With minimal correct context it
writes 6/8 tasks green, including ADTs, match, recursive fns, and Series use.
The failures are two specific walls:
- Wall 1 (cheap): unfamiliar constructs. It built lists with (app Cons ...) —
calling the ctor like a function — because it had only seen match, never
term-ctor. Adding ONE term-ctor example flipped L3 and L5 to green and
removed the Cons error. The model generalises a construct from one example.
- Wall 2 (hard): paren/nesting discipline at depth. The two that stay red
(L4, L7) fail purely on bracketing, not knowledge. In L4 the recursive
function is flawless; main closes a 4x-nested term-ctor value one paren
early so the let body slides inside it — total paren count is BALANCED
(43/43), the parens are just misplaced. Green/red tracks nesting depth, not
feature. Examples do not fix it. This is the same weakness the full-SMA
probes hit (run 2 had correct logic, died on brackets; run 3's long context
tipped it into a seq-repetition loop).
Takeaway: the bottleneck is the fully-parenthesised surface at depth, not the
semantics. Natural next test: the .ail.json authoring form, which removes
human paren-counting. Driver qwen_ablation.py; ladders in qwen-ablation-min.md
and qwen-ablation-ctor.md; synthesis in qwen-ablation.md.