File size: 65,878 Bytes
907da49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
<!-- VERIFIED 2026-09-04: code-side (wf_15fc8b16) and hub-side (wf ft2-finish) passes applied. -->

# alephllm-mini-beatrix-training β€” Technical Companion (the 2s era: the full-splat craft and its softmax twin)

Companion to *Twinning Beatrix: A Full-Splat Byte Model, Its Softmax
Control, and What Reaches an Image Generator* (AbstractPhil with Claude
Fable 5 and Claude Fable 5.1, September 2026). It covers two crafts and
one packaged model: `mini-beatrix-2s/` and `mini-beatrix-2s-control/`
under AbstractPhil/alephllm-mini-beatrix-training, and the AutoModel at
AbstractPhil/mini-beatrix-2s; the dates run from the first launch
(run0, 2026-08-26) through the control's endpoint (2026-09-03) and the
claim audit that graded it (2026-09-04). It is written for a reader who
will load the checkpoints and read the reports. It is not the
mini-beatrix-1 life record (`TECHNICAL.md`, which stays as it is), not
the article's argument, and not a manual for the side campaigns that
share the repo root (`reports/v2/{battery,wide_moe,aflow,bcd}` appear
only as a catalogue line). Every number carries its pointer: `file:line`
means E:/mirel/AlephLLM/geolip/alephllm/ at HEAD 4f4b7d6 (package
0.8.7, the last commit of the 2s era); hub paths are relative to the
craft prefix; journal paths are relative to the claude-mind repo. Where
the journal and the code disagree, the code wins and the disagreement
is reported in place. Stack-side detail lives in the
[AlephLLM companion](https://github.com/AbstractEyes/alephllm), which
covers the 0.7.0 mechanisms only; the 0.8.x organs (specials, driver
contract, revival, gauge fallback, twin isolation) are carried here.

## The two crafts at a glance

| | mini-beatrix-2s | mini-beatrix-2s-control | mini-beatrix-1 |
|---|---|---|---|
| d_model / layers / heads | 1024 / 20 / 16 | 1024 / 20 / 16 | 768 / 16 / 12 |
| attention | CausalSplatHUB in all 20 blocks | CausalSDPA (16 Γ— 64) in all 20 | 13 sdpa + 3 hubs (layers 4, 9, 14) |
| hub books Γ— anchors @ D | 4 Γ— 64 @ 128 (supply 0.5Γ—) | β€” | 1 Γ— 512 @ 32 (supply 16Γ—) |
| banks | 3 experts @ ff 1024 | 3 @ 1024 | 3 @ 768 (full width) |
| head (K @ D) | 256 @ 256, revived at 24,860, address frozen after | 256 @ 256, born null, never elected | 512 @ 32, never elected (W_s = 0.0 at ship) |
| context / vocab | 4096 / 256 byte-trigram | 4096 / 256 | 2048 / 256 |
| params | 237,125,949 | 257,442,109 (+20,316,160, all attention) | 112,524,593 |
| tokens per step | 16 Γ— 4 Γ— 4096 = 262,144 | 262,144 | 48 Γ— 3 Γ— 2048 = 294,912 |
| steps / tokens | 61,422 / 16,101,408,768 | 61,422 / 16,101,408,768 | 88,508 / 26,102,071,296 |
| wall-hours / hosts | 78.33 on one RTX PRO 6000 | 49.98 on three hosts | 70.45 |
| final val bpb (report ledger) | **1.1097** | **2.8846** | 1.121 |
| optimizer | Muon 2e-2 + pure Adam 3e-4, flat after 200 | same | same |
| governor | minsep 45Β°, every 8 steps, from birth | inherited (head book only) | off |
| package at birth β†’ end | 0.8.1 β†’ 0.8.6 (revival under 0.8.2) | 0.8.7 throughout | cc89a87 β†’ 0.6.0 (pre-specials) |

Shape and knobs: `presets.py:191-203` (2s), `:214-235` (the `-control`
derivation and the head_addr_frozen override), `:155-160` (mb1).
Parameter counts were computed by constructing each preset on the meta
device (`alephlm.py:218-224` `param_count`): 2s = embed 4,982,784 +
20 blocks Γ— 11,574,275 (hub attention 3,178,496 + bank 8,391,683 +
norms 4,096) + final norm 2,048 + head 655,617; the control's block
swaps the hub's 3,178,496 for sdpa's 4,194,304 (qkv 3072Γ—1024 + o
1024Γ—1024, no biases; `attention.py:24-32`). Tokens per step is
`micro_batch Γ— grad_accum Γ— context` (`trainer.py:186`); 61,422 Γ—
262,144 lands on both manifests' `tokens_seen` exactly. The mother's
numbers are the exemplar's (`TECHNICAL.md`, `mini-beatrix-1/manifest.json`).

## Layout

```
mini-beatrix-2s/
  manifest.json                  # 14 phases, 142 checkpoint entries, notes
  checkpoints/step_XXXXXXXX.safetensors   # 46 bf16 (2000-cadence + every boundary and cap)
  checkpoints/step_00024860_revived.safetensors   # fp32, the post-BOUNDARY-WRITE head
  checkpoints/fp8/               # 20 e4m3 ship-only copies
  resume/latest.pt               # fp32 model + Muon/Adam + stream + RNG + manifest
  resume/boundary_<phase>_step<N>.pt      # 13 immutable boundary archives
  resume/pre_revival_step24860.pt         # the state the revival overwrote
  reports/v2/                    # 13 boundary + 3 session_cap + revival + 4 cultivation
  runs/                          # 5 TensorBoard event files (one per session)
  archive/run0-nospecials/       # the pre-specials first attempt, whole
  beatrix_v2_colab.ipynb         # the driver

mini-beatrix-2s-control/
  manifest.json                  # identical phases and budgets; 136 entries
  checkpoints/step_XXXXXXXX.safetensors   # 44 bf16 (incl. the 22,854 cap)
  checkpoints/fp8/               # 20 e4m3 ship-only copies
  resume/latest.pt  resume/boundary_*.pt  # latest + 13 boundary archives
  reports/v2/                    # 13 boundary + 2 session_cap (22,854; 53,792)
  runs/                          # 6 event files (two are 88-byte aborted starts)
```

The control has no notebook file and no AutoModel packaging; these
checkpoints are its weights. Files: bf16 475,876,922 B (2s) and
515,164,234 B (control); fp8 238,219,518 / 257,813,142 B; resume
archives ~1.904 / ~2.064 GB each; the revived fp32 file 951,692,996 B
(hub headers read by ranged GET; `checkpoint.py:102-128` for the two
export rules).

## Architecture in detail

**The block.** Pre-norm, two residual branches: `x = x + attn(n1(x))`,
`x = x + bank(n2(x))` (`alephlm.py:37-70`). `attn` is CausalSplatHUB
when the layer index is in `hub_layers`, else CausalSDPA
(`alephlm.py:41-50`); every block carries an AnchoredBank
(`alephlm.py:51`). `hub_ckpt` (0 on 2s: the retained scan fits the
96 GB card at 237M, `presets.py:184-198`) would wrap the branches in
activation checkpointing (`alephlm.py:60-68`). The model is embedding β†’
20 blocks β†’ final LayerNorm β†’ DualHead (`alephlm.py:81-96`); `forward`
takes pre-shifted `targets` (ours) or HF-style `labels` (shifted
internally) and ignores `attention_mask` deliberately
(`alephlm.py:98-124`).

**Trigram embedding and positions.** `e_t = emb0[x_t] + emb1[x_{t-1}] +
emb2[x_{t-2}] + pos[t]`; the shift tables have a 257th PAD_ROW so the
two positions shifted in at the sequence start never read a legal byte
(`embedding.py:19-34`; the pad law β€” padding with a real byte starved
address consumption, measured +.05..+.11 on repair). `pos` is a learned
absolute table `(1, 4096, 1024)` (`embedding.py:28`); there is no RoPE.

**CausalSplatHUB β€” the address.** Each book is an `AlephAddress`: K unit
anchors in D dims (`address.py:24-36`, with a `home` buffer holding the
birth copy for drift). The read is a cosine at temperature,
`u_k = cos(xΜ‚, Γ’_k)/Ο„` with Ο„ = 0.1 (`address.py:38-40`); the oriented
form is the 2K-softmax over the axes `(+a_k, βˆ’a_k)`, and the signed read
is its half-difference `w_k = sinh(u_k)/Ξ£_j cosh(u_j)` β€” inhibition
(negative w) is first-class; there is no softmax over choices, no
argmax, no top-k (`address.py:1-13,42-66`). The hub's q and k frames are
`Linear(d, D)` per book, orthogonal-init; v and o are shared `Linear(d,
d)` (`attention.py:64-79,106-109`). Construction warns when K > 2D β€” the
supply law from ROUND 5e and the mini-beatrix-1 hub census
(`attention.py:85-92`); 2s runs 64 @ 128, half of the lawful ceiling.

**CausalSplatHUB β€” books and budget.** With `n_const = 4` the four books
each own a codebook and q/k frames (`attention.py:64-79`); their
numerators and agreement masses are summed across books before the one
divide β€” composition by budget, never softmax over books
(`attention.py:245-254`; B4 measured comparative composition at βˆ’.10).
`n_const = 1` is the v1 layout with the same state-dict keys
(`attention.py:93-101`), which is how mini-beatrix-1 checkpoints still
load.

**CausalSplatHUB β€” the exact chunked scan (prefix memory).**
`_code_cat_qk` computes q and k for all books in one stacked GEMM,
folds the row-norm and Ο„ into one post-GEMM scale, and takes ONE fused
softmax over `cat([u, βˆ’u])` β€” the module's docstring names this a
kernel substitution, not a mechanism change: the softmax that exists is
over the 2K oriented axes of a single query, never over positions
(`attention.py:154-212`). `_scan_cat` splits the sequence into chunks of
C = 256 (16 chunks at ctx 4096), forms per-chunk `(2K Γ— d)` sums, takes
the exclusive prefix over chunks as a strictly-lower-triangular GEMM
with fp32 accumulation, adds the within-chunk causal affinity, and
divides the numerator by the scalar agreement mass `den`, floored at
`dtype_floor` (`attention.py:139-151,229-281`; `address.py:16-22`: fp16
flushes 1e-12 to zero, the measured landmine). Exactness is
chunk-independent (`forward_naive` is the oracle, `attention.py:320`;
fp reorder ~1.5e-06). Decode carries a constant-size state per book β€”
`{Ξ£ kβΊβŠ—v, Ξ£ kβ»βŠ—v, Ξ£ k⁺, Ξ£ k⁻}` β€” regardless of length
(`attention.py:284-318`); the generate path falls back to a sliding
window once the position table is exhausted because "the hub's
constant-size state cannot evict" (`alephlm.py:180-201`).

**The autocast trap.** `torch.einsum` sits in autocast's PROMOTE
category and `F.normalize`/`exp`/`softmax` on its fp32 list, so one fp32
operand dragged the whole scan to fp32 (`attention.py:167`); 0.7.2
(@2be28dd) cast the operands explicitly. Every earlier "bf16" splat run
had silently run fp32 scans; sdpa was unaffected β€” so every pre-0.7.2
splat-vs-sdpa wall-clock comparison favoured sdpa, and accuracy
verdicts stand (autocast einsum-promote law).

**The governor.** `minsep_project_` bounds `|cos(a_i, a_j)| ≀
cos(ΞΈ_min)` for every anchor pair by an exact symmetric geodesic
push-apart, largest violation first, projected to ΞΈ_min + 0.5Β°
(`governor.py:35-80`); `govern_model` collects hub and head codebooks,
runs one batched `bmm` slack check with one device sync, and projects
only the violating books (`governor.py:92-137`). It is a
post-optimizer-step projection, never an auxiliary loss
(`governor.py:11`); the trainer calls it every 8 steps after `opt.step`
and accumulates pair-pushes into `governor/hits_cum`
(`trainer.py:263-267,294-296`; `presets.py:99-105`: ΞΈ = 45Β°). Banks are
excluded by default (a 3-anchor book never crowds). The docstring
records the small-rig verdict it shipped on (gov25m: fires only when
needed, census tail cut 5.4Γ—, fragile-seed +.007, stable-seed +.002;
`governor.py:19`). Code-wins note: the journal's covariance program
describes a *metric* governor through the frame W_a; alephllm's is the
plain projective form on the D-space books, justified in place β€”
"Hub and head codebooks live natively in their own D-dim address space"
(`governor.py:14`), since the q/k frames project d β†’ D before the cosine
read (`address.py:38-40`).

**CausalSDPA in the twin.** `qkv = Linear(d, 3d)`, `o = Linear(d, d)`,
both orthogonal-init and bias-free; `F.scaled_dot_product_attention(q,
k, v, is_causal=True)` over 16 heads of 64 (`attention.py:24-42`);
the KV cache grows O(n) (`attention.py:43-61`). No QK-norm, no logit
softcap.

**AnchoredBank.** `Bank(x) = trunk(x) + Ξ£_k w_k(x)Β·Οƒ(g_k)Β·expert_k(x)`
(`bank.py:3`): a dense trunk `t_out(GELU(t_in(x)))`, three experts
`(3, 1024, 1024)` with `w_out` zero-initialised (the null path), gates
at βˆ’3.0, and dispatch `w = addr.signed(x)` through a 3-anchor book in d
dims. `disable_dispatch` returns the trunk alone β€” bit-identical to the
dense control at birth (the C6 null); "No balance machinery of any
kind" (`bank.py:10,41-50`).

**DualHead.** `logits = W_h h + Ξ³Β·W_s s(h)`, `s(h) = addr.signed(proj(h))`
with proj `Linear(1024, 256)`, a 256 @ 256 book, `W_s` zero-initialised
("weight-zero: self-starting") and Ξ³ = 1 frozen as an ablation knob
(`head.py:23-51`). The docstring carries the law that set it: on
mini-beatrix-1 over 8.4B tokens a gamma-gated branch DEADLOCKS while a
weight-zero bank elected into +2 bpb (`head.py:8-11`; gate-zero deadlock
law). `disable_aleph` returns `W_h h` alone β€” the head toggle.

**The special-token control plane.** Thirteen ids that no UTF-8 encoder
can emit β€” `{0xC0, 0xC1} βˆͺ [0xF5, 0xFF]`, the overlong leads and the
leads past U+10FFFF β€” carry structure inside vocab 256: DOC 0xFF, USER
0xFE, MODEL 0xFD, END 0xFC, SYS 0xFB, THINK 0xFA, DATA 0xF9, SEP 0xF8,
MODE 0xF7 (+1 ASCII payload), CUE 0xF6, ESC 0xF5 (+payload = 256
extended slots; 0x00 the null guard, 0x01 CANARY), RES0 0xC0, RES1
0xC1 (`special_tokens.py:20-34,50-71`; `assert len(SPECIALS) == 13`).
The proof is exhaustive β€” every codepoint 0..0x10FFFF encoded and
checked β€” and the Trainer runs it at every byte-craft launch
(`trainer.py:72-73`). Doctrine: DOC is appended by the packer after
every document in every phase from birth, identity-gated to the
byte-trigram tokenizer (`streams.py:59-62,209,355-356`); the chat frame `[SYS] text
[END] [USER] text [END] [MODEL] text [END]` (`special_tokens.py:112-136`)
is unforgeable (content is UTF-8) and appears only in the anneal
(`special_tokens.py:36-44`; chat-in-anneal law). The canary frame moved
to CUE/SEP because the old QRY=255 collided with DOC
(`canaries.py:20-29`); `recall_acc` re-baselines at 0.8.0. The trigram
embedding feeds each special into the next two positions' input
representations by construction.

## The recipe (pinned from source; unchanged cc89a87 β†’ b472815)

- **Split**: every parameter with `ndim ∈ {2, 3}` that is not an
  `nn.Embedding` weight rides Muon; everything else β€” the three byte
  tables, LayerNorms, bank gates, Ξ³, the head bias β€” rides
  `torch.optim.Adam(weight_decay=0.0)` (`optim.py:54-79`; "pure Adam,
  wd=0 β€” never AdamW", `presets.py:82`). Measured split for 2s: Muon 385
  tensors / 236,253,184 numel, Adam 107 / 872,765; the control's Muon
  set is 145 / 256,569,344 with the same Adam set. Code-wins note: the
  `optim.py:4-5,55-58` docstrings say positions ride Adam; the code
  sends `embed.pos` (shape `(1, 4096, 1024)`, ndim 3, not an
  `nn.Embedding`) to Muon (`optim.py:68`), verified on the meta device.
  The journal already records the code's behaviour.
- **Muon**: 5-step Newton–Schulz (a, b, c = 3.4445, βˆ’4.7750, 2.0315) on
  the momentum buffer after whole-matrix Frobenius normalisation
  `X/(β€–Xβ€–_F + 1e-7)`; plain momentum 0.95, no Nesterov, no shape
  scaling; 3-D stacks orthogonalised per slice (`optim.py:20-51`).
- **Learning rates**: Muon 2e-2, Adam 3e-4; `lr_scale = (step+1)/200`
  for 200 steps, then 1.0 forever (`optim.py:82-93`, `presets.py:80-83`).
  The tfevents read `train/lr_scale` 0.25/0.50/0.75 at steps 50/100/150
  and 1.000 from step 200 to the last log on both crafts, through both
  anneal phases: the anneal is a diet change, not a decay.
- **Clip**: `clip_grad_norm_(…, 1.0)` over all parameters; the logged
  `train/grad_norm` is the PRE-clip norm it returns (`trainer.py:244,
  287`). Because Muon normalises the momentum buffer before
  orthogonalising, its update magnitude is independent of gradient
  scale: clipping never changes the magnitude of a Muon step; it only reweights
  steps inside the momentum buffer. The Adam set (`torch.optim.Adam`,
  wd 0, default eps 1e-8; `optim.py:79`) is per-coordinate
  scale-normalised (`m/sqrt(v)`), so under a persistent clip its step
  magnitude is likewise unchanged and the clip only reweights the two
  moment averages (Muon is clip-blind; Adam is nearly so).
- **Precision and batch**: fp32 masters, bf16 autocast on CUDA, TF32 on
  (`trainer.py:14-15,65-66,239`); micro-batch 16 Γ— accum 4 Γ— ctx 4096;
  seed 1337 (`presets.py:97,199`); each micro-batch row is 4097 ids
  scored at 4096 positions.
- **Guards**: a non-finite loss or gradient raises before any optimizer
  step, weights untouched and the resume state not overwritten
  (`trainer.py:250`); the spike flag `loss > 2Β·EMA + 0.5` is logged
  only (`trainer.py:273-275,293`). Neither fired on either craft.
- **Cadences**: log 50, health census 500, eval and checkpoint 2000,
  fp8 every 5th checkpoint, TB upload 1000, val 262,144 tokens, 128
  canary episodes (`presets.py:88-96`).
- **Absent by design**: no QK-norm, no logit softcap, no z-loss, no
  weight decay, no dropout, no RoPE, no LR decay in any phase.

## The diet (all on one gauge: fineweb-edu holdout bpb)

| phase | dataset | budget | β†’ step | 2s bpb | control bpb | note |
|---|---|---|---|---|---|---|
| warmup_wikitext | wikitext-103 | 0.30B | 1,145 | 2.3626 | 2.1056 | sdpa led by 0.257; protocol pre-registered here |
| fineweb_main | fineweb-edu | 5.0B | 20,219 | **1.1172** | 1.1763 | the crossover; hubs +2.22 / banks +3.55 |
| fineweb_extended | fineweb-edu | 10B | β€” | β€” | β€” | DEFERRED, unspent on both |
| curriculum_s0 | curriculum-s0 | 0.7B | 22,890 | 1.2522 | 1.5047 | |
| REVIVAL | β€” | β€” | 24,860 | 1.2768 β†’ 1.2339 (op gauge) | β€” | BOUNDARY-WRITE; `pre_revival_step24860.pt` archived |
| curriculum_s1 | curriculum-s1 | 0.7B | 25,561 | 1.2544 | 1.3917 | first live head toggle in the lineage, +0.0258 |
| curriculum_s2 | curriculum-s2 | 1.0B | 29,376 | 1.2177 | 1.3938 | 2s grad-norm curriculum+anneal max 0.619 @26,750 |
| curriculum_s3 | curriculum-s3 | 1.2B | 33,954 | 1.2318 | 1.5317 | |
| curriculum_s4 | curriculum-s4 | 1.2B | 38,532 | 1.2356 | 1.5689 | both 2s mechanisms above +3.0 |
| curriculum_s5 | curriculum-s5 | 1.0B | 42,347 | 1.2504 | 2.1762 | control grad-norm median 126 |
| curriculum_s6 | curriculum-s6 | 0.8B | 45,399 | 1.2683 | 3.1940 | control max 41,070 @44,600 |
| curriculum_s7 | curriculum-s7 | 1.4B | 50,740 | 1.1883 | 3.1201 | |
| curriculum_s8 | curriculum-s8 | 0.8B | 53,792 | *1.0737* (synthetic gauge) / **1.1911** (cap) | 3.0810 | 2s row STRUCK; true ledger = `session_cap_step53792` |
| anneal_nochat | anneal-nochat | 1.0B | 57,607 | 1.1153 | 2.9270 | the pre-chat baseline; probe mean .389 |
| anneal_mix | anneal-mix | 1.0B | 61,422 | **1.1097** | **2.8846** | run best; probe mean .389 == pre-chat |

Phases and budgets: `presets.py:132-146` (the preset plan carries
anneal_mix at 2B deferred; the notebook's C6 cell rewrote it to 1B and
inserted anneal_nochat before it β€” "two-phase anneal activated: nochat
1B then chat 1B (plan of record 2026-08-31)" in both manifests' notes; the
hub copy of `beatrix_v2_colab.ipynb`, uploaded 2026-08-28T23:00Z with cells
C1–C5 and pinned to `geolip-alephllm @2a902b7` (0.8.1), predates the
amendment and carries no C6 cell),
`curriculum.py:657-663` (STAGE_TOKENS), `curriculum.py:666-689`
(append at runtime). Manifest order is not chronology: the S0–S8 phases
are listed after the anneals but ran before them, because
`current_phase()` activates the first `planned` phase and deferred
phases are invisible until flipped (`manifest.py:33-41`); count back
from the totals (16,101,408,768 βˆ’ anneal_mix's 1,000,079,360 lands on
step 57,607) rather than reading the list.

**The mixes** (`curriculum.py:614-655`; weights sum to 1): s0
tinystories .74, simple-wiki .20, aochildes .01, recall-synth .03,
counting-synth .02 Β· s1 perspective-synth .30, tinystories .28,
simple-wiki .20, cosmo-young .12, concept-synth .04, recall-synth .03,
siqa-narrative .02, aochildes .01 Β· s2 concept-synth .30, cosmo-young
.30, simple-wiki .12, tinystories .10, definitions .08, wikipedia-en
.07, recall-synth .03 Β· s3 rulechain-synth .32, proofwriter-prose .22,
simple-wiki .12, tinystories .10, wikipedia-en .08, cosmo-young .08,
concept-synth .04, recall-synth .03, babi-prose .01 Β· s4 arith-synth
.35, cosmo-young .32, simple-wiki .12, tinystories .08, rulechain-synth
.06, counting-synth .04, recall-synth .03 Β· s5 causal-synth .32,
atomic-flicker .25, tinystories .12, simple-wiki .10, gutenberg .08,
cosmo-young .07, recall-synth .05, siqa-narrative .01 Β· s6
tryfail-synth .32, tinystories .22, arith-synth .13, cosmo-young .10,
simple-wiki .10, causal-synth .08, recall-synth .05 Β· s7 tinystories
.10, cosmo-young .10, rulechain-synth .10, arith-synth .10, fineweb-good
.10, simple-wiki .08, atomic-flicker .08, causal-synth .08,
tryfail-synth .08, proofwriter-prose .08, recall-synth .05,
perspective-synth .04, babi-prose .01 Β· s8 definitions .25,
register-synth .25, simple-wiki .15, cosmo-young .12, wikipedia-en .10,
tinystories .09, recall-synth .03, siqa-narrative .01. Rails audited at
append time: MAX_EPOCHS 4.0, MAX_GENERATOR_SHARE 0.35, MIN_BALLAST 0.30
natural text (`curriculum.py:548-551,565-596`); holdouts enforced at
the generator β€” bAbI tasks 16/19, ProofWriter depth 5, rule-chain
depth 5, three-digit subtraction (`curriculum.py:26-31`). No chat
template in s0–s8.

**The anneal recipes** (`streams.py:68-77`): ANNEAL_MIX = fineweb-edu
.45, cosmopedia .20, tinystories .15, soda-dialogue .12,
beatrix-texture-sp .05 (the specials-native SYS/USER/MODEL/END
identity texture), recall-synth .03; ANNEAL_NOCHAT is the same list
minus beatrix-texture-sp, renormalised by MixStream β€” so the nochat
boundary is the exact pre-chat baseline on the same distribution.
MixStream draws one component per batch from a counter-seeded RNG
(`streams.py:375-404`): reproducible and resumable, but its state
carries no recipe fingerprint (fresh starts only across recipe
changes).

**The DOC plane on the diet.** The packer appends DOC after every
document (`streams.py:192-372`); the specials gauge reads `doc_bpb`
(bits at positions whose target is DOC) and `reset_bpb` (mean bits over
the 16 targets after each DOC) on the fixed val batches
(`instruments.py:310-352`). doc_bpb fell 12.83 β†’ 3.29 by 0.52B and
sits at 3.862 at the endpoint (control 5.422); reset_bpb 4.287 β†’ 2.130
(control 3.825). doc_count is 70 in every 2s and control report except the struck 2s
`curriculum_s8_step53792.json`, which reads doc_count 1612 (the synthetic
fallback stream) β€” the same 70 documents every time on the fineweb-edu gauge.

**The val gauge.** `_val()` builds 4 batches of (16, 4097) from
`build_stream(dataset, …, seed = 1337 + 9999, role="val")`
(`trainer.py:384-411`); for fineweb-edu the val region is the first
2,048 unshuffled rows, which the training stream skips
(`streams.py:56,279-282`), and `build_stream` routes every
`curriculum-*` and `anneal-*` val request to that same fineweb-edu head
holdout β€” "gauge continuity" in the source (`streams.py:423-447`). So
from fineweb_main onward every row of both crafts is one gauge; the
canon's CB2/CB3 "own slice" wording is struck by erratum
(`canon/splat_aleph_battery.md:583`). **The s8 fallback caveat**: at the
terminal curriculum boundary `current_phase()` is None (everything done
or deferred) and pre-0.8.5 `_val` fell to the `synthetic` stream, so the
2s `curriculum_s8_step53792` ledger is an incomparable artifact; 0.8.5
(@7d48328) makes `_val` fall back to the last DONE phase's dataset
(`trainer.py:397-401`), and the true end-of-curriculum ledger is
`session_cap_step53792`, taken at the same step on the restored gauge
(1.1911; banks +3.214, hubs +3.341, head +0.0149). The control, born
under 0.8.7, measured its s8 row on the repaired gauge; the s8 pair is
therefore not same-gauge and is struck from the paired count.

## The life (`reports/v2/`, `resume/`, `runs/`)

**Sessions.** The 2s craft ran five sessions on the one RTX PRO 6000
(Blackwell, 96 GB; 4.54 s/step, ~58k tok/s), each its own event file:
steps 50–8,300 (host 4d130c0e7351), 8,350–24,850 (91b9f3518593),
24,900–43,100 (e935248f0778), 43,150–53,750 (68304a2b8506),
53,800–61,400 (c2dc3d694638). The breaks are the session caps at 8,320
(fineweb, 2.181B), 43,130 (inside s6, 11.306B) and 53,792 (the s8 boundary
itself, the resumed session's first action) β€” `session_cap_step*.json`
is written when a session hits MAX_HOURS mid-phase β€” and the revival
halt at 24,860. Sessions are boundary-exact: the driver calls
`train(max_hours, stop_at_boundary=True)`, which returns after each
boundary checkpoint with `_last_boundary` set, and never auto-resumes a
manual stop (`_interrupted`; `trainer.py:170-184,328-335`; the 0.8.1
driver contract, minted after run0 rolled through its boundaries and
swallowed a KeyboardInterrupt).

**Resume.** `_restore` loads `resume/latest.pt` β€” fp32 model, both
optimizer states, the stream position, torch and CUDA RNG, and the
manifest snapshot embedded in the payload, which wins over the hub's
`manifest.json` (`trainer.py:110-153`; `checkpoint.py:131-175`). A
missing payload over a manifest with steps > 0 refuses to start fresh
(`trainer.py:110-120`). Every phase boundary archives an immutable copy
`resume/boundary_<phase>_step<N>.pt` (`trainer.py:469`;
`checkpoint.py:134-154`). Resume is not row-exact: the datasets shuffle
buffer (10,000 rows, `streams.py:292-293`) is not part of the saved
state, so each resume refills it (`streams.py:12`, the honesty note).

**The revival at 24,860.** The born-null head buried itself inside the
first 2,000 steps (0.032Γ— chance liveness at the first stored
checkpoint; β€–sβ€– ~6e-4; proj cosines ~60Γ— below chance β€” learned
avoidance; `repos/alephllm.md:1564-1643` β€” journal readings from
checkpoint analysis: the craft's TB carries no `head/liveness_ratio`
scalar before 0.8.4; the control's TB reads 0.052Γ— @2,000, 0.014Γ—
@12,000, 0.010Γ— @24,000). The BOUNDARY-WRITE op
(`revival.py:44-104`) ran on the halted run: proj ← uncentered
whitening-PCA of the final-norm outputs (sv floor 1e-3 relative);
codebook ← fresh `normalize(randn)` with min-sep 45Β° (0 pushes needed);
W_s ← fp64 ridge on the base head's CE residual, Ξ± swept on the held-out
half and folded in. `revival_step24860.json`: K 256, D 256, seed 13,
sv0 3676.66, svD 15.90, Ξ± 8.0, β€–W_sβ€– 481.53, fit_positions 65,536,
base_bpb 1.27682 β†’ revived_bpb 1.23391 (Ξ” βˆ’0.04290 held-out),
liveness 0.01027Γ— β†’ 0.99642Γ—, version 0.8.2, commit d6e1854. The
pre-revival resume was archived, Muon momentum zeroed for the three head
tensors, and the revived payload promoted on Phil's explicit go
(`repos/alephllm.md:1669`); thereafter `head_addr_frozen` freezes proj
and the head codebook by `requires_grad` alone, so optimizer groups and
resume state are unchanged and Muon skips them (`trainer.py:75-80`;
`optim.py:42-43`). `checkpoints/step_00024860.safetensors` is the
pre-revival bf16 weight; `step_00024860_revived.safetensors` (fp32) is
the post-write weight; neither the revived file nor the resume archives
appear in `manifest.json`'s checkpoint index.

**The anneal.** Activated 2026-08-31T09:54Z after s8; nochat done
14:42Z, chat done 19:31Z; the frame cost nothing in a bracketed phase
(probe mean .389 β†’ .389; val 1.1153 β†’ 1.1097).

**The 2s boundary ledgers** (`reports/v2/*.json`; bpb on the fineweb-edu
holdout; toggles = mechanism-off minus full):

| report | step | tokens | bpb_full | banks | hubs | head | doc / reset |
|---|---|---|---|---|---|---|---|
| warmup_wikitext | 1,145 | 0.300B | 2.36257 | +0.0365 | **+1.5042** | βˆ’2.3e-06 | 12.83 / 4.287 |
| session_cap | 8,320 | 2.181B | 1.20332 | +1.727 | +2.036 | βˆ’4.9e-07 | |
| fineweb_main | 20,219 | 5.300B | 1.11719 | +3.5527 | +2.2157 | βˆ’3.4e-07 | |
| curriculum_s0 | 22,890 | 6.000B | 1.2522 | | | ~0 (born null) | |
| curriculum_s1 | 25,561 | 6.700B | 1.2544 | | | **+0.0258** | |
| curriculum_s2 | 29,376 | 7.700B | 1.2177 | | | +0.0140 | |
| curriculum_s3 | 33,954 | 8.900B | 1.2318 | | | +0.0072 | |
| curriculum_s4 | 38,532 | 10.100B | 1.2356 | >3.0 | >3.0 | +0.0130 | |
| curriculum_s5 | 42,347 | 11.100B | 1.2504 | | | +0.0278 | |
| session_cap | 43,130 | 11.306B | 1.2614 | | | | |
| curriculum_s6 | 45,399 | 11.900B | 1.2683 | | | +0.0126 | |
| curriculum_s7 | 50,740 | 13.300B | 1.1883 | | | βˆ’0.0010 | |
| curriculum_s8 (STRUCK) | 53,792 | 14.100B | *1.0737* | *+3.396* | *+5.164* | | *0.843 / 1.889* |
| session_cap (true s8) | 53,792 | 14.100B | **1.19112** | +3.2144 | +3.3410 | +0.0149 | 5.052 / 2.469 |
| anneal_nochat | 57,607 | 15.100B | 1.1153 | | | +0.0101 | |
| anneal_mix | 61,422 | 16.101B | **1.10970** | +3.3115 | +3.3584 | +0.0123 | 3.862 / 2.130 |

Blank cells are not in the record consulted here; the head column is
complete. The warmup row is the first full-splat-under-AR ledger: with
all 20 hubs off the craft loses its entire attention (+1.50 at 0.3B),
which is what "load-bearing, not decorative" measures against the
mother's 3-hub form. `hidden_erank_floor` flags TRUE in every report from the 8,320 cap on (the
trainer's own TB census, on the first val batch, flags it from step 500)
(L19 pre-norm erank in single digits β€” the byte funnel; the post-norm
`nf(h)` erank reads 334/1024), `head_buried` FALSE from s1 on, den
floors 0.0 the entire run, zero loss spikes. Two "final val" readings
exist on the hub: the report ledger 1.10970 (the gauge of record) and
the manifest's checkpoint entry `val_bpb` 1.11403 at 61,422 β€” the
manifest column is the LAST PERIODIC EVAL's `bpb_full` (eval every
2,000; `trainer.py:444-447`), so it lags every boundary (fineweb 1.1156
vs 1.1172; s8 1.1833 vs 1.0737/1.1911); the manifest minimum is 1.1140
@60,000. Cite the report.

## The paired record (`mini-beatrix-2s-control/reports/v2/`)

**Derivation.** Every preset auto-generates a `-control` twin: the same
`AlephLMConfig` with `hub_layers = ()` (`presets.py:216-229`), so
`hub_K/hub_D/hub_const/hub_chunk` are carried but unused and every
block's attention is CausalSDPA. 0.8.7 (@b472815) gave twins their own
`TrainConfig` copy β€” the shared instance had let `head_addr_frozen=True`
leak into the control, a post-revival flag no birth recipe may carry β€”
and sets the 2s control to `head_addr_frozen = False` explicitly: the
birth recipe, born-null unfrozen head, which buries as the treatment's
did for its first 24,860 steps (`presets.py:221-235`). The control
inherits `governor="minsep"`; with no hub books it governs the head
codebook only (hits_cum 10 at warmup, fineweb and the 22,854 cap β€” the first
session β€” and 0 in every later session's report;
`crowd_check_extra_hits` 0). Same seed 1337: construction order embed β†’
blocks β†’ norm β†’ head after `torch.manual_seed` (`trainer.py:63`;
`alephlm.py:85-96`) makes the embedding draws identical between craft
and twin; the RNG streams diverge from block 0's attention onward
(a derivation from construction order, not a weight comparison).

**Protocol.** Declared at the control's warmup boundary, before the
outcome, while sdpa led (2.1056 vs 2.3626): the architecture verdict is
the paired boundary table across the full 16.1B matched budget; the
headline is endpoint val; secondaries are probe means at matched
boundaries and the doc/reset gauges; no verdict from any intermediate
lead in either direction (`repos/alephllm.md:1961-2002`; a control must
be able to fail). Completed unaltered through 13 paired rows. Budgets
are matched in tokens, not wall-clock: fused sdpa ran 71.9k tok/s on the
RTX PRO 6000 and 113k on the H100 against the eager scan's ~58k.

**The paired rows** (bpb_full, same step, same tokens, same gauge except
where struck; deficit = control βˆ’ craft):

| boundary | step | tokens | 2s | control | deficit | control bank toggle | control grad-norm median |
|---|---|---|---|---|---|---|---|
| warmup | 1,145 | 0.30B | 2.3626 | 2.1056 | βˆ’0.257 | βˆ’0.008 | |
| fineweb | 20,219 | 5.30B | 1.1172 | 1.1763 | +0.059 | 1.62 | 0.31 |
| s0 | 22,890 | 6.00B | 1.2522 | 1.5047 | +0.253 | 3.44 | 6.47 |
| s1 | 25,561 | 6.70B | 1.2544 | 1.3917 | +0.137 | 3.61 | 2.43 |
| s2 | 29,376 | 7.70B | 1.2177 | 1.3938 | +0.176 | 4.13 | 11.9 |
| s3 | 33,954 | 8.90B | 1.2318 | 1.5317 | +0.300 | 4.73 | 12.7 |
| s4 | 38,532 | 10.10B | 1.2356 | 1.5689 | +0.333 | 5.09 | 24.5 |
| s5 | 42,347 | 11.10B | 1.2504 | 2.1762 | **+0.926** | 4.36 | 126.4 |
| s6 | 45,399 | 11.90B | 1.2683 | 3.1940 | **+1.926** | 3.89 | 471 |
| s7 | 50,740 | 13.30B | 1.1883 | 3.1201 | +1.932 | 4.17 | 162 |
| s8 | 53,792 | 14.10B | *1.0737* | 3.0810 | STRUCK (gauges differ) | 5.48 | 145 |
| anneal_nochat | 57,607 | 15.10B | 1.1153 | 2.9270 | +1.812 | 5.64 | 167 |
| anneal_mix | 61,422 | 16.10B | **1.1097** | **2.8846** | **+1.775** | 6.11 | 215 |

Eleven same-gauge rows after the crossover, all in the craft's favour;
the endpoint gap is +1.775 at 16,101,408,768 tokens on both. The
control's own trajectory is the finding: 1.1763 at 5.3B β†’ 3.1940 at s6
β†’ 2.8846 at the end β€” a destabilised model at its endpoint, not a
trailing one. Its endpoint ledger: bank_off 8.99015 (toggle +6.1056),
head toggle βˆ’1.06e-05, `head_buried` TRUE at every row from fineweb on,
doc_bpb 5.422, reset_bpb 3.825; probes p0 .200 p1 .333 p2 .267 p3 .333
p4 .300 p5 .433 p6 .233 p7 .433 p8 .333 against the craft's .367 .367
.600 .200 .333 .567 .333 .333 .400 β€” ties at n = 30 (SE of a difference
.126). The control's bank dispatch entropy fell through the curriculum
(`collapse/dispatch_entropy_L5`: .94 at the s0 census, .75 @30,000, .48
@35,000, .22 at the s5 census; L0 .75 β†’ .47 @30,000; layer minimum .14
@42,500), ahead of the >30 grad-norm-median onset at 38,000.

**The destabilisation facts** (from the hub tfevents, `train/grad_norm`
= pre-clip): the control first crossed the clip at step 17,600 (4.61B,
inside fineweb, on the RTX PRO 6000, while still leading); 813 of 824
logged curriculum+anneal steps clipped (98.7%); 38 steps above 1,000;
max 41,070 @44,600; the > 30 onset at bin 38,000 (late s4) and > 100 at
40,500 (mid-s5) inside one event file. The 2s craft: 0 of 1,225
logged steps from step 200 on above the clip (the only reading above 1.0 is
step 50, 1.063, inside the 200-step LR warmup); max 0.760 @1,300 after the
warmup boundary, and 0.619 @26,750 (s2) over the 824 curriculum+anneal steps. The spike
detector and the non-finite guard never fired on either craft. Under
Muon the clip braked nothing in the Muon group (qkv/o, the position
table, the head); the escalating norm is a sharpness signal, not a
throttled step.

**The grade and its caveats.** The instance holds: the all-sdpa twin is
a destabilised control under the splat-tuned recipe, one craft per arm
(S-1802 INSTANCE). The general claim β€” softmax attention is inadequate
for this model's attention requirement β€” is a CANDIDATE (S-1803) behind
confounds stated as measurements: (a) the recipe was tuned on the splat
craft and carries none of the field's softmax stabilisers (QK-norm,
softcap, z-loss, weight decay, decay), and the signature β€” clip-engaged
smooth degradation, entropy and rank collapse, no NaN, onset on plain
prose while leading β€” is the documented softmax logit-growth mode;
(b) n = 1, no bar, +20.3M parameters in the losing arm; (c) shape: the
mother null β€” mini-beatrix-1 (13 sdpa + 3 hubs, d768) under the
identical TrainConfig (git cc89a87..b472815; the manifests record no
train_config) through the same nine stages at the same budgets ran a
post-warmup grad-norm max of 0.883, 0 of 1,750 logged steps clipped
(`canon/splat_aleph_battery.md:955`; canon-cited, not re-verified against
the mini-beatrix-1 event files for this companion β€” her 88,508 steps /
26,102,071,296 tokens / 70.45 h do verify against
`mini-beatrix-1/manifest.json`) β€” with the nuance that v1 entered
s0 at 17.3B tokens after 15B prose and a 2B anneal, the control at 5.3B;
(d) the aleph-addressed bank sits in both crafts, its dispatch collapse
precedes the escalation, and no sdpa + dense-FFN arm exists at any
scale; (e) the 4096Γ—1024 position table on WD-free Muon at 2e-2 forever;
(f) house Muon is not reference Muon; (g) host and row-order
asymmetries. One gauge (val bpb; probes are ties); the s8 pair struck;
three hosts. dist-e002 (vision, two seeds) remains the only Law-E
splat-vs-sdpa endpoint, and it is a tie.

**Provenance of the three hosts.** RTX PRO 6000 from birth to the 23.5 h
cap at 22,854 (event file 50–22,850); a Colab H100 80 GB from 22,854
(~2.3–2.4 s/step) through s0–s8 (22,900–53,750), 36 steps before the s0
boundary, with the shuffle buffers refilled; a session 53,800–56,000
follows the 53,792 cap in the H100 session's own host and process (event
file `…0a706d592fec.620.1`, 20:01–21:35Z, ~2.3 s/step, 114k tok/s); a third
host (2b1783ef9e94) opened 2026-09-03T01:41Z from the step-56,000
checkpoint at ~3.6 s/step and ran both anneal rows (56,050–61,400; two
88-byte event files are aborted starts) β€” a replay of up to 999 steps at
that restart is a hedge on the 1,000-step TB-upload cadence, not a hub
reading (the H100 process's last event is 21:35:20Z, the step-56,000
checkpoint landed 21:35:33Z and its manifest 21:36:06Z, the third host
opened 01:41:15Z; the hub can neither confirm nor refute a replay), and
it left no cap report.
The canon's "on the H100" lines for boundaries 11–12 are wrong by
erratum (`canon/splat_aleph_battery.md:1008`). The escalation began
pre-resume on the RTX PRO 6000; a 36-step data-order change cannot make
a 0.25 bpb gap on a fixed eval.

