Session 9: Dense P1 + Hybrid A is the new Terminal best vs 6t
17 August 2026 · Terminal-board · first look at sealed-v2 516 · blinded Gemini 3.5 Flash-Lite · Continues session 4, shipping 6t_argmax
New ship, until we catch FLAN. Dense P1 (intent-pointer head on the frozen 6t encoder, median seed 101) plus locked Hybrid A + centroid v2 beats shipped 6t_argmax on a set we had never scored: sealed Terminal-v2, 516 rows, +0.13 [0.04, 0.22]. It does not beat FLAN (−0.60). 6t stays in the Electron ONNX worker until this pointer path is wired. Package: porkr1/p1_hybrid_a_ship_package/.
Two boards. This page is Terminal-board only.
- SO-board (1,000 SO clean-dev): FLAN + centroid v2 = 6.11 / 88.5%. Not scored here. Sealed SO 1000 stays closed.
- Terminal-board (this race): sealed-v2 516 is the confirmation set. Reusable-dev 500 was used to pick the config. terminal-holdout 200 stays closed.
Never write “we beat FLAN” without the board name. Never mix packet means across days.
Sealed Terminal-v2 516 — the winner table
First look. Same ten arms, same Hybrid A bells (STOP list, at most two namer words, centroid v2 fill to 3). keep-namer is the same 2+1 fill with the on-page filter removed. Fresh FLAN decoded in this packet.
| Arm | Decode | Glue | Mean | ≥6 |
|---|---|---|---|---|
| Fresh FLAN | existing free | Hybrid A | 7.02 | 80.2% |
| Fresh FLAN | existing free | keep-namer | 6.89 | 77.7% |
| Dense P1 (new ship) | schema | Hybrid A | 6.43 | 68.2% |
| Dense P1 | schema | keep-namer | 6.33 | 66.9% |
6t_argmax (incumbent) |
constrained 2-word | Hybrid A | 6.30 | 65.3% |
| agent1m 1M | constrained 2-word | Hybrid A | 6.16 | 61.0% |
| 6t free | unconstrained | Hybrid A | 6.13 | 60.3% |
| 6t free | unconstrained | keep-namer | 6.05 | 58.9% |
| agent1m free | unconstrained | Hybrid A | 5.95 | 56.6% |
| agent1m free | unconstrained | keep-namer | 4.66 | 27.7% |
Source: output/s9/eval_sealed/winner.json. Judge gemini-3.5-flash-lite, seed session9-sealed-v2-offpage-fair-v1.
| Contrast | Δ | 95% CI | w / t / l |
|---|---|---|---|
| P1 Hybrid A − 6t Hybrid A | +0.13 | [0.04, 0.22] | 186 / 184 / 146 |
| P1 Hybrid A − FLAN Hybrid A | −0.60 | [−0.70, −0.49] | 95 / 116 / 305 |
| agent1m − 6t | −0.14 | [−0.23, −0.05] | 114 / 235 / 167 |
| P1 keep-namer − P1 Hybrid A | −0.09 | [−0.16, −0.03] | 103 / 248 / 165 |
| FLAN keep-namer − FLAN Hybrid A | −0.13 | [−0.20, −0.06] | 57 / 376 / 83 |
How P1 beat 6t
6t is a 35M T5 that writes two on-page words, then Hybrid A fills the third from centroid v2. That is still the Electron path. It is good at staying on the page and bad at picking the right page words: leftover function words and the wrong noun survive the beam.
P1 does not replace that 35M decoder. It freezes the 6t encoder and adds an 8 MB pointer head that scores a legal schema title:
[optional 64-verb intent] + on-page object + optional on-page qualifier
The only token allowed to be off-page is the intent. Teachers used that slot to beat FLAN in the schema-oracle packet. The learned head is not that good at the verb — it still over-uses Check — but it is better than 6t at the noun. Locked Hybrid A then does the cheap cleanup: drop an off-page Check, keep Review / Run / Create when they are on the page, fill to three with the same centroid v2 6t uses.
That is the whole win. Same glue. Better object. A verb only when the page can spell it.
| Task (truncated) | 6t + Hybrid A | P1 raw → Hybrid A |
|---|---|---|
| is this reinforcement learning should we use pufferlib | Should we Pufferlib | Add learning → learning Pufferlib Reinforcement |
| yea you are running release-flow.md aren't you | Running yea Flow | Run release → Run release Flow |
| get glm 5.2 and kimi 2.7 to run code-review on your diffs | Run glm Get | Review code → Review code Glm |
Keeping off-page words is not how it won. On this sealed packet, keep-namer loses for P1, FLAN, free 6t, and free agent1m. The 1M Flash-Lite continue from 6t also loses to 6t (−0.14). Do not ship keep-namer, free decode, or agent1m.
What we are not claiming
- Not a FLAN win. P1 is 0.60 behind in this packet (95 / 116 / 305).
- Not an SO-board result. Sealed SO 1000 is closed.
- Not a drop-in ONNX swap. The worker still loads 6t beam-4 graphs. P1 needs the pointer enum at runtime.
- Not keep-namer, not unconstrained 6t, not agent1m 1M.
Cost and compute vs 6t and FLAN
FLAN here is our title-tuned flan-t5-small bar (student-flan-t5-run5-capacity/best), not an API. All three namers run locally. The comparison is capacity and how they spend it, not a cloud invoice. Sealed quality is FLAN 7.02 vs P1 6.43 vs 6t 6.30.
| Piece | Dense P1 + Hybrid A | 6t_argmax |
Title-tuned FLAN |
|---|---|---|---|
| Parameters at infer | 24.5M (22.5M encoder + 2.0M head) | 35.0M (22.5M encoder + 16.2M decoder) | 77.0M (35.3M encoder + 41.6M decoder) |
| Checkpoint on disk | 142 MB (134 MB 6t encoder + 8 MB head) | 134 MB | 308 MB |
| Vocabulary | 6,985 compact ids | 6,985 compact ids | 32,128 SentencePiece |
| Decode graph | One encoder pass, then ≤288 MLP title scores. No decoder. | Encoder–decoder beam-4, 8 new tokens, on-page trie | Full encoder–decoder generate, 8 new tokens |
| Research-script wall, 20 sealed rows, Mac MPS (includes load) | 8.9 s (unbatched Python enum) | 4.8 s (constrained beam-4) | 2.9 s (batched generate) |
| Incremental train for this checkpoint | Head: 3 epochs, 59 s on one Ada 6000. Dense Flash-Lite labels ≈ $5.26. Sits on the frozen 6t encoder. | Judged-SFT, 192 steps, lr 2e-5, from B-9500. The 35M we already ship. | 77M title-SFT on our titles, plus Google’s FLAN instruction pretrain |
| Sealed Terminal-v2 quality | 6.43 / 68.2% ≥6 | 6.30 / 65.3% ≥6 | 7.02 / 80.2% ≥6 |
| Product path today | Research Python. Not on ONNX yet. | ONNX millisecond worker in the app | Benchmark only. Not shipped. |
P1 is 30% fewer live parameters than 6t (no decoder) and 3.1× smaller than FLAN. It adds 8 MB on top of the 6t encoder. The current unbatched Python enum is slower than both 6t and FLAN on MPS; production 6t is the ONNX millisecond path. Do not read the 8.9 s script time as the product budget.
Versus 6t: a cheap head on the same encoder, +0.13 on sealed-v2, not yet the app worker. Versus FLAN: 3× fewer live parameters, 0.60 worse usefulness, until a worker exists and the remaining 0.60 closes.
Ship package
porkr1/p1_hybrid_a_ship_package/ holds the frozen 6t encoder, the seed-101 head, the 64-verb lexicon, tokenizer, centroid v2, locked Hybrid A, and a one-command infer script. Head SHA-256:
37c01bd737b26bc151351c214cfc62f1888e2e4de2fca5f567bd065c5b86b8fd
Encoder SHA-256 stays the 6t lock: 2ea02c139c57032d02470e3a0c1f413e0c1611d3c3206acd6734a8ec7f14b27b.