Notebook: discrete attention for the language base (M1)

This is the running table of results for the line that carries the project today. It asks whether a model that uses only integers and small geometric moves can learn to read earlier text well enough to predict the next word. The rows below run from 13 October to 19 October 2026. None of them is a trained language result: the best trained discrete model gets the right next word first in 463 of 14,287 development rows, while a simple count table (T2) gets 6,300.

flowchart LR
  A["14 Oct<br/>A2 pilot: rank counts up,<br/>loss total up"] --> B["15 Oct<br/>Wider shortlist at test time<br/>fails: 2,400 vs 4,894"]
  B --> C["18 Oct<br/>Row-parallel scoring:<br/>about 56x faster"]
  C --> D["18 to 19 Oct<br/>Four K16 runs:<br/>no keep"]
  D --> E["19 Oct<br/>Address cells at zero training:<br/>1,351 vs 127 of 3,847"]
  E --> F["19 Oct<br/>A8 dose stopped at<br/>batch 4,096 for diagnosis"]

The turning points in the rows below. Each box is one or more rows; the numbers are in the table.

The longer story of this line is on its line page. The mechanisms involved are described in address cells, admission, rank margin and relation read.

Terms used in the table

  • DEV panel. The open development panel of 14,287 rows. Each row is a context and the true next token. P_succ (the copy-successor subset) is 3,847 of those rows; it is the subset where the answer follows an earlier occurrence of the same token.
  • Admission. The read can only choose among a shortlist of candidate cells (K of them, usually K=8). A row is admitted when the true next token's cell is on the shortlist. A token outside it can never be chosen, so admission is a ceiling on top-1.
  • Top-1 / top-8. The true token ranked first / within the first eight.
  • Batches. Training steps. A full registered dose is 16,404 batches.
  • FIT. An independent review of a run's pre-registration sheet before spending compute. A FIT releases nothing by itself.
  • Control (C-R1 to C-R6, V2 and the like). A check built to fail if the instrument is wrong. A passing control is not a model result.
  • Status words (positive, negative, diagnostic stop, blocked) are defined in the format page.

Results

Sources: each row links its record. Counts and one-line descriptions come from archive/catalog.jsonl; numbers and bars were checked against the record itself. Records dated before 18 October 2026 are in archive/.

