“the shortcut is fine. skipping the gate is the sin.”

For a week the plan was grow the talk model. The honest ruler had already hinted the plan was wrong — on Day 71 the 30M beat the 85M and the 125M. Today we stopped arguing with it and inverted the whole thing: the model shrinks; the mind moves out.

The pivot: the model is a cursor, not a knower

The owned model becomes the smallest, fastest speech cursor we can train — pure fluency, nothing else. Everything that looks like capability — facts, compute, actions, voice-range — moves OUT: knowledge into the cards (110 libraries), math into the lanes, tasks into the skill router, introspection into a deterministic composer. The size sweep wasn’t a disappointment; it was the map. When bigger stops helping, that’s the data telling you the model is not where the value lives.

Which retires a week-old ghost, honestly: the mind’s monologue babbles (“Glunglu?”) because we asked a small-talk model to narrate a metrics report — out-of-distribution, not undertrained. We proved it: fed the freshly-trained 30M the real monologue input, still gibberish. More chat data will never fix it. The fix is to stop asking the tiny model to do a job that was never speech.

The honest ruler, again: batch2

Nine new work-cards libraries came in from the field and went through the cold-check: 4,743 of 4,751 passed. The eight it quarantined weren’t noise — most were real errors. A blitzscaling card labeled 100–999 employees the “City” stage; it’s the “Village” stage, and the true answer was hiding in its own distractor. The grader caught it exactly the way it caught the linguistics “pejoration” card last week. A couple of quarantines were false flags (correct-but-hard-to-verify security cards) — which is the right failure direction for a gate: drop the uncertain, keep the moat clean.

The clean base — and the proof that packs are packs

We trained 5M and 10M on the merged corpus (everyday + six style buckets), then again on just the 121k everyday pairs, 12k steps:

mixed corpus, 6k stepsclean everyday, 12k steps
5M1.2961.115
10M1.2201.078

Stripping the style buckets out of the base dropped held-out loss on both. That’s the architecture proving itself: a 5–10M model can barely hold coherent everyday speech; folding flirt + jokes + emotional range into it spreads it thin. So they don’t go in the base — they ride on top as packs (the flirt/companion pack got harvested as 86 tasteful roster exemplars, kept deliberately separate so romantic voice never leaks into the mind). Base = clean fluency. Range = composed.

The corpus engine grew a second agent

The biggest quality jump wasn’t a model — it was how the data is made. Isolated “topic → pair” generation makes stiff, context-free replies. So now two agents actually text each other, turn by turn, steered through a rotating topic arc, and we capture the consecutive turns. It reads human:

A: you ever have one of those days where everything feels off and you just wanna stay in bed? B: definitely been there recently, can’t shake a low mood…

And it carries registers, not just topics: friends (3×), user↔assistant (2×), boss↔assistant (1×), so the base learns to be a buddy and a helper and a colleague. Hardened against the teacher’s tells (qwen leaks Chinese meta-text; LLMs spiral into “ttyl / talk soon” goodbye-loops — both filtered). One overnight batch: 30,037 clean pairs, zero contamination. Next dynamic on deck: “help me fix my code” — and code has what chat doesn’t, an execution gate, so those pairs can be verified by running them, not just trusted.

The idea: comprehension that can’t be baited

Then the real one. A tiny model can’t understand a sentence holistically — so don’t ask it to. Decompose understanding into gradeable lookups: parse the words + roles, look up each word in a dictionary RAG (what is it, what does it mean, how’s it used — WordNet is almost exactly this), assemble meaning bottom-up, discern the actual request, then reason over the facts.

The test that made it click: “the dead cat was placed in a box… a day passes, poison food goes in… is the cat alive or dead by day 10?” The answer is dead — it was dead at word one. The poison and the ten days are a deliberate trap. A large model sees “Schrödinger,” pulls the cached it’s-in-superposition answer, and skips reading the actual words. A word-precise system reads “dead” and is finished. (For the record: the first draft of this analysis fell for the trap too — added a whole “reason about the poison” step. The example works.)

Which surfaced the principle worth keeping: it’s not shortcut vs. do every step — it’s gated vs. ungated shortcuts. Recognize fast, but verify the pattern against the literal words before you commit; a contradiction (“Schrödinger says uncertain” vs. “the sentence says dead”) kicks you back to full comprehension. That’s the resolve() shape exactly: LOOKUP → VERIFY → fall through only on gate-fail. Cheap when the shortcut is honest, careful only when it isn’t. Big models are trained toward fluent-and-fast — ungated shortcuts — so they’re foolable by construction. Comprehension-first with a one-cent verify gate is trap-resistant by construction.


Shipped / found:

  • The pivot: owned model → smallest speech base cursor; capability moves to cards / lanes / skills / composers (memory: speech-only-pivot)
  • batch2 graded: 9 work-cards libraries, 4,743/4,751 pass — cold-check caught real errors (City→Village) (uncommitted: libraries/{accounting,cryptography,…})
  • Clean 5M/10M base on 121k everyday pairs — clean beat style-mixed (10M: 1.078); flirt/jokes proven to belong in packs
  • 2-agent dialogue engine — friends / assistant / boss registers, steered arcs, CJK + goodbye-spiral filtered; 30,037 clean pairs/night (scripts/train_talk_standalone.py gained a 10M tier)
  • Flirt pack — 86 tasteful roster exemplars harvested as a separate composable layer, base stays clean
  • Finding — the mind’s Glunglu is task-mismatch, not undertraining: a small-talk model can’t narrate a metrics report; more chat data won’t fix it
  • The comprehension engine — decompose → per-word dictionary-RAG lookup (WordNet) → assemble → discern → reason; word-precision is trap-resistant
  • The principle: gated shortcuts — recognize fast, verify the pattern against the literal words, drop to full comprehension on contradiction