## The boundary report (`reports/v2/`) β€” schema

Written by the notebook's `boundary_report(run, tag)` cell to
`reports/v2/{tag}_step{step}.json`, tag = the phase that just finished
or `session_cap`:

- `tag`, `step`, `tokens` β€” `tokens` is `manifest.tokens_seen` (new
  in the v2 record).
- `probes` β€” `{p0_grounding, p1_self_other, p2_difference, p3_logic,
  p4_arithmetic, p5_causal, p6_learning, p7_composite,
  p8_articulation}`, each `{acc, families{…}, n: 30}`; byte-NLL argmin
  over the options, fp32, no sampling (`probes.py:191-221`); holdout
  families p3:d5 and p4:sub3 gauged from time zero (`probes.py:171`).
- `census_flags` β€” `hidden_erank_floor` (any block-output effective
  rank < 0.05Β·d = 51.2), `anchor_merge` (any pair |cos| > 0.99 in a
  bank/hub/head book), `dispatch_collapse` (bank dispatch entropy
  fraction < 0.10), `den_floor` (hub den floor_frac > 1e-3),
  `head_buried` (liveness < 0.1; added at 0.8.2 β€” absent from the 2s
  warmup_step1145, session_cap_step8320, fineweb_main_step20219 and
  curriculum_s0_step22890 reports, present from s1; present in every
  control report),
  `codebook_erank_floor` (bank codebook erank < 1.5)
  (`instruments.py:150-178`). The census sample is `(2, min(1024,
  ctx))` random bytes in 0..254 (`torch.randint(0, 255, …)`, so DOC never appears in the census sample) in the notebook writer; the trainer's own census
  uses the first val batch (`trainer.py:371-374`).
