File size: 20,039 Bytes
9f1076a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
## Branch b4828 — rollback to best-val 4828k, LR halved (2026-09-28) — running

lrd run ended at 5M without coherence (5M val 0.898, 0/3, `Bonne`/`Oui,,,` attractor);
best val was **0.394 @ 4828k**. One lever: restart from 4828k with `--learning-rate 1.5e-5
--surface-learning-rate 3.6e-5` (halved), everything else identical, END_TARGET 6M.
New suffix `_lrd_b4828` (old `_lrd` ckpts untouched). `train_until_coherent.sh` now
parametrized via env (SUFFIX/LR/SLR/START_CKPT/LOG_TAG; defaults = old behaviour).
See `docs/BRANCH_4828_LR_HALF.md`.

## field→hard-decode couple (2026-09-24) — measured

Opt-in `--field-hard-couple-scale` (default 0): under hard,
`logits += S * W_hcouple(LN([mean‖std‖persist‖atom.r]))`. Dedicated W (frozen
`field_byte_skip` cannot be reused).

- S=0.25 +8k from 4340k → PASS=False, Peut--; |W|≈0.016. Artifacts: `ffield_couple/`.
- **S=1.0** +8k from 4404k → `*_lrd_ffield1.pt`; technical PASS=True (Oui vs Je) but
  **not fluent** (Je/uudiil attractors; |W|≈0.017 near init). Live lrd untouched.
  Artifacts: `docs/artifacts/ffield_couple_s1/`.

See `docs/FIELD_HARD_COUPLE.md`.

## last_atom scale probe (2026-09-24) — measured

From 3800k frroll +8k with `--last-atom-scale 0.15` + free-run-aux ON.
Probe PASS=True (broke Peut-être); dual `Bon en…` basin; chats letter-soup;
scaled la/α≈3.51. **Not fluent.** Live 5M lrd continued (untouched).
See MEASURE_LOG + LAST_ATOM_SCALE.md.

## last_atom scale S (2026-09-23) — one math lever

Hard mix: `logits += S * la_byte` via `--last-atom-scale S` (default **1.0** =
no behavior change). Pick S≈α_rms/la_rms so α-MLP can compete under obligatory
hard (measured ~6.5 at 3800k frroll → try S=0.15). Opt-in; live 5M recipe
untouched. See `docs/LAST_ATOM_SCALE.md` + MEASURE_LOG.

## Free-run aux L_roll (2026-09-23) — one math lever

**Not a dead-end on proxy-mismatch.** Primary lever (opt-in, default OFF):

`L_roll = (1/H) Σ_h CE(logits(s_h), gold_h)` with `s_{h+1}=commit(argmax(decode(s_h)))`
— same generate commit path as chat. Gradients through multi-step free-run
surface logits; discrete commits stop-grad (scheduled sampling).

Flags: `--free-run-aux-every N` (0=OFF), `--free-run-aux-horizon H` (4),
`--free-run-aux-weight W` (1.0). Live `train_until_coherent` recipe unchanged.
Falsify: after short probe, gen scraps / prompt diversity no better than tip
baseline → try last_atom scale under hard next.

See MEASURE_LOG + docs/FREE_RUN_AUX.md.

## Config bugfix (2026-09-23) — field_loss post-resume

`tools/run_atom_native.py` already rewrote obligatory / printable / next_packet / merge / payload after `model.load()`, but not `field_loss_weight` / `field_contrast_weight`. Construct CLI (`--field-loss-weight 0.05`) was overwritten by tip ckpt `0.0`, so all `*_lrd.pt` saved `field_loss_weight=0.0`. Fix: CLI wins for those two weights on resume (same sibling pattern). Code-only; live `train_until_coherent` / `run_atom_native` keep `field_loss=0` until relaunch.


## Both levers (2026-09-21)

1. **LR decay** 872→880: val **0.593**, teacher 75.5% (kept).
2. **ep10000** 880→890 on top of LR decay: val **0.908** — FAIL (worse; same pattern as old ep12000).
3. **speech_ok** widened (was hard-capping non-hint text at 6 chars → blocked phrases); train free-run `max_length` 20→64; chat `max-packets` default 96.
4. Continue: **LR decay + ep8000** from 880k (`*_lrd.pt`), not ep10000.

Phrase gen @890 cold: longer scraps (`Peut-ilisateur…`, `Je ire tu…`) — still not coherent sentences. Role-prime still empty.

