# NPC Reason — SFT result vs frozen baseline + PREREG (Dispatch 2, Stage 4) NPC-Reason-SFT = R1-Distill-1.5B + LoRA (r64), distilled on **7,546 V4 chains that the FROZEN verifier confirmed verifiable AND correct**. Evaluated on the frozen EVAL.lock (500 held-out GSM8K+MATH), same greedy decoding as the baseline (apples-to-apples), scored by the frozen verifier (VERIFIER.lock d5d146cf). ## Result (format-prompt = the committed comparator) | | base (format) | NPC-Reason-SFT | delta | |------------------------|--------------:|---------------:|--------:| | verifiable-rate | 0.0% | **76.8%** | +76.8pp | | accuracy | 61.6% | **65.8%** | +4.2pp | | verified-and-correct | 0.0% | **58.0%** | +58.0pp | | mean assertions/chain | 0.0 | 3.44 | — | Plain-prompt (native, no format instruction): verifiable 0.0%, accuracy 64.8%. The model emits the `<>` format under the format prompt it was trained on, not unprompted — expected, and the format prompt is the committed comparator. ## PREREG verdict (committed bars, frozen b5a49437 — graded honestly) | Criterion | Bar | Result | Verdict | |---|---|---|---| | 1. Primary lift (verified-and-correct over format baseline) | ≥ +15pp | **+58.0pp** | **SUPPORTED** | | 2. Verifiable-rate | ≥ 90% | 76.8% | **NOT SUPPORTED** | | 3. Accuracy guard (no regression > 5pp) | ≥ −5pp | **+4.2pp** (improved) | **SUPPORTED** | **2 of 3 SUPPORTED.** The all-three gate is not met (criterion 2 missed). ## Honest read - **The central thesis is validated, strongly.** Distilling *only mechanically-verified* teacher chains moved a model that produced **zero** checkable reasoning (0% verifiable, even when asked) to **76.8% verifiable / 58% verified-and-correct** — a +58pp jump on the headline metric, far past the +15pp bar. The grounding transferred. - **Accuracy did not regress — it rose** (+4.2pp). Verifiability was not bought by sacrificing correctness; the strict-basis corpus improved both. (Some of the rise is reduced greedy repetition vs the base; attributed, not overclaimed.) - **The one missed bar is verifiable-rate (76.8% vs 90%).** ~23% of format-prompt chains still fail full verification — a step that doesn't verify, doesn't compose, or the model reverts to prose on harder MATH items. This is exactly the gap RL-with-verifier-reward is designed to close. ## RL gate The committed gate is: RL proceeds if SFT clears its bar **OR** produces a high verifiable-rate so RL has signal to sharpen. All-three bar: **NOT cleared** (verifiable 76.8 < 90). High-signal condition: **MET** — 76.8% verifiable / 58% verified-and-correct gives RL (verifier = reward, the same frozen code) dense signal to push toward ≥90%. So the RL phase is **warranted**, entered with eyes open that criterion 2 is the explicit target. A null at SFT would have been valid; this is not a null — it is a large, real lift that misses one of three bars. Frozen: `sft/SFT_RESULT.lock`. Raw per-item outputs: `eval/eval_raw.jsonl`.