- `ledger` β€” `bpb_full`, `bpb_bank_off`, `bpb_head_aleph_off`,
  `bpb_hub_off` (only if any block is a hub β€” the control's ledger has
  five keys), and `toggle_<x> = bpb_<x> βˆ’ bpb_full`; mean CE over the
  fixed val batches / ln 2 (`instruments.py:187-212`). No `w_s_norm`
  field (the mb1 schema had one).
- `special` β€” `{doc_count, doc_bpb, reset_bpb}` (`instruments.py:
  310-352`); None on BPE crafts.
- `governor_hits_cum` β€” the session's cumulative pair-pushes; the
  counter is a Trainer attribute defaulting to 0 (`trainer.py:266`),
  not persisted in the manifest or the resume payload, so it resets
  every session (103,951 @1,145; 1,304,497 @20,219; 70,747 at s1 after
  1,604,488 at s0; 0 at session_cap_53792; 776,450 @61,422).
- `crowd_check_extra_hits` β€” pushes from an on-demand `govern_model` at
  report time (415 @20,219; 709 @61,422; 0 on the control).

Other report kinds in the same directory: `revival_step24860.json` (the
op record above, no probes/ledger β€” chart code must skip it) and
`cultivation_{A_born_null,B_revival_birth,C_matured_transplant,
D_live_address_only}.json` β€” the C7 head-cultivation screen, 1,200
steps at seed 1337 with gauges at 300/600/900/1200 `{toggle, w_s_norm,
head_s_norm, head_s_chance, head_liveness_ratio, head_buried}` and,
for B and D, a `revival` dict (Ξ± 16.0, fit 16,384, base 8.336 β†’ 5.389).
Endpoint toggles: A βˆ’5.3e-06 (buried, liveness 0.045); B +3.496
(liveness 1.125); C +0.0922 (β€–W_sβ€– 520.5); D βˆ’7.1e-05 (liveness 1.037,
not buried, no function) β€” a live address alone does not carry
function; a revived head at birth does.