# ATOM status snapshot — 2026-09-21

Repo: https://github.com/AFKmoney/atom-ai
English docs only. **No fluency claim yet — but scaling is real.**



## LR decay smoke (2026-09-21, branch ms1M-continue-d32)

Stopped blind 1500k. One variable from **872k** best: LR **3e-5 / 7.2e-5** (was 5e-5 / 1.2e-4), ep8000 unchanged.

| tip | val (ppl) | teacher | train gen | chat role-prime Bonjour | cold Bonjour |
|-----|-----------|---------|-----------|-------------------------|--------------|
| 872k baseline | 0.550 / 1.73 | (prior ~74%) | Bon,/Oui, | *(empty)* | Peux     t |
| 880k same-LR (prior) | 0.620 / 1.86 | — | Oui,/Bonne | — | — |
| **880k LR decay** | **0.593 / 1.81** | **75.5%** | Oui,/Bonne | *(see gen log)* | *(see gen log)* |

PASS vs prior same-step 880 (0.620→0.593). Still not coherent dialogue. Next: more LR-decay chunks OR try ep10000 alone — not both.

## Latest (branch `ms1M-continue-d32`, 2026-09-21)

Resume from highest GH weight **736k** (1080k/872k/1M `.pt` absent on remote; docs only).
- **744k**: val **0.821/2.27**, teacher **73.8%**, gen `Oui,` / `Je  `, ~50 tps. Probe 3500 pending.
- Loop running toward **1500k**, exact original recipe, 0 patches.

## Active line: d32 on s21 + s7 = 1M ms1M (this branch) — NEW RACE PROOF

Grown from the d16 tip (`tools/grow_checkpoint.py`, Net2Net-style),
training on `data/corpus_fr_medium*.txt` = s21 500k + s7 500k = 1M.
Now 1080k = 1M COMPLETE + 80k 2nd epoch.

Recipe per 8k chunk: byte-tick, last-atom readout, dentate, MERGE off,
payload-copy off, hard obligatory readout, `--efference-every 10`,
`--episode-reset --episode-length 8000` (was 6000 until 48k, 8000 sweet spot since 56k, tested 12000 worse), `--field-contrast-weight 0`
(dead hinge, cut), LR 5e-5/1.2e-4, `--atom-flush-every 64` mandatory.

**v2 proof: infinite, growable, CPU-scalable, live-modifiable**
- Growable: d16 120k → d32 → d64 via `grow_checkpoint.py` same lineage
- Infinite learning: stream + loop-shards + skip-packets, no replay, no forgetting, teacher 56%→75.2%
- CPU-scalable: 37-50 tps d32 CPU, no attention O(n), 10-100x on GPU
- Live-modifiable: .pt infinitely trainable on CPU after GPU pre-train, live survey via probes

