# PREREG-W2 · R-S139-IQ3, Strata v0.1.39 whole on the desktop's larger card, driven by the harness's own client (exploratory); R-LS-IQ3 a2 and R-LB-IQ3-n2 as the other registered choices

*Internal: names the desktop, the desktop's larger card, the desktop's smaller card, the laptop and local paths; not for shipping. Times are UTC from `date -u`. Strata
(github.com/Niko1221/Strata) is an unrelated project; strata2signal has no affiliation with it.*

| | |
|---|---|
| **Registered** | 2026-10-06T16:06:21Z (`date -u` on the laptop, read by `stamp-prereg-w2.sh` as it wrote this row), by the lead, before any W2 reading (the window opens 2026-10-07T07:30:00Z) |
| **Pins at registration** | `kit/SHA256SUMS` f8d0040349b596059fd908bbf27d41f36029922af7cd94e535b445aa3d2d201c (its `row.conf` = R-S139-IQ3); `kit/rows/R-S139-IQ3.conf` 3bcde21d83c4f6a4730c4f0dc83feb39f1b732c8d7c8c7b1a9228244227bbc91 (the engine built on the desktop: `strata` 2c57b7345fabed676bb75adccee9e18392c7e4a08fb9951a95ec913bf6bf18b0; THP at the stage `enabled=madvise defrag=madvise`; ENGINE_ENV STRATA_NO_LARGEPAGES=1); `kit/rows/R-LS-IQ3.conf` 27d6c2f6500d69040f4c94eea35c325b7faa80e47bfed9487ee1501488419606; `kit/rows/R-LB-IQ3-n2.conf` 0e87d227a85ce195b7040b91430589e4bf1373ce612b2ae72dd885485dbfb0d4; `kit/client/CLIENT-SHA256SUMS` f11815c678a09da7778425b29c1413edcd25b668a8dc302b8d271d4ee47a2464; PREREG-BANDS withheld-2026-09-29 |
| **Before any reading** | Yes, by construction: no W2 reading can exist before the window opens at 2026-10-07T07:30:00Z, and the stamp command refuses from that second on |
| **Drafted** | 2026-10-05 from 23:5xZ by the lane `desktop-w2-build` (Opus), from PLAN-W2 (beside this file), PLAN-v2 §2.5 (the rung, its residency receipts and its line), PREREG-BANDS (line 21), PREREG-W1 (its shape, its gates and its rules, carried), STRATA-DELTA-2 (C-9 to C-17), STAGE-NEW, A9-DRAFT (A9-2: S-NEW's 128K reading moved to this window) and window 2's kit (`BUILD.md`) |
| **Preamble** | `~/bench-archive/LANE-PREAMBLE.md` v3.1, sha256 `07986860dd5975c7…` |
| **Authority** | an operator, 2026-10-05 ~23:0xZ: "let's keep rolling with all your recs … we should have plenty of credits to keep the train rolling based on your recs" (D-20261005-145); the standing nightly window, "start running whatever benches we need to do on the desktop in that window each night" (D-20261005-096); "be sure we post outage banners on rulesage, amble, etc, when the desktop is being benched" (D-20261005-099); A9's go, "let's roll with your recs, thanks!" (D-20261005-143): S-NEW at 4K and 32K only on the laptop, its 128K reading moved to the desktop's window 2 |
| **Status** | **Exploratory.** Not a row of the Strata bench PREREG (`plans-2026-10-02/strata-bench/PREREG.md`): it adds no arm there, changes none of that file's bands or gates, and nothing it reads joins S-NEW's rows (A9-2: "whatever runs there is planned and registered with its own box, card and memory plan") |

---

## 0 · How it is registered

On the laptop, no sudo, once, before 07:30:00Z on 2026-10-07 (target: with READY, 02:00Z on 2026-10-07):

```
bash /workshop/bench-archive/plans-2026-10-05/desktop-window-2/stamp-prereg-w2.sh
```

It refuses at or after 2026-10-07T07:30:00Z; refuses if this file is already stamped; refuses a kit whose sums are
stale; refuses to register R-S139-IQ3 while `kit/rows/R-S139-IQ3.conf` is still the template (its stage-read facts
UNREAD), so the registered pins name the engine built on the desktop, the desktop's THP state and the engine's environment; then it
writes the stamp and the pins into the two draft rows above and prints `STAMPED PREREG-W2 <stamp>Z · sha256 <digest> ·
kit <pin> (row.conf = <choice>)` for the ledger row. A stamp taken with R-LS-IQ3 or R-LB-IQ3-n2 in `row.conf` while the
R-S139-IQ3 row is still the template (PLAN-W2's branches B, C and D, or a strata stage that read RED) is allowed: the
pins row and the line then say that R-S139-IQ3 is NOT registered under this stamp (window-2 audit fold F-2). So the
stamp comes after the stage's verdict. **Three choices are registered here**, so a branch or a fallback needs no second
registration under the clock: **R-S139-IQ3** (the rec rung, PLAN-W2 branch A), **R-LS-IQ3 a2** (window 1's row
repeated on window 2's kit, PLAN-W2 branch B-row or B-restore) and **R-LB-IQ3-n2** (the noise read, when R-S139-IQ3's
stage or daylight checks fail before the 04:00:00Z no-go). The window runs the one READY names.

## 1 · R-S139-IQ3: what the row measures

How fast Strata at `6f32ec070f23ced9f50e704d854d775da52591ab` (v0.1.39, `v0.1.39^{commit}`; STRATA-DELTA-2 CLEAR TO
STAGE, D-20261005-108) serves Qwen3.8-Flash-Next (ISTA-DASLab GSQ-RCO IQ3_S, the two shard files every the desktop row reads)
when its experts sit **whole on the desktop's larger card**, the desktop's NVIDIA RTX PRO 6000 Blackwell Workstation Edition (96 GB): the
case v0.1.39's #646 "zero-doorbell" decode path was written for and that the release notes call unmeasured on big
cards; the version behind the third-party post an operator quoted. Measured the way the laptop's Strata arms were: the
engine built from source on the desktop; its own `serve/server.py` started once by the desktop's system Python with the config the
harness's own `engines.strata_config` writes; the Strata bench harness's own client (`inner.py`, copied byte for byte)
sending the frozen `SLICES.json` prompts at 4,038 / 32,038 / 128,037 tokens, 256 greedy tokens, thinking off, the decode
timed on the client's clock (`engine.decode_chat_sse` + `finish_record`, `seatlib.RULES["engine_timing"]`). Order (the
laptop's): 4K × 3, 32K × 3, 128K × 3, one server start; the first run of each context after the load is labelled
`first-after-load`, and each context's figure is **the median of its 3 runs, the first-after-load run included** (the
laptop PREREG's A2).

**The 128K row is the one A9 moved off the laptop** (A9-2, D-20261005-143): S-NEW's speed a1 and a2 both STOPPED on the
laptop's 2 GiB MemAvailable guard, a2 on an idle laptop as its 128K slice began. Here it is R-S139-IQ3's own 128K
figure, exploratory, no band (§3), on another box and card, and it never joins S-NEW's rows.

**The laptop side it may stand beside, with its labels** (never a box comparison of like with like):
- S-NEW speed a2 (`records/S-NEW/speed/a2/inner-rows.jsonl`; a STOPPED attempt's finished rows, captioned
  "exploratory (v0.1.39)", A9-6): decode (client clock) 67.892 / 84.913 / 92.444 tok/s at 4K, 77.443 / 85.765 / 88.005
  at 32K; the laptop's hybrid regime (`expert cache 8073 slots` of 24,576, hit rate 87.5-93.1 %, 4.3-8.2 % of the routed
  experts read over PCIe, the engine log's own lines). If S-NEW speed a3 reads a RESULT before W2's morning read, a3 is
  S-NEW's figure of record and is printed instead (A9-6).
- No laptop twin at 128K (A9-2).
- an operator's quoted dual-card figures are a third party's claim on another box (D-095), never a column.

## 2 · R-S139-IQ3's identity

| Item | Value |
|---|---|
| Label | **R-S139-IQ3** (row id `w2-r-s139-iq3`, `kit/rows/R-S139-IQ3.conf`, ROW_KIND `strata`) |
| Box and card | the desktop; **the desktop's larger card only** (PCI bus withheld-2026-10-13; `CUDA_DEVICE_ORDER=PCI_BUS_ID`, `CUDA_VISIBLE_DEVICES=<the desktop's larger card's index>`, resolved from the bus id and checked by name by `window.sh`); the desktop's smaller card (the 3090 Ti) hidden from the process; the engine log's `strata generate: GPU 0: …` line must name the RTX PRO 6000 and be the only GPU line (§4) |
| Engine bytes | `strata`, built ON THE DESKTOP by `stage/desktop-strata-build.sh` from the laptop's clone copied byte for byte (`git rev-parse HEAD` = `v0.1.39^{commit}` = 6f32ec07, tree `27b0e86f…`, `status --porcelain --ignored` empty, 852 tracked files, no `.gitmodules`), with `build-strata.sh`'s flags (`-G Ninja -DCMAKE_BUILD_TYPE=Release -DSTRATA_ENABLE_CUDA=ON -DSTRATA_BUILD_TESTS=OFF -DCMAKE_CUDA_ARCHITECTURES=120 -DCMAKE_CUDA_COMPILER=<the staged 13.4 nvcc> -DSTRATA_GGML_DIR=<window 0's llama.cpp 3cf03257 clone>`) and window 0's RPATH fix (`-DCMAKE_BUILD_RPATH=<the staged 13.4 lib folder>`), target `strata`, `-j 8`, inside bwrap with no network and a read-only root; SYCL, HIP gfx906, SM60 and the ISA floor at their defaults (C-9). **Its sha256 is the stage's** (the desktop's `-march=native` on the EPYC 7532 makes it differ from the laptop's `2f315b46…`) and is written by `fill-row.sh` into `row.conf` and by the stamp into the Pins row above. The stage reads back: `ldd` resolving `libcudart`, `libcublas` and `libcublasLt.so.13` to the staged 13.4 folder, RUNPATH naming it, objdump: no zmm, VNNI or AVX-512 mask-register instruction outside the runtime-dispatched expert kernels (`strata::kernels::cpu`, which Strata's `CMakeLists.txt:936-938` compiles with `-mavx512*` on every build and the engine picks only on a CPU that has AVX-512, `cpu_avx512_ok`; the counts inside are recorded, and G0's AVX-2 line says which ran; window-2 audit fold F-1), `CMakeCache.txt`'s named keys (GGML_CUDA and GGML_VULKAN OFF among them), 0 build errors. The runtime: `libcudart.so.13.4.92` `7fb00519…`, `libcublas.so.13.8.0.4` `c0c5a5f1…`, `libcublasLt.so.13.8.0.4` `d3b51f22…` (window 0's pins); the engine's mapped libraries are recorded from `/proc/<pid>/maps` (`server-maps.txt`) |
| The server | the clone's `serve/server.py`, run by the desktop's system `/usr/bin/python3` (3.14.4 with numpy 2.3.5, jinja2 3.1.6, markupsafe 3.0.3, PyYAML 6.0.3 and regex, as PLAN-W1 read them at 2026-10-05T04:18Z; no pip on the 24/7 box), cwd the source tree, `PYTHONDONTWRITEBYTECODE=1`, the API key in `STRATA_API_KEY` (generated inside `inner.py`, never written). **Strata on Python 3.14 with numpy 2.3.5 is unverified**: the stage's no-engine checks (`server.py --help`, the server's own tokenizer load from the pack, `serve/runconfig.load` of a config shaped as the row's, the module versions; each in bwrap with no network) must read clean before READY, and the first load is the window's. FILE_SHA lines pin the server's thirteen files (the ast import closure of `serve/server.py`: `serve/{__init__,server,frontend,mcp,responses,runconfig,structured,telemetry,winjob}.py`, `tools/{gguf_reader,strata_tokenizer}.py`; `serve/chat_template.jinja`; `data/expert-profile.bin` `8f59b4aa…`); the rest of the tree is held by the row's git gate (§5) |
| Files | the IQ3_S pair, `…-00001-of-00002.gguf` `4c1eb2ce…` and `…-00002-of-00002.gguf` `316b46f3…` (window 0's pins); the pack `packs-6f32ec07/iq3_s` (nine files, byte-identical to `packs-36fa455e/iq3_s`; `dense.bin` `d2af3d83…` 1,538,035,200 B) and the MTP runtime `mtp/rt-6f32ec07` (four files; `experts.bin` `09398406…`), STAGE-NEW §3's table, copied by the stage and read back on the desktop |
| Client bytes | window 1's 22 files byte for byte (`lib.sh` CLIENT_FILES; `kit/client/CLIENT-SHA256SUMS` `f11815c6…`: the frozen snapshot of the harness's verified state, `snew-verify-receipts/MORNING-HARNESS-SHA256SUMS`, H-1 to H-5 installed), staged at `~/desktop-window-2/client/`; A9's harness change (installed 2026-10-05T23:10:30Z) touches none of the Strata speed path these files run (BUILD.md's client-path receipt) |
| The engine line | **the laptop's S-NEW line, pinned, never the box's** (PLAN-v2 §2.5, fold M-I-4): `--pack <pack> --native <shard 1> --ple-gguf <shard 2> --expert-profile <src>/data/expert-profile.bin --expert-cache auto --prefill auto --spec 4 --spec-min-p 0.5 --mtp <rt> --max-context 131072 --kv int8` (`records/S-NEW/speed/a2/strata-config.json` "args", flag for flag, with the desktop's paths), built by the client's own `engines.strata_engine_args` given the laptop's MemTotal (61.23 GiB) so it writes **no `--kv-resident`**, and refused before any launch unless it equals that line element by element; **no `--pool-workers`** (C-11); the line setup's rule would write for the desktop's own MemTotal (123.39 GiB: it adds `--kv-resident 32768`) is printed beside it in `row-meta.txt` and `strata-line.json`, never used; the engine's own worker count is read from its `N expert-pool workers` line (the threads figure); C-10's keys and flags absent; the #583 ring as shipped (C-13, labelled) |
| The config | the client's own `engines.strata_config`: `exe`, `args`, `cwd` (the source tree), `tokenizer` (the pack's), `model_name` `qwen3.8-flash-next-iq3_s`, `log` (the run folder's `strata-engine.log`), `lib_dirs` (the staged 13.4 lib folder), `port` withheld-2026-10-13, `host` loopback, and `env` = ENGINE_ENV; no `vision`, `mcp_servers`, `api_key` or `gpu` key; never a POST `/config` or `/v1/vram` (C-10) |
| The engine's environment | **ENGINE_ENV = `STRATA_NO_LARGEPAGES=1`** (STRATA-DELTA-2 C-12, the laptop's 4 KB pages; S-NEW's line), through the client's allowlist (`engines.engine_env_problem`, H-5), **unless the lead rules a THP arm** (then `none` with `THP_ARM=<ledger row>`). The desktop's `transparent_hugepage/{enabled,defrag}` is read by the stage (PLAN-W1 read `[madvise]`/`[madvise]` at 2026-10-05T04:18Z, issue #771's slow-arena case) and written as `THP_AT_STAGE`; `enabled=always` needs the lead's ruling first (`THP_ALWAYS_RULED`), since the kernel may then back the arena with huge pages whatever the engine asks. The window's open and the row re-read THP and refuse on any difference. The engine's own word is read back: its `expert arena:` line must read "large pages skipped (STRATA_NO_LARGEPAGES); using 4 KB pages" (`engines.engine_env_readback`), else every figure carries "ENGINE ≠ ENV" |
| The client's spec | S-NEW speed a2's `spec.json` keys and values but for `arm`, `run_dir`, `port` (withheld-2026-10-13), `server_argv`, `server_cwd`, `strata_engine_log` and `slices_path`: speed phase, contexts 4K/32K/128K, 3 repeats, 256 tokens, health timeout 1,200 s, request timeout 2,400 s, `egress_mode netns`, model name `qwen3.8-flash-next-iq3_s`, `expect_commit` 6f32ec07, `key_env` `STRATA_API_KEY` |
| Egress | as window 1 (Q-2, D-20261005-118): the fence of record is `inner.py`'s own `netns` mode inside `units.bwrap_argv`'s sandbox (the server and its engine inside it with the client; loopback only), proved by `inner.py`'s own probe before any server starts; the second fence is `IPAddressDeny=any` + `IPAddressAllow=localhost` on the row's system unit, read once by `inner.py`'s own `ipfilter` probe (recorded, never a gate); `fences.json` records which held |
| Conditions | the desktop's larger card's cap **300 W** (D-20260927-008; PREREG-BANDS' row), read back before the row; the seats down per D-098 (docent-vllm, ollama, comfyui if active, the reranker; the warm-seats and reconcile timers paused); `ollama-11435` on the desktop's smaller card **kept up**; the desktop's larger card read near-empty first; the row unit `MemoryMax=80G`, `KillMode=control-group`, `TimeoutStopSec=20`, `RuntimeMaxSec` to 09:10:00Z, no nice/CPU property (the unit's defaults); THP and ENGINE_ENV as above; each printed in the row's files (`row-meta.txt`, `strata-line.json`, `fences.json`, the `PRE-ROW` receipt) |
| MemoryMax arithmetic | 80G, the kit's row unit as windows 0 and 1. The harness's own plan for this line on the laptop (S-NEW a2's `memory_plan`): the arena 50.29 GB = 46.84 GiB pinned + 3.0 GiB host overhead = 49.84 GiB resident, MemoryMax 54 GiB. On the laptop a2's MemAvailable fell from 51.92 GiB to 2.18 GiB in its 4K runs and its 128K slice needed more than the ~2 GiB left (A9-1, A9-7: "why S-NEW's 128K slice needs more host memory than its 32K slice" is unread). 80G leaves about 30 GiB above the 4K figure; the desktop's MemTotal is 123.39 GiB with the docent and the reranker down for the row. The memory receipts (§5) read `memory.events` max/oom/oom_kill, `memory.peak` and the box's MemAvailable per run; a kernel OOM in the unit is a finding (stop rule 9), never a re-run in the window |

## 3 · The band, copied from PREREG-BANDS

From `plans-2026-10-05/desktop-nightly/PREREG-BANDS.md` (registered 2026-10-05T03:01:33Z, sha256
`withheld-2026-09-29`), **line 21**, byte for byte:

> | **R-S139-IQ3** | Strata v0.1.39, the harness client, 300 W | **in rounds:** 50-130 rounds/s [inferred: 14-37 % of the per-round ceiling, under llama.cpp's 24-46 % because a verify round reads at least one token's bytes AND runs the draft and verify compute for up to 6 tokens] × 2.25-2.69 tokens per round (the laptop's values, read on another box in a hybrid regime) = **113-350 tok/s** | 40-113, 350-(tpr × 347) | < 40 | > `tokens_per_round_derived` × 347 for that run (≤ 934 at 2.69); and > 2,084 (6 × 347.4, as PLAN-v2 states it) whatever the rounds read |

and its inputs, lines 8-11: the desktop's larger card's published 1,792 GB/s over ~5.159 GB per generated token (PREREG-W0 §4), a per-token
ceiling of **347 tok/s** (1,792 ÷ 5.159 = 347.4); the laptop's S-IQ3 `tokens_per_round_derived` 2.69 / 2.56 / 2.25 at
4K / 32K / 128K (hybrid regime, labelled overlapped), windows "up to 6 tokens". How it is read:
- **The banded figure is decode at 4K, the median of 3** (§1), in tok/s: **113-350 predicted**; 40-113 or 350-(that
  run's tpr × 347) outside; under 40 the floor. Beside each run the row prints its rounds/s, decode ÷ its own
  `tokens_per_round_derived` (the engine's own "N generated" and "drafts accepted" line: rounds = generated − accepted,
  `engines.strata_request_facts`), so the band's round share (50-130 rounds/s, inferred) is read as well as its product.
- **VOID**, per run, as line 21 writes it: decode above that run's `tokens_per_round_derived` × 347, or above 2,084
  whatever the rounds read (the written figures; the inputs' 347.4 would move each line by 0.1 %, and the lower,
  written line is the one that voids). `rowserver.py` records both lines beside every run (`void_above_tpr_x_ceiling`,
  `void_above_window_x_ceiling`). A VOID run makes its context's figure VOID: it is never dropped to make a median.
- **32K and 128K are exploratory, no band** (PREREG-BANDS line 34, rule (6)); their figures beside an older engine carry
  "prompt path differs (#583 ring, v0.1.39)" (C-13).
- **Nothing from window 1's reading enters the band** (it was drawn before window 0's). Window 1's reading may enter
  only as named operating inputs (its VRAM peak, its row's minutes), each named in the ledger row with its file.
- The laptop's S-NEW a2 4K decode (67.9-92.4 tok/s) is NOT a base for the band: a hybrid regime (8,073 slots of
  24,576), a STOPPED attempt's rows (PREREG-BANDS line 24's rule, applied to S-NEW as to S-IQ3).

## 4 · The residency receipts (PLAN-v2 §2.5, fold M-B-4; PREREG-BANDS rule (4)), registered before the first reading

"Whole on the desktop's larger card" has no positive receipt by default (`--expert-cache auto` takes `min(slots, profile.size())`; the
prompt path lends cache slots; experts read over PCIe count in neither hits nor lookups). So R-S139-IQ3 is **whole**
only when every receipt below reads true, read BY NAME from the engine's own log (`R-S139-IQ3.run/strata-engine.log`)
and the row's own records by `rowserver.py`'s `residency()`, written to `residency.json` at ready and again at the row's
end, each line quoted:

1. one CUDA device: exactly one `strata generate: GPU <n>: <name>, compute capability <cc>` line, its name the RTX
   PRO 6000;
2. `strata generate: expert cache <N> slots, <X> GiB of VRAM` with **N = 24,576** (the profile's ranked pairs, "built for
   24576 slots");
3. `strata generate: pre-filled 24576 of 24576 slots`;
4. `strata generate: token graph hit path: 24576 resident experts`;
5. the verifier's line `strata verify: window up to <n> tokens, <x> MiB of device buffers (100% VRAM resident:
   zero-doorbell graph)` (`src/core/verify.cpp:527-529`);
6. on every finished request, **no hit-rate line** (`hit_rate_line` "absent", lookups 0, `/metrics` `hit_rate` None:
   the zero-doorbell graph never calls the host pool, the only place hits and lookups are counted; H-3);
7. on every finished request, **no PCIe share** (the hit line's #588 suffix, `/metrics` `pcie_share` and `offloaded`
   absent or 0; H-2);
8. the desktop's larger card's **VRAM growth ≥ 49,431 MiB**: the expert arena (46.84 GiB, the engine's own "loaded 46.84 GiB") plus the
   pack's dense weights (1,538,035,200 B), read from the row's own `gpu-1hz.csv` (the pinned card's `memory.used`
   peak) against `memory.used` read right before the launch.

Recorded beside the receipts, read by name from their own lines (never a receipt, always printed: the values in
`residency.json`, the arena line in the row's summary): the arena's `strata generate:
expert arena: …` line and the page backing it names (`engines.arena_pages`); `strata generate: loaded <X> GiB at <Y>
GiB/s` (the arena read from the shard); `strata generate: expert cache auto: <F> GiB free, … -> <N> slots` (what the
card offered before the cap at the profile's 24,576); `strata serve: <N> MiB of VRAM free with everything loaded`; the
pinned card's `memory.used` right before the launch and its peak (`residency.json`).
The prompt path's borrow line, `strata serve: the prompt path borrows <N> <device> cache slots (<X> GiB)`, is printed
with its N; `--expert-cache auto` and the default borrowing stay as the laptop ran them (no `--no-prefill-borrow`: it
would change the line). **Any miss gives the label "partial residency (n of 24,576 slots; hit rate h)", never
"whole"**, with n the cache's slot count and h the median of the hit rates the requests printed. Recorded, never a stop:
the row runs to its end whatever it reads. The watcher's "row process on the desktop's smaller card" fence stays the card receipt.

## 5 · The gates on every run, and the receipts

- **The identity gate** (fold M-B-5): before the launch, the client's own `prompts.prompt` with its own `nonces`
  rebuilds the nine prompts from the pinned `SLICES.json`, and their sha256 must equal L-IQ3-t8's nine, or nothing
  launches (rc 7). After the run, a run counts only if its `prompt_sha256` AND the server's `prompt_tokens` equal the
  pins for the same context and repeat: 4K `b42c6a18…` `9744fee0…` `214ec62f…` (4,038 tokens), 32K `507b7bc9…`
  `c8a1ccb2…` `d6c96405…` (32,038), 128K `2491e963…` `94613594…` `38d3c9a3…` (128,037). Strata's server reports the
  same counts as llama.cpp's on these prompts: S-NEW a2 (4K, 32K) and S-HEAD a1 (all nine) read exactly these nine
  digests and counts. A run that misses is **withheld** (`identity.json`), never reported.
- **The slices guard** (PLAN-W1 §2.3.5a): `slices_path` points at the pinned copy inside the client (read-only inside
  the sandbox); absent or of another sha, nothing launches (rc 4).
- **The tree gate**: before the launch, as an operator, `git rev-parse HEAD` in the Strata tree equals 6f32ec07 and `git
  status --porcelain --ignored` prints nothing (an untracked `serve/<name>.py` would shadow a module the server imports);
  then the harness's own `engines.build_identity`: the binary's `CMakeCache.txt` names the tree, whose HEAD is the
  commit. Otherwise nothing launches (rc 4).
- **The line gate** (§2): the client's own builder writes the laptop's line or nothing launches (rc 4); the allowlist
  passes ENGINE_ENV; the box's THP reads THP_AT_STAGE.
- **G0** (`engines.strata_g0`): the native AVX2 line ("the expert kernels run on AVX-2"), no control-vector line, the
  INFO and `/metrics` `cvec` 0; a CPU refusal is the stop `cpu_refused`; the start's PCIe probe line, zero-doorbell line
  and arena line are recorded. The thread figure from the engine's own `N expert-pool workers` line.
- **The count check** (AUDIT-HARNESS B-1, the driver's `count_check` for Strata): the reply's `completion_tokens`
  against the engine's own "N generated" line and `/metrics` `output_tokens`, a gap above 3 % (8 of 256) is
  COUNT-MISMATCH; and **the recount road** (named before READY; run after the window): the laptop's own `llama-tokenize`
  (`/data/strata-bench/build/llama.cpp-3cf03257-cpu`, the laptop's A6 T-2 argv) recounts each kept completion. Until it
  reads, every decode prints **`withheld (COUNT-UNVERIFIED)`** (D-20261002-054). The row assembly (`rows.jsonl`:
  `finish`, `joined_rows`, `speed_row`, `count_check`) runs on the laptop after the window with the driver's own code;
  on the desktop the row writes `inner-rows.jsonl` (`inner.py`'s own) and the kit's receipts.
- **The replay test** (before READY): `daylight-checks.sh` drives the staged `rowserver.py --engine strata` and the
  staged client on the desktop against the harness's own stub server on a stand-in Strata tree, and its `inner-rows.jsonl`
  must equal the harness's inner speed path run on the laptop on the same stub input, the clock-derived keys set aside.
- **The memory receipts** (fold M-I-7): the row cgroup's `memory.stat` (`pgmajfault` delta per run, the page counts),
  `memory.events`, `memory.peak`, `memory.current` and the box's MemAvailable at the launch, at /health, at each run's
  start and end and at the end (`memory-receipts.jsonl`); the engine's mapped libraries (`server-maps.txt`).

## 6 · The stop rules

1. **No drill, no row.** The row runs only after the window's restore drill reads GREEN (D-098).
2. **The desktop's larger card near-empty at the start**, read after the seats go down; any tenant still on the desktop's larger card means no row.
3. **The bytes are checked first.** Every `FILE_SHA` file (54) reads its sha256 as an operator at the window's open, seats
   up; every one but the two shards again right before the launch; the slices guard; any mismatch means no row.
4. **The tree, the build and the line are checked** (§5): any miss means no row.
5. **THP and the engine's environment are checked**: a THP state other than the stage's, or an ENGINE_ENV the allowlist
   refuses, means no row.
6. **The card is checked.** G0 as §5; the engine log's GPU line naming another card, or a second GPU line, makes the
   row's figures "partial residency" (§4) and the lead's read with the rows.
7. **The hard runtime cap**: the row unit's `RuntimeMaxSec` ends it by **09:10:00Z**, whatever it is doing; a cut row
   keeps its finished runs, labelled "cut at the cap".
8. **The UPS**: OB, LB or FSD once, or `battery.runtime` under 300 s on 3 consecutive 1 s samples, or unreadable on 3
   in a row: the watcher stops the row and restores.
9. **Heat, and a crash, are findings**: the desktop's larger card above 85 C on 3 consecutive 1 s samples stops the row; a CUDA error, an
   out-of-memory (the card's or the kernel's in the unit), an abort or a server or engine exit mid-phase ends the row
   (`engine_died`); it is recorded with its logs and never re-run within the window. Strata's own 300 s silent-engine
   timeout and its restart of the engine (#481, #637) are recorded as they happen; a run that rides a restarted engine
   is labelled so. The label is applied at the morning read, from the kept engine log (the kit's code does not apply
   it; window-2 audit fold F-3): the log is one file appended across restarts, so every `strata generate: session is up
   (engine 0.1.39)` line after the first marks a restart, and every run that started after it carries "rides a
   restarted engine" (the residency read then also fails its one-GPU-line receipt).
10. **One run.** No request is repeated to move a reading into a band.
11. **The restore runs regardless**: the row's end or death fires the watcher's restore, the deadline restore at
    09:20:00Z restores no matter what, the morning check at 10:05Z pages on anything but RESTORED by parts, and
    an operator's backup paste is the manual road only (D-098).
12. **The egress fence holds**: `inner.py`'s netns probe must read `enforced` before the server starts, else
    `preflight_refused` (no figure; the restore runs).
13. **The identity gate** (§5): nothing launches unless the nine digests match; a run that misses afterwards is
    withheld.

## 7 · The attempt rule, the cut-row rule, the out-of-band rule, the cross-night rule

- **The attempt rule** (PREREG-W0 §10.3 with the laptop's Strata mapping): an a1 whose three 4K runs finished with
  status ok and identity ok is **never re-run**, whatever its band and residency and whatever ended the row later; the
  finished runs stand, labelled with the end reason. a2 runs only if a1 has no three such 4K runs; a2 is then the figure
  of record whatever its direction, a1 printed beside it. `exited_before_ready` is a slip (a2 may run on a later night);
  a G0 refusal is final; `cpu_refused` is final; a mid-phase engine crash is a finding. **A new build sha is a new
  label, never an attempt**: a rebuild on the desktop registers its own row.
- **The cut-row rule**: a context's figure exists only when all three of its runs finished with status ok and identity
  ok and none is VOID; a row cut or stopped after the 4K runs keeps its 4K figure (and any whole later context), each
  labelled with the end reason; a context with fewer than three such runs prints its runs and no figure.
- **Out of band** (PREREG-W0 §10.4, the laptop's A1-4): an outside-band reading prints `OUT-OF-BAND (opened: no)`, and
  nothing quotes it until the lead has read the engine log, the server log, the rows, `residency.json` and the box's
  state (`gpu-1hz.csv` clocks, temperature and power, `ups.csv`, `row-meta.txt`, the desktop's smaller card's busy share).
- **The cross-night rule** (PREREG-BANDS lines 28-32, rule (3)): a difference between rows from different windows is
  reported as a difference only when it exceeds the larger of 10 % or 3 × the larger row's spread across its
  repetitions; otherwise "within unmeasured night-to-night variation". Every compared row prints the cap read back,
  `MemoryMax`, nice/CPU properties, `CUDA_VISIBLE_DEVICES`, the stop set, the desktop's smaller card's seat state, and the desktop's larger card's
  temperature and SM clock per run. **R-S139-IQ3 beside window 1's R-LS-IQ3 is a cross-night pair** (the same card,
  instrument, prompts and client; two windows): it may be reported as a difference only under this rule, with
  R-S139-IQ3's residency label beside it; the same-window pair (R-LS-IQ3-n2 + R-S139-n2, PLAN-v2 §2.7) waits for the
  row list.

## 8 · What R-S139-IQ3 does NOT claim (PLAN-v2 §6)

- Not "Strata is N × llama.cpp on the 6000" without R-LS-IQ3's reading on the desktop, the cross-night rule and R-S139-IQ3's
  residency label all in the sentence; never from R-LB-IQ3 (a llama-bench reading, a different instrument, M-B-1).
- Not a box comparison with the laptop: S-NEW a2's rows are a STOPPED attempt's in a hybrid regime (8,073 of 24,576 slots
  in VRAM, a share of experts read over PCIe), on another CPU, memory and PCIe link; "R-S139 vs S-NEW" moves the box,
  the card, the residency regime and the prompt path's slot loan together.
- Nothing about S-NEW at 128K on the laptop (A9-7), and nothing it reads joins S-NEW's rows (A9-2).
- Not the third party's dual-card figures (D-095), and nothing about two cards.
- No hit-rate comparison: a whole row prints no hit rate (the zero-doorbell graph counts nothing); a partial row's hit
  rate is the VRAM share of the experts the pool looked up, never a speed figure.
- Nothing beside the live seats: the seats are down for the row. Nothing about quality: no quality block runs. No
  energy or cost figure: watts are recorded beside the row and claim nothing.
- One box, one night, one build: it speaks for Strata 6f32ec07 as built on the desktop with this line and these pages, nothing
  newer (C-14), no THP arm, no other `STRATA_*` switch.
- No decode figure before the count check and the recount read (§5).

## 9 · The other registered choices

**R-LS-IQ3 a2** (PLAN-W2 branch B-row or B-restore: window 1's row repeated on window 2's kit; `kit/rows/R-LS-IQ3.conf`,
ROW_KIND `llama-server`, row id `w2-r-ls-iq3`; window 1's row conf with only its folder and row id moved to window 2).
Its identity, gates, placement test, stop rules and rules are PREREG-W1's §2, §4, §5, §6 and §7, registered here for
window 2 with window 2's paths, and its band is PREREG-BANDS **line 20**, byte for byte:

> | **R-LS-IQ3** | llama-server 3cf03257, the harness client, `--n-cpu-moe 0`, 300 W | **85-160 tok/s** (the same arithmetic; the client clock adds nothing measurable) | 40-85, 160-347 | < 40 | > 347 |

It is an **a2 under the attempt rule** (§7) only when window 1's a1 has no three 4K runs with status ok and identity
ok; if window 1's a1 has them, window 2 never runs R-LS-IQ3 (PLAN-W2 §1).

**R-LB-IQ3-n2** (the fallback when R-S139-IQ3's stage or daylight checks fail before 04:00:00Z; `kit/rows/R-LB-IQ3-n2.conf`,
ROW_KIND `llama-bench`, row id `w2-r-lb-iq3-n2`): PREREG-W0 §3's argv flag for flag, window 0's 13 `FILE_SHA` lines, 300
W, `SHARDS_AFTER_ROW=keep`, `OUT_DIR=/workshop/desktop-window-2/row`. Its band is PREREG-BANDS **line 16**, byte for byte:

> | R-LB-IQ3-n2 | llama.cpp 3cf03257, llama-bench, 300 W (a noise read) | 85-160 tok/s (R-LB-IQ3's band) | 40-85, 160-347 | < 40 | > 347 |

It is banded on `tg128@d0`, the mean of its 3 repetitions; **a noise read, never an attempt**; read against R-LB-IQ3
(106.42 tok/s, D-20261005-120) only under the cross-night rule. If window 1 already ran it, window 2's reading is a
second noise read with the same band, and every line that quotes it says "R-LB-IQ3-n2 (window 2)" (its files sit in
`~/desktop-window-2/row`, never beside window 1's).

## 10 · What follows

W3 (Thu 2026-10-08) is the next rung under PLAN-v2's ladder: R-S125-IQ3 (Strata 8fc40dde, the registered pin) under its
own registration, or R-S139-IQ3 a2 under the attempt rule; then the same-window pair once the row list exists.