**The manifest** (`manifest.py:16-110`): `preset`, `model_config` (the
full `AlephLMConfig`), `created_utc`, `updated_utc`, `steps`,
`tokens_seen`, `wall_hours`, `phases[{name, dataset, planned_tokens,
tokens_done, status ∈ planned|active|done|deferred}]`,
`checkpoints[{step, tokens, kind ∈ safetensors|resume|fp8, path,
val_bpb, utc}]`, `data_state{dataset, rows_consumed, epoch}`,
`notes[{utc, msg}]`. 2s: created 2026-08-27T00:35:31Z, updated
08-31T19:37:50Z, 142 entries (59 safetensors / 24 fp8 / 59 resume β†’ 46
distinct bf16 paths). Control: created 08-31T21:26:32Z, updated
09-03T07:16:38Z, 136 entries β†’ 44 bf16. Neither records a train_config.

**Checkpoint kinds** (`checkpoint.py:102-155,187-195`): bf16 safetensors
every 2,000 steps and at every boundary, every state-dict tensor
including the `addr.home` buffers (so the file's numel, 237,908,285,
exceeds the parameter count by 782,336); fp8-e4m3 every 5th checkpoint
or final, 2-D+ tensors with numel > 4,096 stored with a per-tensor fp32
scale `amax/448` under `<key>.scale`, small params kept bf16, metadata
"inference/testing only" β€” never train from these; `resume/latest.pt`
fp32 with the manifest embedded, overwritten at every checkpoint and
archived at boundaries. Hub uploads retry three times and never crash
training; downloads distinguish genuine absence from network trouble
and raise on the latter (`checkpoint.py:29-100`).

