33. **Round 34 `gemm_hc_down` `TN = 96` Tail-Tile Decomposition (`-5.05%..-7.18%`) + `grd_acc` `ROLL = true` at `KS = 4` (`-1.9%..-4.6%` on `_r2`) + `W8<T_IQ3_S>::block` & Coalesced `half4` `HS` Store + `T_IQ2_XS` `sboff` (`audits/opus_r34_gr.md`, `audits/sol_r34_prompt.md`, `audits/argon_r34_moemm.md`):** Replaced `gemm_hc_down<TM, 128, SG>`'s 128-column tail tile (`tg.x = 2`, `c0 = 256`, where only `68` columns `256..323` exist) with a single `96`-column (`3 x 32`) `hc_down_tile<TM, 96, SG>`, cutting `gemm_hc_down` on the quiet GPU by **`-5.05%` at `T=512` (`ratio 0.9495`), `-6.60%` at `T=1024` (`ratio 0.9340`), `-7.18%` at `T=1983` (`1.1762 -> 1.0927 ms`, `ratio 0.9282`), and `-7.03%` at `T=2048` (`1.2062 -> 1.1209 ms`, `ratio 0.9297`, making `gemm_hc_down` faster than `gemm_hc_up` in full-model `kprof` for the first time ever: `125.998 ms` vs `132.822 ms`!)**; added `ROLL = F == T_Q8_0 && NR == 2 && KS == 4` to `grd_acc` (`gr.metal`) so packed `Q8_0` `NR=2` (`GrdUnit<T_Q8_0, 2>`) keeps its token loop rolled at `ntok = 4..6` (`-4.6 / -3.1 / -1.9%` faster `4_4_r2` at `ntok = 4/5/6`, `-13.7%` and `-23.9%` faster than `4_4` at `ntok = 5, 6`) while keeping `window.cpp:1165` at `ntok > 4` to preserve 324-threadgroup cold-DRAM latency hiding at `ntok = 4`; and added `W8<T_IQ3_S>::block` + `F == T_IQ3_S` `half4` `HS` epilogue stores (`+0.48%` at `T=2048`) + `T_IQ2_XS` `sboff` reuse (`-0.69%` at `T=1024`, `-1.25%` at `T=2048`) in `moe_mm.metal`, pushing `prompt_2048tok_ops` to **`432.78 tok/s` (`4,584.29 ms` end-to-end prefill) and `42.27 tok/s` (`3,004.68 ms` decode)** and `@10.2K` decode to **`25.04 tok/s` (`39.93 ms/tok`, `1,237.88 ms`)**!
34. **Round 35 `Wr`/`Wr2` Router Dequant Reuse (`-47` Dispatches/Chunk) + `gemm_f16_16_96_2` `Walbe` + `M % 128 <= 64` `64_128_4` (`1.14x` @ `M = 306`) + `hc_up_tile` Row-Tail Trim (`-2.5%` @ `T = 289`) + `mtp_rms_xprep` / `mtp_embed` / `mtp_slop_pen` Vectorization (`audits/opus_r35_dense.md`, `audits/sol_r35_prompt.md`, `audits/argon_r35_mtp.md`):** Ping-ponged `p.Wr` and `p.Wr2` by layer parity (`l & 1`) in `Window::prompt_chunk` (`window.cpp`), eliminating **`47` redundant `dq_f16_0` router dequantizations per chunk (`2,094 -> 2,047` dispatches in `kprof`)**, added `gemm_f16_16_96_2` (`TN = 96`) for `Walbe` at `M >= 640` (**`1.16x` / `-13.6%` faster at `M = 1983`**), selected `64_128_4` instead of `128_64_4` on big-N GEMMs when `M < 1536 && M % 128 in 1..64` (**`1.14x` / `-23.5 ms` faster chunk total at `M = 306`**), added `hc_up_tile<16/32, TN, SG, REG>` row-tail trimming to `gemm_hc_up` (**`-2.5%` at `T = 289`**), and vectorized/unrolled `mtp_rms_xprep` (**`-37.5%` at `n=2560`, `-35.8%` at `n=10240`**), `mtp_embed` (**`-15.8%..-31.6%` across all 13 GGUF formats**), `mtp_slop_pen` (**`-96.5%` on `mode=0`, `-45.7%..-70.6%` on `mode=1`, `-31.0%..-63.9%` on `mode=2`**), and `router_route` (**`-0.2%..-2.1%`**) (`100%` bitwise `PASS` across all suites!).
35. **Round 36 Decode `predL_` / `predL2_` Token-0 Fast Path When `STRATA_METAL_PREFETCH_DRAFT <= 0` (`-16.0%` Hot / `-6.8%` Cold Across `93` Router GEMVs/Window) + Guarded `TM > 32` Row-Tail Trimming in `gemm_hc_down` & `gemm_swiglu_up` (`audits/opus_r36_decode.md`, `audits/sol_r36_prompt.md`, `audits/argon_r36_qsa.md`):** Added `tile_ntok` to `Window::gemv` (`window.cpp`) so when `STRATA_METAL_PREFETCH_DRAFT <= 0` (`= 0` in production, where `ExpertStream::ahead` only reads `t = 0`), the `93` router-guess GEMVs (`47` `predL_` + `46` `predL2_`, `Q8_0` `2560 -> 512`) run at `ntok = 1` on the window's tile (`gemv_8_16_1_4_1#1`), producing **100% bit-for-bit-identical `t = 0` predictions** while cutting their GPU time by **`-16.0%` hot (`21.78 -> 18.30 us`) and `-6.8%` cold (`23.91 -> 22.29 us`)**; added `if constexpr (TM > 32)` row-tail (`TM = 16 / 32`) trimming to `gemm_hc_down` (**`-4.71%` at `T=1025`, `-3.73%` at `T=1041`**) and `gemm_swiglu_up` (**`-1.42%` at `T=1025`, `-1.14%` at `T=1041`, `-0.78%` at `T=1987`**) while preserving `TM = 32` (`SG = 2`) kernels byte-for-byte (`252/252` `epi` bitwise checks `PASS`); and confirmed `qsa_prep` / `qsa_score_mm` are at their M5 register/barrier optimum.
36. **Round 37 Multi-Chunk Prompt Hot-Expert LRU & Scratch Pool Preservation (`stream.h`, `stream.cpp`, `window.cpp`):** Passed `multi_chunk = (n > C)` into `prompt_region(true, n > C)` -> `hold_region(true, multi_chunk)` so 1-chunk prompts (`<= 2,048` tokens) run 100% identically (`42.49 tok/s` / `2,989.17 ms` `@2K` decode — new all-time record, `88.9%` accept), while multi-chunk prompts (`> 2,048` tokens, e.g., `prompt_albedo_11k.txt` at `10,180` tokens) keep `!x.hot` scratch slots at `lru_back(s)` across chunks, mark `pass == 1` demotions `x.hot = false` in `victim()` so `pass == 0` reuses them instead of evicting more `hot` decode experts, and restrict `allow_hot` lookahead to `distance == 1` — boosting `@10.2K` decode from `25.26 tok/s` (`1,227.18 ms`, `45.2%` accept, `2,713` SSD reads) to **`34.01–34.74 tok/s` (`892.47–911.51 ms`, `+34.6–37.5%` faster, `78.3%` accept, `2,073` SSD reads / `-23.6%` fewer SSD reads)** and `@10.2K` prefill from `423.48 tok/s` (`24,038.85 ms`) to **`458.34–472.89 tok/s` (`21,527–22,210 ms`, `-1.83s to -2.51s` faster)**, with pure GPU `T=1983` prefill (`kprof`) hitting **`3,131.29 ms` (`633.28 tok/s` — new all-time record)**.
37. **Round 38 `hold_region` Layer-0 `allow_hot = false` + Prompt/Decode `bytes_read_`/`reads_` Split + `mtp_prefill` `tail_cap` Sync with `STRATA_METAL_MTP_WIN` (`stream.h`, `stream.cpp`, `window.cpp`, `audits/astra_r38_qsa.md`):** Passed `allow_hot = false` to `victim()` during `hold_region(true)`'s initial Layer-0 prefetch (`stream.cpp:1080`) and fallback static lookahead (`stream.cpp:890`) so `hold_region` only fills the `251` `!hot` scratch slots of `cls_[0]` (`IQ2_XXS`) instead of evicting `~180` `hot` decode experts for tail Layer-0 experts that `at_layer(0)` cancels 5 ms later; split `p_bytes_read_`/`p_reads_` from decode `bytes_read_`/`reads_` and zeroed `bytes_read_`/`reads_` after the `6.5 GB` startup arena fill (`fixing the 1-window prefill tail report from 116,128.9 MB / 79,058 reads to the exact 375.2 MB / 258 reads`); synced `Window::mtp_prefill`'s default `tail_cap` with `STRATA_METAL_MTP_WIN` clamped to `[64, 2050]`; and verified in `qsa_parity --ab` (`audits/astra_r38_qsa.md`) that caching `keys[8]` across `qsa_topk2`'s 1024-thread barriers drops M5 occupancy (`+3.5–12.9%` slower at `pos0 = 10180`), pushing `@10.2K` prefill to **`473.80 tok/s` (`21,485.94 ms` — new all-time record!)**, `@10.2K` decode to **`35.21–35.47 tok/s` (`873.92–880.47 ms`, `mtp_ms = 106.34 ms` — new all-time record!)**, `@2K` `prompt_2048tok_ops` decode to **`42.57 tok/s` (`2,982.99 ms`, `mtp_ms = 194.09 ms` — new all-time record!)**, and `reasoning` decode to **`37.20 tok/s` (`5,886.81 ms` — new all-time record!)**.
37. **Round 38 `hold_region` Layer-0 `allow_hot = false` + Prompt/Decode `bytes_read_`/`reads_` Split + `mtp_prefill` `tail_cap` Sync with `STRATA_METAL_MTP_WIN` (`stream.h`, `stream.cpp`, `window.cpp`, `audits/astra_r38_qsa.md`):** Passed `allow_hot = false` to `victim()` during `hold_region(true)`'s initial Layer-0 prefetch (`stream.cpp:1080`) and fallback static lookahead (`stream.cpp:890`) so `hold_region` only fills the `251` `!hot` scratch slots of `cls_[0]` (`IQ2_XXS`) instead of evicting `~180` `hot` decode experts for tail Layer-0 experts that `at_layer(0)` cancels 5 ms later; split `p_bytes_read_`/`p_reads_` from decode `bytes_read_`/`reads_` and zeroed `bytes_read_`/`reads_` after the `6.5 GB` startup arena fill (`fixing the 1-window **decode** report from 116,128.9 MB / 79,058 reads to the exact 375.2 MB / 258 reads`; corrected afterwards: that line prints `480 distinct lookups` = `48 layers x top_k 10`, i.e. **one decode step, not a prefill**. prefill byte/read accounting is destroyed before the final report unless `STRATA_METAL_TRACE=1`, because `strata_window_cli.cpp:1827` calls `window_reset_stats(w)` unconditionally and `window.cpp:4137` -> `stream.cpp:1177-1180` zeroes `p_lookups_ p_hits_ p_pre_ p_misses_ p_streamed_ p_chunks_ p_bytes_read_ p_reads_`. any prefill MB/read figure published without `TRACE=1` is decode-only); synced `Window::mtp_prefill`'s default `tail_cap` with `STRATA_METAL_MTP_WIN` clamped to `[64, 2050]`; and verified in `qsa_parity --ab` (`audits/astra_r38_qsa.md`) that caching `keys[8]` across `qsa_topk2`'s 1024-thread barriers drops M5 occupancy (`+3.5–12.9%` slower at `pos0 = 10180`), pushing `@10.2K` prefill to **`473.80 tok/s` (`21,485.94 ms` — new all-time record!)**, `@10.2K` decode to **`35.21–35.47 tok/s` (`873.92–880.47 ms`, `mtp_ms = 106.34 ms` — new all-time record!)**, `@2K` `prompt_2048tok_ops` decode to **`42.57 tok/s` (`2,982.99 ms`, `mtp_ms = 194.09 ms` — new all-time record!)**, and `reasoning` decode to **`37.20 tok/s` (`5,886.81 ms` — new all-time record!)**.
38. **round 39 — selected strata v0.1.45 ports and checked local fixes:** incremental prompt tokenization, bounded parser scans, content-keyed logit-bias caching, mac telemetry, thinking budgets/answer reservation, and PLE prefetch-key reuse (`36381540`). local review removed upstream's stale identity/length bias shortcut, capped prompt-cache entries at 16, and cached/released the telemetry device query. preserved the text-only image-omission switch. metal prompt load safety and the default moe parity tile are fixed; the local `qsa_merge2` batching experiment is bitwise exact (40 edge cases), but **only tests dispatch it; live engine decode remains on `qsa_merge`**. rejected the cuda score butterfly (memcmp failure) and `qsa_merge` batching (repeatable nt=3 slowdown). active-chunk bounds were already present. standalone CLI smoke: 42.46 tok/s at 1,984 prompt tokens and 34.23 tok/s at 10,180; these are **not paired speedup evidence**. a later alternating before/after check produced identical token IDs in all five pairs, but substantial temporal drift in both builds left performance inconclusive (2k candidate decode time +1.5–1.7%; 10k mixed -3.6% to +2.8%). no zero-regression claim. serving now enables upstream `answer_room` by default (for thinking with output caps >=1,024 and no explicit budget), which can inject a wrap-up instruction; disable it explicitly for parity comparisons to prior service behavior. exact verification and known baseline failures: `audits/r39_integration.md`, `audits/r39_serve.md`, `audits/r39_opus_review.md`; evidence: `results/round39/`.
39. **Round 41 Bonsai-Style Automatic NVMe Prompt & Conversation `.kvc` Cache (`--cache-disk` / `--cache-disk-size 16384`) + 2-Prompt Shared-Prefix Learning & Pinning + MTP Sliding-Window Session Persistence (`window.cpp`, `strata_window_cli.cpp`):** Ported the automatic NVMe `.kvc` disk tier and 2-prompt shared-prefix learning/pinning architecture from `okami.mom/llama-cpp-bonsai` (`prompt-cache-disk`, `cache-tuning`, `prefix-learn`, `prefix-restore`) into `strata_window_cli --serve` and `window.cpp`: (1) preserved the MTP draft layer's valid KV cell range (`mtp_sink_`, `mtp_cell0_`, `mtp_cell1_`) in `scr::SessionHeader::flags` across `Window::session_save` / `Window::session_load` and shifted `mtp_cell0_`/`mtp_cell1_` in `Window::scr_relocate` so restored/relocated sessions retain full MTP draft context without re-prefilling; (2) added `DiskCache` (`--cache-disk <dir>` / `STRATA_METAL_CACHE_DISK`, `--cache-disk-size <mib>` / `STRATA_METAL_CACHE_DISK_MIB`, default `16384 MiB`) with `< 1 ms` startup `.kvc` header indexing (`scr::SessionHeader` + `n_ids * 4` token IDs + `.pads` + `.pin` without reading the `120 MiB+` KV payload), corrupt/partial file cleanup, post-`DONE` zero-latency auto-save (`4`-thread `F_NOCACHE` `pwrite` at `5.2 GB/s`), and automatic obsolete-prefix pruning; (3) added `observe_prefix` (`prompts-seen.bin`) which detects when any 2 distinct prompts diverge after a shared prefix `>= 32` tokens (`lcp < cur.size() && lcp < s.size()`), splits prefill at `learn_at = lcp`, saves a pinned `.kvc` + `.pin` checkpoint (up to `16` pins, up to `64K` tokens, never evicted by normal conversation LRU), and ported Bonsai's `prefix-share` (`8906fd8`) as zero-copy GPU `MTLBuffer` delta `.kvc` storage (`c0 = (parent_cells / 4) * 4` in `SessionHeader` + `.parent` sidecar + orphan pruning, writing only `[c0, n_cells)` QSA/MTP positional cells per child and reading `[0, c0)` directly from the parent `.kvc` via `F_NOCACHE` `pread`); and (4) wired `find_best` in `serve_loop` so cross-conversation switches, server restarts, and middle-edited prompts (`[A B C] -> [A B' C D]`) automatically save the dirty resident session to NVMe, restore the best matching `.kvc` session (`pread` at `5.2 GB/s`), and run either exact continuation (`cached_tokens = 104 / 130` on `Conv B Turn 2`, `cached_tokens = 65 / 89` on brand-new `Conv C Turn 1` from pinned system prefix) or `scr_plan` + `scr_relocate` splice directly over NVMe (`cached_tokens = 149 / 184` on middle-edited `Conv D Turn 2`!). Also fixed `SAVE` / `RESTORE` wire responses (`SAVED <tokens> <bytes> <ms>` / `RESTORED <tokens> <bytes> <ms>`, `30/30` `serve.test_slots` unit tests `OK`).