DateWhat ranNumberBarVerdictArtifact
2026-10-13Wired the flock read (a small neighbour set) and ternary gates into the discrete GPU model, then ran the finite construction controls on a rented GPU pod. No training.17 of 17 controls pass (11 route, 6 flock); 0 updates appliedAll finite CUDA construction controls pass; no training registeredpositive (construction only)discrete-flock-writer-integration
2026-10-13First integer-only GPU path: context, tree routing, rotation and a shared token-vector writer, with proposal-only learning. No update ran.11 of 11 construction controls pass on attempt 3 (6 s). Attempt 1 hit a CUDA out-of-resources stop after one pass.All 11 controls pass at the pinned source, after independent FIT reviewpositive (construction only)discrete-geometric-learning
2026-10-14A2 seed-1 pilot: the first 1,640-batch GPU training run of the discrete model, on one RTX 5090 (about $1.77).Top-1 17 to 82 of 14,287; top-8 173 to 1,169; loss total 13,816,032 to 13,884,032 (it rose); occupied writer cells 16 to 124Not decided (pilot)inconclusive (mixed; no mechanism verdict; receipt audit passes)a2-pilot
2026-10-15Standalone GPU runner for the six C-R control checks of the rank-hinge admission objective, over five restarts.Restart 5: all six controls pass; the run then halted at the timing gate with 99 timed batchesSix controls pass and 100 timed batchesdiagnostic stop (instrument gate, not a mechanism result)admission-rank-fixture-runner
2026-10-15Stage-A K-sweep: four saved checkpoints re-scored with 8 to 16 kept cells (36 points).Best target-admitted rows 2,400 at K=16 (1,920 at K=8)Gate G-A: some K reaches 4,894 target-admitted rows at batch 16,404 (bar 4,775 plus a 119-row half-width)negative (G-A fails; closes widening at evaluation time only)rung0-stage-a-sweep
2026-10-15The read-only instrument behind the K-sweep, built and run on a pod.K=8 controls reproduce the five registered counts exactly (top-1 149, target-admitted 1,920); best at K=16 is 2,400Same gate G-A (4,894)negative (FAIL_EVAL_TIME_WIDENING_ONLY; same result as the row above)stage-a-admission-instrument
2026-10-16First finite-control GPU run for counterfactual proposals.Stopped at an admission check: 90 registers in the loaded kernel against 88 in the compiled report; 0 proposals runZero register difference between loaded and compiled kernelblocked (instrument provenance defect, not a mechanism negative)counterfactual-controls-run
2026-10-16Finite controls repeated after the image-binding repair.40 proposals, 128 one-row endpoint evaluations and 16 typed refusals all matched; resource counts equal; no state changedAll finite control checks match, with zero applypositive (qualification, not a model result)counterfactual-controls-pass
2026-10-16Bounded GPU diagnostic of the slow proposal kernel.The baseline is recomputed for each of 16 candidates, about 47% of lane cycles; the writer is about 99.98% of cycles; 32 proposals with matching U/D lossesNone registered (diagnostic)positive (locates the waste; no speedup yet)counterfactual-decomposition-run
2026-10-16Checkpoint-0 timing of the propose phase, 3 timed batches per arm on a GPU.7.36 s per proposal; over 99.99% is the counterfactual scoring kernelNone registered (diagnostic)inconclusive (not a training rate or mechanism verdict)propose-subphase-diagnostic-run
2026-10-16K16 qualification, first attempt, on a pod.Stopped at step 0: the fixture runner failed to compile on CUDA (exit 101); no control, timing or training ranStep-0 builds, then G-Pre, C-R1 to C-R6, then a 100-batch timing, in orderblocked (build blocker, not a mechanism negative)k16-qualification
2026-10-16K16 qualification restart.Stopped before any GPU work: the control script and the evaluator disagreed on a JSON key nameSame ordered sequence; admission bar 4,894 unchangedblocked (source bug, not a result)k16-qualification-restart
2026-10-16K16 qualification restart 4.All three CUDA builds passed; the strict lint check (clippy, exit 101) failed on the control-runner code; step 0 failsThe lint gate runs with warnings as errors and was not weakenedblocked (source defect)k16-qualification-restart4
2026-10-16K16 qualification restart 5.Controls and untrained admission checks pass (K16-A seed 1: 14,287 of 14,287 rows admitted, 0 strict wins; K8 A seed 1: 5,680); timing recorded 99 batchesAdmission above 4,894 (met); 100 timed batches (missed by one)blocked (timing sample-count bug)k16-qualification-restart5
2026-10-17Attention preflight Battery 3: a zero-training GPU run of 26 steps measuring starting admission and 9 relation controls.P_succ admission 2,034 of 3,847 (full panel 7,500 of 14,287); 9 of 9 relation controls passP_succ admission at least 500positive (zero-training preflight; learned relation NOT_RUN)attention-preflight
2026-10-17Baseline-reuse path compared with the ordinary path on GPU driver 580.95.05.32 comparisons with identical losses; 64 proposals (56 successes, 8 status-8); 16 refusals; zero apply. Timing NOT_RUN.Identical results to the ordinary pathpositive (finite controls only)counterfactual-baseline-reuse-finite-pass
2026-10-17The same finite controls on a second GPU driver (595.71.05).32 pairs, 64 proposals and 16 refusals pass; zero applySame as the row abovepositive (qualifies the environment, not speed)counterfactual-baseline-reuse-driver-595
2026-10-17Host-only re-score of the Stage-A checkpoints, plus a context-free successor table (T2) as a comparator.K=8 to K=16 top-1 on 1,920 rows: 149 to 138. T2 gets 6,300 of 14,287 top-1; the trained Route artifact gets 149.Primary change must rise by the floor of 24 rows; a trained Relation artifact must beat T2inconclusive (the Relation arm was not run, so that row is UNAVAILABLE)host-diagnostics
2026-10-17Native Relation learning path: built the training schedule and tried six paid compiler-check pod runs.0 model updates; 6 pod leases; finite CUDA qualification NOT_RUNNone reachedblocked (operator and lint blockers)native-relation-learning-path
2026-10-18Dose 1, the first paired attention run (Relation arm and a frozen-zero control). The owner stopped it early to switch to a faster row-parallel driver.Relation reached 904 batches and the control 1,065 (both exit 143); 198 files, 237,872,396 bytes preservedRegistered bars unchanged and not testeddiagnostic stop (owner stop; not a verdict)attention-dose1-strategic-stop
2026-10-18The paired rows_v1 run reached its first check (Q1, 4,096 batches) in both arms.P_succ admission 2,034 to 225 (Relation) and 205 (control) of 3,847; full panel 7,500 to 829 and 767 of 14,287Q1 stop criteria: P_succ admission below 500 and below half of 2,034 (both fired)diagnostic stop (the read could not be judged)attention-rows-q1-diagnosis
2026-10-18Row-parallel GPU kernel for the exact counterfactual, compared with the ordinary kernel.Proposal time 3.843 s to 0.0691 s (55.6x) with equal losses; Route parity 684 of 684 on attempt 3; K16 shape 7.400 s to 0.1297 s (57.0x)Losses equal on every compared index; the negative control must fail (it did)positive (opt-in path; default unchanged)counterfactual-rows-parity
2026-10-18BVG-K stage C1: scoring 16 candidate moves in one GPU launch.5,130 of 5,130 coordinates match single-coordinate scoring; 16 coordinates cost 123.6 ms against 125.5 ms for one (16.25x versus 16 single calls)Parity on every coordinate; 2x reading threshold; the sabotage control must fail (it did)positive (scoring only; block apply is next)bvgk-rowsk-scoring
2026-10-18K16 rows-path qualification: controls, an untrained admission check and a 100-sample timing.Existing finite controls 25 of 25; C-R1 to C-R6 6 of 6; K16-A seed 1 admits 14,287 of 14,287 rows at top-1 19, with 0 strict winsAll qualification gates in order; bars unchangedpositive (qualification; no learning result)k16-rows-qualification
2026-10-18Documentation sync for the finished R-arm seed-1 run (K16-R).16,404 batches, 130 accepted updates; DEV top-1 101 and top-8 515 of 14,287None decided; two-seed reading pendinginconclusive (a sync of one run, not a verdict)r1-completion-docs
2026-10-18All four registered K16 runs (two writer objectives, two seeds) finished 16,404 batches.Accepted updates, target-admitted rows of 14,287, top-1: A seed 1 407, 2,237, 65; A seed 2 410, 3,167, 463; R seed 1 130, 12,089, 101; R seed 2 129, 12,466, 230Pending the registered two-seed interpretationinconclusive (at this record; settled by the 19 October row)k16-four-role-execution
2026-10-19Registered two-seed outcome call on the four K16 runs.R keeps admission (12,089 of 14,287) but collapses to about 20 occupied cells; A keeps 192 to 209 cells but admits only 2,237 and 3,167 rows; top-1 is 65 and 463 for AAdmission at least 4,894; top-1 at least 1,941; top-8 at least 4,775negative (OCCUPANCY_COLLAPSE_TRIGGERED; no keep; closes these configurations only; fresh slice sealed)k16-outcome-call
2026-10-19Injective-table pre-flight at zero training, plus BVG-K stage C2 qualification (which passes).P_succ admission 127 of 3,847 (full panel 427 of 14,287); occupied cells 256P_succ admission at least 500 (B3_init)diagnostic stop (the run was not dispatched; nothing trained)injective-preflight-and-c2-qualify
2026-10-19Address-structured injective cells at zero training: each token's cell is placed near its predecessors' cells.P_succ admission 1,351 of 3,847 (full panel 4,244 of 14,287), against 476 for a shuffled-packing control and 127 for the injective tableP_succ admission at least 500 (B3_init): passespositive (zero-update admission evidence, not learning)address-cells-preflight
2026-10-19A8 dose: both arms trained on address-structured cells, on 2 RTX 5090 GPUs for about 62 minutes (about $1.9).P_succ admission 1,351 to 551 for Relation at batch 4,096 (stop fired); the frozen-zero control fell to 857 and finished the doseStop if P_succ admission at the first check is below 500 or below half its start (675.5)diagnostic stop (learning moves ejected target cells from the shortlist; not a mechanism negative)a8-dose