**TensorBoard tags** (`trainer.py:283-296`; `instruments.py:215-260`;
314 tags on the craft, 212 on the control): from the loop
`train/{loss,bpb,grad_norm,lr_scale,tokens,tokens_per_sec}`,
`collapse/loss_spike`, `governor/hits_cum`, `sys/vram_gb`; from the
census per layer i `erank/hidden_L{i}`, `erank/hub_consumed_L{i}`,
`erank/hub_codebook_L{i}`, `erank/bank_codebook_L{i}`,
`cv/bank_load_L{i}`, `cv/hub_usage_L{i}`, `drift/bank_L{i}`,
`drift/hub_L{i}`, `sign/bank_frac_neg_L{i}`,
`collapse/dispatch_entropy_L{i}`, `collapse/den_floor_L{i}`,
`gates/L{i}_e{k}`; head `head/{gamma,w_s_norm,s_norm,liveness_ratio,
consumed_erank}`, `erank/head_codebook`; `collapse/flag_{…}` for the six
flags; `toggles/{bpb_full,bpb_bank_off,bpb_head_aleph_off,bpb_hub_off,
toggle_bank_off,toggle_head_aleph_off,toggle_hub_off}`; from the full
eval `canary/{recall_acc,wrongpair_frac,noretrieval_frac}` and
`special/{doc_count,doc_bpb,reset_bpb}`. The control lacks every hub
family; the archived run0 file lacks `head/liveness_ratio`,
`head/s_norm`, `special/*` and `flag_head_buried` (pre-0.8.0 specials;
the `head_buried` flag arrived at 0.8.2 @d6e1854 and the `head/s_norm` +
`head/liveness_ratio` TB scalars at 0.8.4 @a690ea4).