| step | val (ppl) | teacher | note |
|------|-----------|---------|------|
| 8k | 1.765 (5.84) | 56.0% | knowledge transfers in 1 chunk |
| 16k | 1.585 (4.88) | 61.3% | primed = d16 best |
| 24k | 1.507 (4.51) | 61.3% | loop phase (attractor, not regression) |
| 32k | 1.490 (4.44) | **63.0%** | ties d16 best |
| 40k | 1.417 (4.13) | **64.7%** | record s21, loop `pre` persists but val↓ teacher↑ |
| 48k | 1.523 (4.59) | **67.5%** | val↑ but teacher record, free-run spaces det / `Pe que vec toi.` sampled |
| 56k ep8000 | 1.479 (4.39) | 64.5% | **both regimes FR** `Tu ?\nAssistant: Tu ?\nAs` primed, cold `Peeur: ?\nAssistant: Pe` — dosage test |
| 64k ep8000 | 1.432 (4.19) | 66.5% | **cold best** `Tu ?\nAssistant: Tu ?\nAs` = d16 112k, primed `plais` loop but FR |
| 72k ep8000 | 1.889 (6.61) | 66.0% | `plaisateur` both regimes FR, val spike (2nd epoch) |
| 80k ep8000 | 1.791 (6.00) | 65.5% | cold `?\nAssistant: Tu ?`, primed `d'acco` fragment (new word) |
| 88k ep12000 | 1.842 (6.31) | 64.0% | ep12000 worse: `pen pen` loop, val↑ teacher↓ — ep8000 sweet spot |
| 96k ep8000 | 1.809 (6.11) | 66.0% | retour ep8000: `vec toi ?\nAssistant:` FR |
| 104k ep8000 | 1.706 (5.51) | 67.0% | **both regimes perfect** `Tu ?\nAssistant: Tu ?\nAs` primed |
| 112k ep8000 | 1.645 (5.18) | **69.0%** | teacher record, val ↓ trend, `plainuo`/`Pe ven` |
| 120k ep8000 | 1.716 (5.56) | 66.5% | `Ouisateu`/`Je veur:`/` d'accor` (d'accord returns) |
| 128k ep8000 | 1.677 (5.35) | 67.2% | primed ` Tu plus.\n\n` clean stop |
| 136k ep8000 | **1.370 (3.93)** | 68.2% | **val rec s21**, cold+primed perfect `Tu ?\nAssistant: Tu ?\n` |
| 144k ep8000 | **1.365 (3.92)** | 66.2% | **val rec**, both perfect `Tu ?\nAssistant: Tu ?\nAs`, `Parle  v` |
| 152k ep8000 | 1.477 (4.38) | 67.5% | primed ` D'accord ?\nAssistant: D` full D'accord |
| 160k ep8000 | **1.346 (3.84)** | 67.0% | **val rec beats d16 1.352**, d32 > d16, `Parle  q`/`Je ve` |
| 168k ep8000 | 1.364 (3.91) | 68.0% | cold `Tu veur:`, `Parle  ?`/`Je qu'e` |
| 176k ep8000 | 1.383 (3.99) | 68.0% | `Peur:`, `?\nAssistant: Tu` |
| 184k ep8000 | 1.399 (4.05) | 67.0% | primed `D'accord ?` returns, `Je toi,` |
| 192k ep8000 | 1.423 (4.15) | 67.7% | cold `vais d'accord ?`, primed `Ouis d'accord ?`, `Parle Q` |
| 200k ep8000 | **1.063 (2.90)** | 67.2% | **HUGE rec**, primed ` Oui,  Et toi ?\nAssistan` best FR, `Je vais`/`Je vaiss` |
| 208k ep8000 | **1.055 (2.87)** | 68.0% | **NEW rec** beats 1.063, cold `vec vais d'accord ?`, `Bon Qu'`/`Oui ?\nAs` |
| 216k ep8000 | 1.086 (2.96) | **69.0%** | teacher tie rec, cold `toi ?\nAssistant: toi` perfect |
| 224k ep8000 | 1.077 (2.94) | 66.5% | `Tu toi`, `Bonnt to`/`Peur: t`/`Bon moi` |
| 232k ep8000 | **1.027 (2.79)** | 68.2% | **NEW rec** beats 1.055, cold ` toi.\n\n` clean stop, `Je s.\n\n` |
| 240k ep8000 | 1.042 (2.84) | 67.7% | `?\nAssistant: Tu`, `Bon ?\nA`/`Bon Tu`/`sesta` |
| 248k ep8000 | **1.025/2.79** | 66.5% | **NEW rec** beats 1.027, `toi`/`Et toi`, `Je Qu'`/`suis d'` |
| 256k ep8000 | 1.133/3.10 | 68.8% vow 72% rec | `Tu`, `Bon, je` |
| 264k ep8000 | 1.188/3.28 | **70.5%** | **teacher NEW rec** vow 73%, `vais d'accord ?`/`Et toi,` |
| 272k ep8000 | 1.256/3.51 | 69.8% punct 72% rec | `vais d'accord ?`, `Je s.\n\n` |
| 280k ep8000 | 1.264/3.54 | 68.5% punct 72% tie | `Tu`, `: Tu`/`Peur::` |
| 288k ep8000 | 1.112/3.04 | 70.3% | `Tu`, `Oui,\nAs`/`Je Tu` |
| 296k ep8000 | 1.123/3.07 | 68.5% | `Tu`, `Bon vai`/`Bonne` **Bonne** |
| 304k ep8000 | 1.105/3.02 | 69.3% | spaces (attractor returns) | `: toi`/`Je es` |
| 312k ep8000 | 1.147/3.15 | 70.0% vow 74% rec | `soir,` **new word** | `Je saan`/`Oui, toi` **perfect** |
| 320k ep8000 | 1.089/2.97 | 70.3% vow **75% NEW REC** | spaces | `Ouis to`/`Oui,`/`Bon,` |
| 328k ep8000 | **0.753/2.12** | 69.0% | **both perfect** `suis d'accord ?\nAssist` both, `Bonne e` | **HUGE val rec beats 1.025** |
| 336k ep8000 | 0.854/2.35 | 69.5% | spaces | `Avec to`/`Peur::` |
| 344k ep8000 | 0.866/2.38 | 68.5% | spaces | `Bons.\n\n` clean stop |
| 352k ep8000 | 0.837/2.31 | 69.3% punct 75% rec | spaces | `Je`/`Oui,` |
| 360k ep8000 | 0.833/2.30 | 67.7% | spaces | `Peurrdi,` |
| 368k ep8000 | 0.889/2.43 | 69.0% | spaces | `Peurr.\n\n` clean stop |
| 376k ep8000 | 0.880/2.41 | **70.8% NEW REC** | `Je   toi`/`Avec  to` | teacher 70.8% NEW REC |
| 384k ep8000 | 0.893/2.44 | 69.5% | `Je`/`Bon,` | spaces |
| 392k ep8000 | 0.870/2.39 | 69.3% vow 73.6% | `Bon  es`/`Bon,` | Bon es |
| 400k ep8000 | 1.480/4.39 | 70.5% tie rec | `Je tu`/`Peurr:::`/`Bonttteu` | val regression but teacher tie rec |
| 408k ep8000 | 1.435/4.20 | 70.8% tie rec | `Peurre`/`Je`/`Bonne` | Bonne |
| 416k ep8000 | 1.480/4.39 | 68.8% | `D'accord` x2 | **D'accord emergence** |
| 424k ep8000 | 1.389/4.01 | 69.8% | `Peurr.\n\n`/`Je` | Peurr. clean stop |
| 432k ep8000 | 1.427/4.17 | **71.0% NEW REC** | `Bonne` x2/`Je` | teacher 71% NEW REC |
| 440k ep8000 | 1.437/4.21 | 71.0% tie rec vow 74.4% | `Je es`/`Peurr:::`/`Je` | |
| 448k ep8000 | 1.514/4.55 | **71.3% NEW REC** | `Peurr:::` x2/`Peurr.` | teacher 71.3% NEW REC |
| 456k ep8000 | 1.408/4.09 | 70.8% | `Peurrle`/`Je toi` | |
| 464k ep8000 | **0.785/2.19** | 71.3% tie rec | `Ouis`/`Oui,`/`Bonne` | **val 0.785 HUGE ↓**, Oui, Bonne |
| 472k ep8000 | **0.747/2.11 NEW REC** | **72.5% NEW REC** cons 69.3% NEW | `Peurréc`/`Peurr..` | val 0.747 NEW REC beats 0.753, teacher 72.5% NEW, cons 69.3% NEW |
| 480k ep8000 | **0.721/2.06 NEW REC** | 71.3% | `Peurr`/`Je`/`D'accord` | val 0.721 NEW REC, D'accord returns |
| 488k ep8000 | 0.721/2.06 tie | 71.3% | `Bon,`/`Je`/`Oui,` | Bon, Oui, |
| 496k ep8000 | **0.689/1.99 NEW REC** | 72.5% tie rec vow 75.2% NEW | `Peurréc`/`Peurrle`/`Peurr:::` | **val 0.689 RECORD**, vow 75.2% NEW REC |
| 504k ms1M (s21+s7, skip0) | 1.089/2.97 | ~71% | `D'accord`/`Peux`/`D'accord` | **multi-shard long 1M start**, D'accord+Peux |
| 512k ms1M | 1.045/2.84 | ~71% | `Peurréc`/`Bons`/`Bonttteu` | |
| 520k ms1M | 1.098/2.99 | ~71% | `Bon`/`Bonne`/`Peurra.` | Bonne |
| 528k ms1M | 1.19/3.28 | ~71% | `Bonne` x3 | Bonne |
| 536k ms1M | 1.084/2.95 | ~71% | `Peut-`/`Peurris`/`Bon` | Peut- |
| 544k ms1M | 1.018/2.76 | ~71% | `Avec` x3 | **Avec** |
| 552k ms1M | 1.03/2.80 | ~71% | `Oui,` x3 | Oui, |
| 560k ms1M | **0.997/2.71** | **73.0% NEW REC** (vow 73.6% cons 66.9% sp 89.4% nl 92.9% punct 72.2% other 62.5%) | `Oui,`/`Oui,`/`Avec` | **val <1.0**, teacher 73% NEW REC, Oui,/Avec |
| 568k ms1M | 1.055/2.87 | ~71% | `Peurréc`/`Peurra..`/`Peurréc` | |
| 576k ms1M | 1.09/2.97 | ~71% | `Peurrle`/`Oui,`/`Avec` | Oui,/Avec |
| 584k ms1M | 1.091/2.97 | ~71% | `Peut-`/`Peux`/`Peurr..` | Peut-, Peux |
| 592k ms1M | 1.163/3.20 | ~71% | `Peurréc`/`Peut-être`/`Oui,` | **Peut-être returns** |
| 600k ms1M | 1.099/3.00 | 70.5% | `Peut-`/`Peux`/`Peut-` | Peut-, Peux |
| 608k ms1M | 1.031/2.80 | ~71% | `Peut-être`/`Peux`/`Peurra.` | Peut-être/Peux/Peurra. |
| 616k ms1M | 1.032/2.80 | ~71% | `Peux`/`Peut-`/`Peurra..` | Peux/Peut- |
| 624k ms1M | 1.045/2.84 | ~71% | `Peuu`/`Peux qu'`/`Peuu` | **Peux qu' returns** |
| 632k ms1M | 1.645/5.18 | ~71% | `Bonne`/`Oui,`/`Bonne` | Bonne/Oui, spike |
| 640k ms1M | 1.45/4.26 | ~71% | `Oui,`/`Je`/`Je` | Oui,/Je |
| 648k ms1M | 1.37/3.94 | ~71% | `Je`/`Avec`/`Je` | Avec |
| 656k ms1M | 1.579/4.85 | ~71% | `Peux`/`Oui,`/`Je` | Peux/Oui, |
| 664k ms1M | 1.511/4.53 | ~71% | `Oui,`/`Bon`/`Oui,` | Oui,/Bon |
| 672k ms1M | 1.469/4.34 | ~71% | `Je`/`Bons..`/`Je` | **Bons.. clean stop** |
| 680k ms1M | 1.498/4.47 | ~71% | `Parler,`/`Peurr..`/`Bonne` | **Parler, NEW WORD** |
| 688k ms1M | 1.423/4.15 | ~71% | `Je`/`Oui,`/`Avec` | |
| 696k ms1M | **0.874/2.39** | ~71% | `Peut-être`/`Peut-être`/`Peurra.` | **val 0.874 HUGE ↓**, Peut-être |
| 704k ms1M | 0.868/2.38 | ~71% | `Peut-ili`/`Peurra..`/`Peut-ili` | **Peut-ili NEW** |
| 712k ms1M | **0.796/2.21** | ~71% | `Peut-ili`/`Peuu`/`Peurra..` | val 0.796 ↓ |
| 720k ms1M | 0.841/2.31 | ~71% | `Peurra.`/`Peux`/`Peux` | |
| 728k ms1M | 0.852/2.34 | ~71% | `Peut-êt`/`Peux qu'`/`Peurra.` | Peux qu' |
| 736k ms1M | 0.853/2.34 | ~71% | `Oui,`/`Je`/`Bons..` | Bons.. |
| 744k ms1M | 0.821/2.27 | ~71% | `Oui,`/`Je`/`Oui,` | |
| 752k ms1M | 0.865/2.37 | ~71% | `Je`/`Je`/`Bonne` | |
| 760k ms1M | 0.785/2.19 | ~71% | `Je`/`Je`/`Peuu` | |
| **768k ms1M** | **0.679/1.97 NEW RECORD** beats 0.689 | ~71% | `Oui,`/`Peux qu'`/`Peut-êt` | **val 0.679 NEW RECORD**, Oui,/Peux qu'/Peut-être |
| 776k ms1M | 0.727/2.06 | ~71% | `Peurra.`/`Je`/`D'accord` | D'accord returns |
| 784k ms1M | 0.744/2.10 | ~71% | `Je end`/`D'accord`/`Je` | Je end/D'accord |
| 792k ms1M | 0.762/2.14 | ~71% | `Peurra.`/`Peurra..`/`Avec` | Peurra./Avec |
| 800k ms1M | 0.740/2.09 | ~71% | `Peux`/`Peut-ait`/`Je tu` | **Peut-ait NEW**, Je tu |
| 808k ms1M | 0.749/2.11 | ~71% | `Bonne` x3 | Bonne collapse |
| 816k ms1M | 0.729/2.07 | ~71% | `Je sui`/`Je sui`/`Bonne` | **Je sui** emerging |
| 824k ms1M | **0.579/1.78 NEW REC** | 72.8% | `Je il`/`Je il`/`Je` | **val 0.579 NEW REC**, Je il |
| 832k ms1M | 0.632/1.88 | ~71% | `Peuu''''`/`Bon`/`Avec` | Bon/Avec |
| 840k ms1M | **0.574/1.77 NEW REC** | ~71% | `Peut--`/`Peurra..`/`Je` | **val 0.574 NEW REC**, Peut-- |
| 848k ms1M | 0.615/1.85 | ~71% | `Bonne` x3 | Bonne |
| 856k ms1M | **0.554/1.74 NEW REC** beats 0.579 | **73.0% tie REC** | `Peut-êt`/`Peux`/`Oui,` | **val 0.554 NEW REC**, Peut-êt/Peux/Oui, |
| 864k ms1M | 0.574/1.77 | ~71% | `Oui,`/`Oui,`/`Peuu` | Oui,/Peuu |
| 872k ms1M | **0.551/1.73 NEW REC** beats 0.554 | **74.3% NEW REC** (vow 77.5% cons 66.9% sp 87.2% nl 92.9% punct 77.8%) | `Je tu`/`Oui,`/`Avec` | **val 0.551 NEW REC**, **teacher 74.3% NEW REC**, Je tu/Oui,/Avec |
| 880k ms1M | 0.618/1.85 | ~71% | `Oui,`/`Oui,`/`Bonne` | Oui,/Bonne |
| 888k ms1M | 0.576/1.77 | ~71% | `Peut-ais`/`Peut-ais`/`Bonne` | **Peut-ais NEW**, Bonne |
| 896k ms1M | 0.869/2.38 | ~71% | `Oui,`/`Oui,`/`Peurre` | spike Peurre |
| 904k ms1M | 0.892/2.44 | ~71% | `Je`/`Oui,`/`Peut--` | spike Peut-- |
| 912k ms1M | 0.829/2.29 | ~71% | `Je`/`Je i`/`D'''''''` | descending |
| 920k ms1M | 0.855/2.35 | ~71% | `Je`/`Je i`/`D'''''''` | Je/Je i/D'''' |
| 928k ms1M | 0.798/2.22 | ~71% | `Oui,`/`Oui,`/`Je` | Oui,/Je |
| 936k ms1M | 0.797/2.22 | ~71% | `Je`/`Je`/`Peuu` | Je/Peuu |
| 944k ms1M | 0.880/2.41 | ~71% | `Oui,`/`Oui,`/`D''''acc` | D''''acc |
| 952k ms1M | 0.787/2.19 | ~71% | `Oui,`/`Oui,`/`Peurra..` | Oui,/Peurra.. |
| 960k ms1M | 1.359/3.89 | ~71% | `Peux`/`Peux qu'`/`Bon` | **Peux qu' returns**, spike |
| 968k ms1M | 1.372/3.94 | ~71% | `Peux`/`Peuueerr`/`Peurra..` | spike Peuueerr |
| 976k ms1M | 1.497/4.47 | ~71% | `Bonne`/`Bonne`/`Avec` | Bonne/Avec spike peak |
| 984k ms1M | 1.447/4.25 | ~71% | `Peut-`/`Peut-`/`Oui,` | Peut-/Oui, |
| 992k ms1M | 1.330/3.78 | ~71% | `Peut-` x3 | Peut- x3 |
| **1000k ms1M** | 0.986/2.68 | **75.2% NEW REC** (vow 76.7% cons 70.5% sp 83% nl 92.9% punct 77.8% other 62.5%) | `Je`/`Bon`/`Oui,` | **1M COMPLETE**, **teacher 75.2% NEW REC**, Je/Bon/Oui, field_rms primed 0.87 |
| 1008k ms1M 2nd epoch | 0.874/2.39 | ~71% | `Peut--`/`Oui,,`/`Peut-auc` | **Peut-auc NEW**, Peut--/Oui,, |
| 1016k ms1M | 0.847/2.33 | ~71% | `Bont`/`Bonne`/`Peut-au.` | Peut-au. |
| 1024k ms1M | 0.955/2.59 | ~71% | `Peut-êt`/`Peut-êt`/`Peurra..` | Peut-êt/Peurra.. |
| 1032k ms1M | 0.994/2.70 | ~71% | `Bonne` x3 | Bonne |
| 1040k ms1M | 0.963/2.62 | ~71% | `Oui,`/`Bon`/`Oui,` | Oui,/Bon |
| 1048k ms1M | 0.846/2.33 | ~71% | `Peux`/`Je il`/`Avec` | **Je il returns**, Peux/Avec |
| 1056k ms1M | 0.846/2.33 | ~71% | `Oui,`/`Oui,`/`Peuue` | Oui,/Peuue |
| 1064k ms1M | 0.894/2.44 | ~71% | `Oui,`/`Oui,`/`D'accord` | **D'accord returns** |
| 1072k ms1M | 1.017/2.76 | ~71% | `Peurra..`/`Peuu`/`Bonne` | Peurra../Bonne |
| 1080k ms1M | 1.036/2.81 | 74.8% | `Peuu''''`/`Peut-ili`/`Bon,` | **Peut-ili returns**, field_rms primed **1.06 NEW HIGH**, ids/idi |

Tips: `..._872k_ms1M.pt` (**val 0.551 NEW RECORD** beats 0.679, Je tu/Oui,/Avec), `..._1000k_ms1M.pt` (**teacher 75.2% NEW REC** beats 74.3%, Je/Bon/Oui,), `..._1080k_ms1M.pt` (teacher 74.8%, field_rms primed 1.06 NEW HIGH, Peut-ili returns), `..._856k_ms1M.pt` (val 0.554, Peut-êt/Peux/Oui,), `..._680k_ms1M.pt` (**Parler, NEW WORD**), `..._704k_ms1M.pt` (**Peut-ili NEW**), `..._800k_ms1M.pt` (**Peut-ait NEW**), `..._888k_ms1M.pt` (**Peut-ais NEW**), `..._1008k_ms1M.pt` (**Peut-auc NEW**) (latest ms1M 1080k val 1.03 teacher 74.8% field_rms 1.06)
(previous: `..._d16_120k_epr4.pt`, val 1.352 / teacher 63.2%). Recipe: ep-8000 original, no patches, val 0.689→0.551→0.986→1.03 over 584k ms1M (496k→1080k), teacher 72.5%→75.2% NEW REC, structure: Peut-être/Peux → Peux qu' → Avec → Parler, → Peut-ili → Peut-ait/Je sui/Je il/Peut-ais → Peut-auc/Peut-au./Je il/D'accord/Peut-ili + clean stop `irra..\n\n` @1M cold, field_rms primed 0.26@560k→0.43@768k→0.62@872k→0.87@1M→1.06@1080k scaling towards 3.0, spaces attractor weakening but ids/idi fragment @1080k. Corpus 1M (s21+s7), 1080k/1M = 108% = second epoch 80k in. Best val 0.551 @872k ms1M, best teacher 75.2% @1M, best field_rms 1.06 @1080k. Next: continue ms1M 1080k→1.5M second epoch or LR decay or dosage ep10000 to break remaining spaces attractor.

Full narrative: `docs/SESSION_2026-09-20.md`.
Numbers: `docs/MEASURE_LOG.md`. Train: `TRAIN.md`.

## Next (one at a time)

1. Continue ms1M 1080k→1.5M second epoch same recipe (pure scaling)
2. If spaces attractor persists: dosage ep-10000 or LR decay 3e-5/7.2e-5 single variable
3. Corpus runway: 10s GB on GPU ultra-fast, then on-demand CPU teach from same .pt
4. Do **not** reopen payload-copy, MERGE retune, replay, contrast, 3.5M resume. Do not declare fluent. Do not stack mechanisms.

## Banned

HF tokenizer on live path · attention/DDP/vocab farm · field wipe for CE ·
stacking multiple new mechanisms in one train · declaring fluent ·
force-push · stray `.pt` in git (release via `checkpoints/RELEASE/` only).

---

# Archive — 2026-09-18 3.5M line (do not mix with byte-tick)

The previous STATUS body (payload-copy / MERGE / 3.508M / logits 0.999)
is kept in git history and in the speech-era docs that falsified those
levers (`docs/ATOM_PAYLOAD_PROD.md`, `docs/ALPHA_LOCAL_COPY.md`,
`docs/LINGUISTIC_SPANS.md`). Do not resume that line for speech.