What the rows say, in plain terms

  • The integer path is built and its finite controls pass. Those are construction results, and they say nothing about language.
  • Training moves the rank counts up but has not yet beaten the context-free count table. The best trained result in the rows is 463 of 14,287, against 6,300 for T2 and 1,226 for the unigram table (CHARTER.md, section 4.8).
  • The main obstacle found so far is admission: a token outside the shortlist can never be chosen. Widening the shortlist at test time did not fix it (row of 15 October). Placing cells by address structure fixed it at the start (1,351 against 127 of 3,847), but training then pushed target cells out of the shortlist (the A8 row).
  • Six of the 30 rows are blocked by tooling or build faults and are not results about the model. The row-parallel kernel (about 56x faster proposals with identical losses) is the largest measured speed change.
  • The next step recorded in the A8 row is a choice among three diagnoses by the PM: an acceptance rule that refuses moves which eject a target cell, a per-checkpoint cell census, or a finer checkpoint cadence. Each new training run needs a reviewed sheet and a typed owner release.

Not in this table

  • Plans, reviews, tooling and process records of the same period are not results. They are listed in archive/CATALOG.md and in docs/labs/ under this line.
  • The GPU rental blockers for the baseline-reuse timing runs (17 October) are filed under the compute-ops line, not here.
  • The float "starling" reads of 12 October are filed under m1-float-rung0, which has no notebook yet.

Go deeper