**`archive/run0-nospecials/`.** The pre-specials attempt, archived whole
2026-08-27T00:16Z: its manifest (created 08-26T20:50:18Z, steps 2,537,
tokens 665,059,328, wall 3.22 h, warmup done at 1,145, fineweb_main in
progress), bf16 checkpoints 1,145/2,000/2,253/2,537, fp8 2,253/2,537,
`resume/{latest,boundary_warmup_wikitext_step1145}.pt`, one event
file, and a report at the doubled path
`archive/run0-nospecials/mini-beatrix-2s/reports/v2/warmup_wikitext_step2253.json`
β€” a late-tagged fineweb report written on interrupt (stale tag, doubled
path: the 0.8.1 driver-contract bug) with probes, five census flags and
governor fields but no `ledger`/`special` block. Code-wins note: the
manual's RIDER 9 says run0 "halted at step 2000"; the archived manifest
says 2,537 (train() swallowed the interrupt and the driver auto-resumed
~19 minutes; `repos/alephllm.md:1408`). The hub wins: 2,537.

## The AutoModel (AbstractPhil/mini-beatrix-2s)

Thirteen files: `README.md`, `config.json`, `modeling_minibeatrix.py`,
the vendored `address.py`, `alephlm.py`, `attention.py`, `bank.py`,
`embedding.py`, `governor.py`, `head.py`, `presets.py`,
`model.safetensors` (475,880,498 B; 593 bf16 tensors, numel
237,908,285, every key prefixed `model.`, metadata `{tokens: 16.101B,
step: 61422, format: pt}`), `.gitattributes`. No tokenizer files: input
ids are raw UTF-8 byte values. The vendored files are byte-identical to
`geolip/alephllm/model/*.py` and `presets.py` at 0.8.7 except one
import line (`alephlm.py:30`, `..presets` β†’ `.presets`). `config.json`
is the craft's `model_config` plus `model_type "mini-beatrix"`,
`auto_map` to `MiniBeatrixConfig`/`MiniBeatrixForCausalLM`,
`torch_dtype "float32"` (the file is bf16; the loader upcasts on
request), `use_cache false`. The wrapper (`modeling_minibeatrix.py:
21-99`) holds `self.model = AlephLM(cfg)`, forces `hub_ckpt = 0`, makes
`_init_weights` a no-op ("AlephLM initializes itself; loader must not
re-init"), truncates to the last `context` positions, returns
`CausalLMOutputWithPast(loss, logits)` with HF label semantics, and
carries no KV cache β€” HF `generate()` recomputes the prefix each step;
the inner `AlephLM.generate(idx, max_new, temperature, top_p,
use_cache=True)` uses the constant-size hub state.

**The parity gate.** The ship gate β€” strict load, logits parity 0.0
against the geolip code path, `generate()` ok β€” is journal-recorded
(`repos/alephllm.md:1840-1846`; `history/timeline.md` 2026-08-31;
`MIRROR.md` step 2 in the AlephLLM repo), not hub-shipped: no parity
script exists on either hub repo or in the package. Re-verified on CPU
by the drafting workflow (torch 2.11.0, transformers 5.13.0, no geolip
installed; not re-run in the hub-side pass, which found the hub
consistent with these readings β€” TB `head/w_s_norm` 515.13 at step
61,000, 593 bf16 tensors, numel 237,908,285): 593 file keys == 593 model keys, parameter count
237,125,949, β€–W_sβ€– 515.918, Ξ³ 1.0; the inner cached decode equals the
parallel path (`torch.equal` True); logits parity against geolip was
not recomputed. Two notes for the reader: the model card's lineage line
says alephllm 0.8.6 while the vendored files are the 0.8.7 mirror
(commit 90a06b75, 2026-08-31 21:11 β€” the `presets.py` carries the 0.8.7
twin-isolation block); and the card's "17 reports" counts the 16
boundary/session reports plus the revival op β€” the prefix holds 21
JSONs with the four cultivation arms.

**Load and evaluate** (the steps below were executed by the drafting
workflow; the numbers are from that run and were not re-run in the
hub-side pass):

```python
import math, torch
from transformers import AutoModelForCausalLM
m = AutoModelForCausalLM.from_pretrained("AbstractPhil/mini-beatrix-2s",
                                         trust_remote_code=True).eval()
ids = torch.tensor([list(text.encode("utf-8"))])          # bytes in
bpb = m(input_ids=ids, labels=ids).loss.item() / math.log(2)
# toggle ledger on the inner model (positive delta = mechanism carries function)
core = m.model
full = core(ids, labels=ids).loss / math.log(2)
bank_off = core(ids, labels=ids, disable_bank=True).loss / math.log(2)
hub_off = core(ids, labels=ids, disable_hub=True).loss / math.log(2)
head_off = core(ids, labels=ids, disable_head_aleph=True).loss / math.log(2)
# generation: HF path (no cache) or the inner cached decode
out = core.generate(ids, max_new=40, temperature=0.0, use_cache=True)
print(bytes(out[0].tolist()).decode("utf-8", errors="replace"))
```

On a 227-byte English snippet this read 0.9446 bpb full, +3.872 bank
off, +3.925 hub off, +0.0156 head off; greedy from "The history of
astronomy begins with the" continued " study of the sun and the
planets. The s". Chat: wrap raw bytes in 0xFB SYS / 0xFE USER / 0xFD
MODEL / 0xFC END (`special_tokens.py:112-136`). Training checkpoints
load into the same wrapper after prefixing every key with `model.`, or
into a bare `AlephLM(cfg.to_aleph())`; fp8 files must be rehydrated
first (`checkpoint.py:187-195`). What the AutoModel cannot reproduce is
the gauge of record: the fineweb-edu holdout needs
`geolip.alephllm.data.streams.build_stream(dataset, tok, 4096, 16, seed
= 1337 + 9999, role="val")` and 262,144 tokens (4 batches of 16 Γ— 4096),
then `toggle_ledger` and `special_token_gauge` over those fixed batches
(`trainer.py:384-411`; `instruments.py:187-212,310-352`).

## The process that made 2s different (dated)

**The mother, measured (2026-08-12 β†’ 08-27).** mini-beatrix-1 was built
with 13 sdpa blocks and three hubs at layers 4/9/14, each a single
512-anchor book in D = 32 (`git show cc89a87:presets.py`), full-width
banks holding 67% of the mass, and a 512 @ 32 head. Two post-mortems set
the 2s agenda: the 08-25 hub census β€” 16Γ— the K ≀ 2D supply, 333/646/181
duplicate anchor pairs at |cos| ~1.0, consumed erank 2.2/3.7/10.8 β€” and
the 08-27 autopsy of the shipped weights, W_s exactly 0.0 after 8.4B:
the "head election" lore retracted, the head never carried function
(`repos/alephllm.md:1586`; `history/plans/2026-08-26_mini_beatrix_v2_shape.md`).
A third: the v1 anneal (2B, chat template inside, before the school)
baked the chat frame into the core irreversibly β€” the chat-in-anneal
law (2026-08-15) that later dictated the bracketed two-phase anneal.

**Why every block (08-23 β†’ 08-26).** Phil's directive: "the entire model
to be splat attention". The record's support was dist-e002 β€” cured
splat in all 12 ViT-Ti blocks ties sdpa at matched params and matched
wall-clock on two seeds (R@1 .0545 vs .0562), late placement edging
(R@5 +.0128, outside the bars); the untested bet, flagged in the plan,
was that full-splat CAUSAL had never trained. The payoff row was the
warmup ledger (+1.50 with the hubs off at 0.3B) and the endpoint
(+3.36).

**The shape (08-24/25 β†’ 08-26).** ROUND 5e's shape ladder: 8 Γ— 256 lost
4 of 4 paired against 12 Γ— 128, the wide model seed-fragile, its
crowding tail (79% of layer-1 heads over the 25Β° floor on one seed)
naming the chain width β†’ crowding β†’ positional ranking flips β†’ deficit;
hence SUPPLY K ≀ 2D (`STATUTES_INDEX.md:53`) and depth over width. B2's
product code (independent books compose, .859 β†’ .955 monotone in
members) gave the multi-book form; the rotary Γ— anchor flip analysis
gave governability D β‰₯ 128 (Ξ³* 32Β° at d512, 45Β° at 256, unreachable at
64). The arithmetic lands on 4 Γ— 64 @ 128 (0.5Γ— supply, 4Γ— headroom
against v1's 16Γ—), L20, d1024, ctx 4096 (splat's wall-clock crossover
~2k; below 4k a full-splat trunk pays attention's price without the
O(L) payoff), banks narrowed to ff 1024, head 256 @ 256. The 849M
sibling (L32, ctx 8192, 16 Γ— 256 @ 256) was designed the same session
(`presets.py:161-183`).

**The governor from birth (08-24 β†’ 08-26).** Phil's proposal β€”
"a middleman to control a min/max space that drift can occur to
guarantee there's always enough space between the anchor points" β€” was
confirmed in the math: for a crowded pair the static logit gap is
quadratic in separation while the positional oscillation is linear, so
small separation flips weight rankings along the sequence; separating
an already-crowded trained book leaves its flip pattern bit-identical,
so min-sep is preventive, not curative β€” run it from birth. Rung 1 ran
bit-identical to the ungoverned run (raw books never crowd; the
crowder was the frame W_a); gov25m fired on the fragile seed only,
harmlessly. Shipped as a post-step projection, 45Β°, every 8 steps
(`governor.py`, `presets.py:99-105`). In-mission it ran hot β€” ~120
pushes/step at step 1,000, ~84–105 sustained through fineweb, never
decaying β€” with every function gauge healthy; the ΞΈ ladder 35/40/45 for
K = 64 @ D128 is an open rung, and the preset comment's "45 at D=256"
does not itself justify 45Β° at D = 128.

**The kernel campaign and the pivot (08-26, one day).** 0.7.0 at 10:41
(multi-constellation hub, supply guard, governor wired in, the 849M
rescale, 2s as the screen craft). The Blackwell preflight OOMed
(`hub_ckpt`), then launched at 161.88 s/step; the per-op profiler
printed `qc torch.float32` under autocast β€” 0.7.2 at 12:27 (the einsum
promote trap; 4090 hub fwd+bwd 229.7 β†’ 178.8 ms). The dtype fix bought
~6%; the binding constraint was kernel shape β€” 0.7.3 at 13:14 (one
stacked GEMM, one fused softmax, prefix as a triangular GEMM; 65.3 ms,
3.5Γ—; peak 7.4 β†’ 1.9 GB; Blackwell 149 β†’ 69.7 s/step). Compile refuted
by measurement (bf16-backward NaN, and the pre-NaN projection 67 vs
69.7 s eager) β€” eager-only on Blackwell. Economics: 17.3B at 8k tok/s
is 24–26 days on the one card. Phil: "we can't train the large one
currently. Not until we work out a series of logistics problems." 0.7.5
at 13:43 (@73218bd): 2s is the mission, `hub_ckpt` 2 β†’ 0; launched at
4.54 s/step, 58k tok/s. "Not a bad start. We'll train this one." The
849M is shelved, not retired (its value-bottleneck relaunch lever
quantified at ~46 s/step).

**The format restart (08-26 16:43).** Phil: "We'll want a practical
array of them for usage, nothing small. We'll halt this one and start
over with the correct formatting." 0.8.0: the thirteen unreachable ids,
the exhaustive proof at every launch, DOC from birth, the frame only in
anneal, the canary collision caught; run0 archived whole, run1 fresh on
the clean prefix (manifest 08-27T00:35Z). DOC cost nothing β€” run1 train
bpb 1.49 @1,100 against run0's 1.494 @1,000 β€” and doc_bpb fell 12.83 β†’
3.29 by 0.52B. 0.8.1 the same day: the driver contract that made every
later boundary row a real boundary.

**The head saga (08-13 β†’ 08-29 β†’ 08-31).** Born weight-zero by law
(gate-zero deadlock, `head.py:8-11`); buried inside 2,000 steps on run1
(0.032Γ— chance at the first stored checkpoint, 0.014Γ— @12k β€” journal
readings from checkpoint analysis, not TB scalars; learned
avoidance β€” proj rotated into codebook-orthogonality while W_s grew to
norm 31 multiplying ~0); LS-ignite alone refuted (0.0006 bpb); the
governor exonerated (the ungoverned v1 buried deeper; the 45Β° floor is
free at birth). Candidate law at 2/2 crafts, 3/3 with the control: a
born-null aleph head racing a strong same-target linear base
self-buries within ~2k steps; the bank's self-start does not transfer
across competitor types. Phil ruled activation; the BOUNDARY-WRITE law
was minted (`revival.py:26`; `STATUTES_INDEX.md:67`) β€” a third
intervention category outside both the governor statute and the
no-balance-machinery law, permitted only at run boundaries or halted
resume points, always logged β€” and the deterministic op executed at
24,860. The first nonzero head toggle in lineage history landed at s1
(+0.0258, after 6.5B tokens of exactly 0.000); the settled read is a
durable, small, diet-sensitive niche in the band βˆ’.001..+.028,
band-exits upward on the binding-adjacent diets (s5 causal +.0278),
touching zero at s7 as bpb_full fell 1.268 β†’ 1.188.

**The recipe that never changed (08-12 β†’ 09-04).** Muon on the trunk
because the 08-10 validity battery on the AR bed read muon .8081 >
sgd_mom .7995 > adam .7157 > lion .5638, with the address ~20Γ— more
optimizer-fragile than sdpa (cross-optimizer spread .79 vs .037) and
schedules no-op-to-harmful (flat .714 > warmcos .596) β€” so the flat-LR
law; pure Adam on the rest by the 09-01 optimizer statute (Adam the
experimental baseline, Muon the trunk, AdamW never;
`STATUTES_INDEX.md:76`). `presets.py:80-84` is the same text at
cc89a87 (where it sits at `presets.py:65-69`) and at HEAD. The same recipe is the audit's confound (a).

**The diet (08-15 β†’ 08-31).** The nine stages and budgets are v1's
(0.6.0), placed before the anneal rather than after it (Phil,
2026-08-30: "Let her really build up that internal knowledge first";
`history/plans/2026-08-26_mini_beatrix_2s_mission.md`), fineweb_extended
deferred; the two-phase anneal (Phil, 08-31: "enable the anneal mix
without chat and the anneal mix with chat, we'll run without first,
then just train chat on after"; `streams.py:63-77`), 0.8.6 at 02:48.
The s8 terminal-gauge hole appeared at 04:57Z and 0.8.5 had already
closed it in code (08-30 22:03); the true ledger was re-measured at
09:53Z. Mission complete 19:31Z: 61,422 steps, 16.101B tokens, 78.33 h,
zero spikes; the HF outage at the final push was recovered by a Drive
rescue and retry.

**The twin (08-31 β†’ 09-04).** 0.8.7 at 14:10 (twin isolation, birth
recipe); the control born 21:26Z; the protocol declared at its warmup
boundary while sdpa led; the crossover at fineweb 5.3B and every row
after; the rank story as the mechanism claim (at step 4,000 the control
collapses early hidden erank to 5–9 of 1024 at L2–L4 (5.5 / 5.4 / 9.3)
while the craft reads 234 / 225 / 250 there and 150–396 across L0–L15
(`erank/hidden_L{i}`, TB census); screen scale reproduces it; rank β‰  function β€” the
control led val at 4k while running rank-5 layers); the H100 resume at
22,854; the grad-norm escalation rider at s5; Phil's claim held on
09-02 ("SDPA isn't an adequate representative of this model's
attention requirement. We can say that without question now."); the
third host from 56,000; the endpoint 09-03; the 12-agent audit on 09-04
(S-1802 INSTANCE, S-1803 CANDIDATE, the s8 strike, the mother null,
Muon clip-blind, the falsifier filed).

## Gauges, defined once

- **val bpb**: mean cross-entropy in bits/byte over 262,144 tokens
  (4 batches of 16 Γ— 4096) of the fineweb-edu reserved head slice β€”
  the first 2,048 rows, fixed, unshuffled, seed 1337 + 9999 β€” for every
  phase from fineweb_main onward, both crafts (`trainer.py:384-411`;
  `streams.py:279-282,423-447`; gauge continuity law). The warmup row
  vals on wikitext-103's validation split. Pre- and post-0.8.0 gauges
  differ for v1-era crafts (DOC rides the val stream).
- **toggle ledger**: bpb with one mechanism disabled minus full bpb β€”
  the causal contribution of banks / hubs / head aleph
  (`instruments.py:187-212`). Positive = the mechanism carries function.
- **specials gauge**: `doc_bpb` and `reset_bpb` in bits, read against
  the same val batches (`instruments.py:310-352`); `doc_count` 70 on
  every 2s-era report on the fineweb-edu gauge (the struck 2s s8 file reads 1612).
- **head liveness**: mean β€–signed readβ€– of real hidden states over the
  same book's mean on 512 random unit vectors β€” self-calibrating;
  `head_buried` = ratio < 0.1 (`instruments.py:144,176,356-382`).
  Both buried crafts sat at 0.003×–0.03Γ— chance.
- **probe accuracy**: byte-NLL argmin over the item's options, nine
  suites Γ— 30 items, holdout families d5 and sub3 gauged from time zero
  (`probes.py:171-235`). At n = 30 a between-craft difference has SE
  .126: the paired probe calls are ties.
- **train/grad_norm**: the pre-clip global norm returned by
  `clip_grad_norm_` (`trainer.py:244,287`), logged every 50 steps; under
  Muon it measures sharpness, not the applied step.
- **governor hits**: cumulative pair-pushes per session
  (`trainer.py:266`); a session-scoped counter, comparable within one
  event file only.

## Known caveats and open items

- The autocast einsum-promote trap voids every pre-0.7.2 splat speed
  verdict (fp32 scans under "bf16"); accuracy verdicts stand. Any
  autocast performance reading over einsum code is invalid until the
  dtypes are printed (`attention.py:167`).
- Muon is clip-blind (`optim.py:24`), and Adam's per-coordinate
  normalisation makes it nearly so: `grad_clip 1.0` shrank the applied
  step of neither group on the control, only the weighting of steps
  inside each optimizer's buffers; the recipe carries no softmax
  stabiliser.
- The 2s `curriculum_s8_step53792` ledger is on the synthetic fallback
  and is struck; the same-gauge pair is owed by a zero-training
  re-evaluation of `resume/boundary_curriculum_s8_step53792.pt` on the
  0.8.7 gauge (T0b in `history/plans/2026-09-04_sdpa_falsifier_screen.md`).
  Hub-vs-journal note: the file on the hub reads doc_count 1612,
  bpb_hub_off 6.2378 (toggle_hub_off 5.164), doc_bpb 0.843 β€” agreeing
  with the trainer comment and the manual (doc_count 1612, hub_off 5.16 =
  the toggle; `trainer.py:397-399`); the file carries no dataset field,
  so the strike rests on the same-step cap discrepancy (doc_count 70,
  bpb_full 1.1911 in `session_cap_step53792.json`) and on the 1612-document
  count itself. The hub file's numbers win for what the file says.
- The control's third host from 56,000: a replay of up to 999 steps is a
  TB-cadence hedge, not a hub reading; no cap report; the 53,800–56,000 segment ran in the H100
  session's own process (event file `0a706d592fec.620.1`); canon CB11/12 "on the H100" wrong by erratum.
- Every resume refills the shuffle buffer (not row-exact); the control
  resumed three times, the craft four; MixStream state carries no
  recipe fingerprint.
- The 2s preset at HEAD carries `head_addr_frozen = True`
  (`presets.py:199-201`), the post-revival state: a fresh birth of the
  treatment preset under 0.8.7 would freeze a random proj and codebook
  from step 0, which is not what the shipped run did (born-null unfrozen
  under 0.8.1 for 24,860 steps, revived, then frozen). The control's
  override (`presets.py:235`) is the birth recipe.
- Stale text, code wins: `presets.py:18` "~233M" (built 237,125,949);
  `presets.py:14,166` "~873.7M" for mini-beatrix-2 (built 849,023,425);
  the training README's ladder row "mini-beatrix-2 | 1024/20/2048 |
  249.1M" is the retired v1 shape; the hub driver `beatrix_v2_colab.ipynb`
  is headed "mini-beatrix-2 β€” the governed full-splat mission" and names
  `mini-beatrix-2-control` while its CRAFT is `mini-beatrix-2s` (no
  control notebook exists on the hub β€” only this file and
  `mini-beatrix-1/beatrix_curriculum.ipynb`); `AlephLMConfig.hub_chunk` defaults to
  128 while the module's own default is 256 (`presets.py:52`;
  `attention.py:83`) β€” the config governs, and 2s sets 256.
- `governor_hits_cum` resets per session; the manifests record no
  train_config or package version β€” the mother null's "identical
  TrainConfig" is a git fact, and the craft's birth version 0.8.1 is
  inferred from commit dates (run1 created 08-27T00:35Z between 0.8.1
  on 08-26 and 0.8.2 on 08-29; the revival report records 0.8.2; the hub
  driver `beatrix_v2_colab.ipynb` pins `geolip-alephllm @2a902b7`, the
  0.8.1 commit).
- Owed instruments: the per-layer hidden-erank census of both crafts at
  the full-scale boundaries; the falsifier S-1803-F (Tier 0 on the 4090;
  a 40M twin screen with sdpa + QK-norm / LR/3 / dense-FFN / positions
  on Adam arms; pivot = resume the control at 20,219 through s0 at LR/3
  with QK-norm). Without it the general claim stays CANDIDATE.
- `article_assets_ft2/make_charts_ft2.py` sources chart 01 from the hub
  but charts 02–05 from local scratch paths, and chart 01 pairs the
  struck s8 rows unless filtered.

## Provenance discipline

Both crafts are resume-first: the manifest is embedded in the resume
payload (atomic consistency), a crash never overwrites
`resume/latest.pt` (`trainer.py:334-368`: any exception other than a
manual stop leaves the hub state untouched), an interrupted session
uploads before exit, and every phase boundary archives its own
immutable resume. The revival is auditable from the prefix alone: the
pre-write state (`resume/pre_revival_step24860.pt`), the op's
provenance (`reports/v2/revival_step24860.json`, with version and
commit), the pre- and post-write weights (`step_00024860` and
`step_00024860_revived`), and the first live row after it
(`curriculum_s1_step25561.json`). The struck s8 ledger stays public
beside the cap that supersedes it, as run0 stays public under
`archive/`, for the same reason the mother's rewind checkpoints do. The
recipe is pinned from source, not from the manifests. The AutoModel
vendors the model files verbatim and ships the mission-final weights
re-prefixed; the training checkpoints, not the card, are the control's
weights. Every refuted arm of the head-cultivation screen ships.

## Pointers

- Canon: `canon/splat_aleph_battery.md` β€” CONTROL BOUNDARY 1–12
  (522–889), ENDPOINT VERDICT (891), CLAIM AUDIT (901–1006: the s8
  strike 930–937, MUON IS CLIP-BLIND 936, THE MOTHER NULL 955–968,
  PROVENANCE RIDER 1008), ROUND 5a/5d/5e, B2/B4/B5.
- Statutes (`STATUTES_INDEX.md`): S-701 a control must be able to fail;
  S-801 supply law K ≀ 2D; S-1001 gate-zero deadlock; S-1002 born-null
  head self-burial 3/3; S-1003 BOUNDARY-WRITE; S-1201 optimizer family;
  S-1202 autocast einsum-promote; S-1801 the crossover; S-1802 the
  destabilised control (INSTANCE); S-1803 sdpa-inadequacy (CANDIDATE);
  S-1901 the specials plane.
- Manual: `repos/alephllm.md` β€” the 0.7.0 era (1180–1330) and RIDERS
  7–21b (1333–2081): pivot, launch health, specials and the run0
  archive, driver contract, the dead head, the revival trial, the
  boundary-write and promote, the head trend 14–14l, curriculum complete
  and the s8 artifact, the pre-chat baseline, mission complete, the
  ship-out, twin isolation, the pre-registered protocol.
- Plans: `history/plans/2026-08-26_mini_beatrix_v2_shape.md` (the
  shape arithmetic), `2026-08-26_mini_beatrix_2s_mission.md` (the pivot,
  the anneal-timing ruling, the two-phase amendment),
  `2026-08-24_covariant_address_program.md` (the governor),
  `2026-09-02_sdpa_inadequacy_claim_held.md`,
  `2026-09-04_sdpa_falsifier_screen.md`.
- Dockets: `history/dockets/2026-09-04_sdpa_claim_audit/`,
  `2026-09-01_ft2_article/` and `2026-09-01_article/tools/`
  (`writeback_cb*.py`, `writeback_endpoint.py`).
- Article: `articles/article_beatrix_ft2.md`; charts under
  `article_assets_ft2/` on the training repo.
- Code: AlephLLM HEAD 4f4b7d6 (0.8.7); the era's commits a63a29b
  (0.7.0) Β· 2be28dd (0.7.2) Β· 60ee496 (0.7.3) Β· 73218bd (0.7.5, the
  pivot) Β· 3ea3103 (0.8.0) Β· 2a902b7 (0.8.1) Β· d6e1854 (0.8.2) Β·
  7d48328 (0.8.5) Β· af9319c (0.8.6) Β· b472815 (0.8.7). No git tags
  exist; versions are commit subjects.
- The mother: `TECHNICAL.md` on the training repo (byte-identical local
  copy `articles/TECHNICAL_training_repo_beatrix.md`).