Views
No views yet
| Axis | Metric | M5.2 | M5.3 |
|---|---|---|---|
| A factory/template generalization | compile / run | 92.5% | 100% |
| greedy match / pass@4 | 22.5 / 37.5% | 27.5 / 37.5% | |
| B semantic binding (distractors) | compile | 5.6% | 98.6% |
| greedy match / pass@4 | 1.4 / 2.1% | 6.2 / 16.0% | |
| C real-code generation | compile | 0/6 | 1/6 (17%) |
| exact stdout match | 0/6 | 0/6 |
bind): a target function plus 1–2 same-signature
distractors; main must call the target — the name is the only
discriminator.The quality of a small model is determined not only by how much data it sees, but by which causal-semantic dependencies the data distribution forces it to learn.
main
always called run(), the model emitted structurally perfect programs
calling non-existent functions on real files (run(10) instead of
fact(10)). Factory v2 randomizes function/local names across a pool,
adds distractor functions, varies call patterns — and binding compiles
at 98.6% without any architectural change.fact, compiled and ran — printing 14! instead of the original's 5!.
Exact-stdout matching on free continuation therefore conflates coding
ability with reproducing the file author's arbitrary constant choices.
realgen v2 (two-tier: body-completion with fixed args = fair match;
free continuation = valid-program rate only) is the next eval revision.a-z A-Z 0-9 _, BPE merges over real
identifiers, digits spelled out)kenga-lite runtimefn main strangled generation at token 5 (stop-condition checked the
whole buffer). The naive setup lacks an explicit task boundary; a
marker-token variant (<FIX>) is the planned rp1 control._run.json); later releases
include git commit + corpus sha256 + config snapshots.M4.x size ≠ solution
M5 verified synthetic data → template generalization (89.26%)
M5.2 +real code → transfer appears, binding shortcut exposed (5.6%)
M5.3 shortcut removed → binding solved (98.6%), A intact ← this model
next realgen-v2 tier-1, rp1 <FIX>, then Genesis v0 (gated)1import sys; sys.path.insert(0, 'code')
2import kenchat
3codec = kenchat.load_codec_vocab('kenga_full.pkl')
4toks, src = kenchat.gen_tokens('fn add', 'mid_prophet_m53_w.txt',
5 max_tokens=200, codec=codec)
6print(src)data/ contains the exact template-disjoint splits (train/test JSONL)
and the 806-mutant repair eval set used for every number above.