Skip to content

Commit 2000628

Browse files
committed
docs(pr-x12): address Codex + CodeRabbit review on #242
- tests/knowledge/test_pr_x12_knowledge_docs.py: the four assertions pinning the audit-flagged wording (tropical_spmv free function, 'Actual kernel home (current)' inversion) now assert the corrected canon instead — blasgraph canonical (kernel unwritten), shipped min-plus = the method bgz17::ScalarCsr::spmv_min_plus. Suite green (117 tests). [Codex P2] - Leaf-count arithmetic corrected everywhere: 129,600 exact 8x8 leaves at 4K (padded 130,560; the old 132,710 was ungrounded), ~129 ns/leaf budget, RDO paragraphs re-based on ~2,040 CTUs/frame, R-11 matrix row re-unitized to <=210 ns/leaf. [CodeRabbit] - Determinism claims qualified: standardized NN-in-loop decode can be bit-exact (fixed-point conformance), so the moat is stated as reproducibility-by-construction + governance, not 'NN = nondeterministic'; un-standardized AI-upscaler drift claim retained. [CodeRabbit] - H.267 described as prospective standardization effort; VVC metric split (up to ~50% subjective / ~31-40% objective BD-rate); GEMM-lens 'all four already exist' leftover removed; tropical-GEMM speedup made conditional on the A6 bench; MD028 blockquote fix in the two quarantine headers; residual affirmative stale symbols corrected in pr-x12-cam-pq-sigker-dn-tree-substrate-bindings.md. [CodeRabbit] Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K3RyLEbuNSHxxB3NTTrGki
1 parent 061cec2 commit 2000628

14 files changed

Lines changed: 153 additions & 76 deletions

.claude/PR-X12-docs-audit.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,13 @@ the audited docs"). The following recommendations were executed on branch
340340
**[UNCALIBRATED ESTIMATES]** in delta §6, substrate-canon R-5, GEMM lens
341341
§2.2; the self-fabricating "Graviton=128" withdrawn from mapping §5.3.
342342
- Finding #8 — "132,710 CTUs/frame" mislabel: fixed to leaves-at-8×8 in
343-
delta §2.3 (budget recomputed per-leaf).
343+
delta §2.3 (budget recomputed per-leaf). Review follow-up (same day):
344+
the count itself was also wrong — exact 8×8 accounting at 3840×2160 is
345+
**129,600** leaves (padded 64×64: 2,040 CTUs → 130,560); the audit's own
346+
finding #8 had accepted 132,710 as "correct-as-leaves," which it wasn't.
347+
Budget recomputed to ~129 ns/leaf; the "~132K CTUs" figures in the three
348+
RDO paragraphs corrected to ~2,040 CTUs; R-11 matrix row re-unitized to
349+
≤210 ns/leaf.
344350
- Finding #9 — false `signature_kernel_pde` Goursat-PDE bug claim:
345351
withdrawn at all four sites (delta §11/§12, substrate-canon R-14/R-15).
346352
- Finding #19 — §9 falsifiability matrix: tagged FORWARD-CONDITIONAL

.claude/blackboard.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,9 @@ default is x86-64-v3 (avx2) so ndarray_simd activates on avx512 builds only.
690690
method `ScalarCsr::spmv_min_plus`, lossy sibling); blasgraph restored as
691691
bit-exact canon over bgz17; per-arch DCT crossovers tagged [UNCALIBRATED];
692692
false `signature_kernel_pde` Goursat-bug claim withdrawn (its convergence
693-
tests pass); 132,710 = leaves-at-8×8 not CTUs; §9 falsifiability matrix tagged
693+
tests pass); the R-11 unit is leaves-at-8×8 not CTUs, and the count itself
694+
was corrected to 129,600 exact (padded 130,560; the old 132,710 was
695+
ungrounded) → ~129 ns/leaf budget; §9 falsifiability matrix tagged
694696
FORWARD-CONDITIONAL. Tier-1 docs (`woa-multiarch-orchestration`,
695697
`bgz-jc-substrate-synergies`) ⛔ QUARANTINED pending rewrite.
696698
- **NEW: `.claude/knowledge/pr-x12-h266-h267-standards-landscape.md`**

.claude/knowledge/pr-x12-bgz-jc-substrate-synergies.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
> **siblings**, never substitutes for blasgraph. **Do not cite §0 / §2.5 /
1313
> §2.7 / §4 / §7-§8 as evidence.** Pending rewrite per audit Tier-1
1414
> recommendation.
15-
16-
15+
>
1716
> Date: 2026-05-22
1817
> Status: **substrate grounding doc** — connects PR-X12's abstract substrate claims to the **already-implemented** crates in `lance-graph/crates/`. Companion to the five perspective lenses written 2026-05-22.
1918
>

.claude/knowledge/pr-x12-cam-pq-sigker-dn-tree-substrate-bindings.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ Updating the inventory from `pr-x12-bgz-jc-substrate-synergies.md` §7 with the
284284
| 4096-entry basin codebook | `bgz-tensor::Codebook4096` (literal 4096-entry type), trained by **`cam_pq`**. `bgz-hhtl-d` is a *different* basin-codebook strategy (4-basin × 16-HIP × 256-TWIG = 16,384-cell address space over a shared 256-entry palette) — not the canonical 4096 |
285285
| `CurveOrder<const N>` | `highheelbgz` spiral addressing |
286286
| `LinearReduce<T> + Basis<T>` | `bgz-tensor` AttentionSemiring + ComposeTable + DistanceTable; **`sigker::SignatureBasis`** (proposed) |
287-
| Tropical-GEMM (R-7) | `bgz17::scalar_sparse::tropical_spmv` |
287+
| Tropical-GEMM (R-7) | canonical home `lance-graph::blasgraph` (kernel unwritten); shipped min-plus is the method `bgz17::ScalarCsr::spmv_min_plus` [lossy sibling, prototype only — corrected 2026-07-16 per audit] |
288288
| Federated codebook (R-13) | `bgz-hhtl-d` shared-palette + **`cam_pq::CamCodebook`** + **`dn_tree`** (online update) + **`merkle_tree`** (integrity) |
289289
| Formal correctness — codec quantization | `jc` **Pillar 10 (Pflug-Pichler)** — nested-distance Lipschitz on Sigma DN-trees, certifies CAM-PQ tree quantization preserves FreeEnergy within Lε |
290290
| Formal correctness — path-signature lane | `jc` **Pillar 11 (Hambly-Lyons)** via **`sigker`** — certifies Index-regime classification (sigker only, not bgz) |
@@ -335,15 +335,22 @@ Recommended edits to `pr-x12-canon-resolutions-delta.md`:
335335
> - **Quantization correctness (Pillar 10, Pflug-Pichler):** nested-distance Lipschitz on Sigma DN-trees — proves CAM-PQ tree quantization preserves FreeEnergy within Lε. This is the proof PR-X12 cites for "wire-format quantization is faithful."
336336
> - **Path-signature correctness (Pillar 11, Hambly-Lyons):** signature uniqueness on tree-quotient — proves any path is uniquely determined by its truncated signature up to tree-like equivalence. Active under `--features hambly-lyons` (since 2026-05-07, PR #348). This is the proof PR-X12 cites for the `SignatureBasis<DEPTH>` lane (R-15).
337337
>
338-
> Both pillars exist; the codec cites them and does not reprove. **Status: Pillar 10 active; Pillar 11 active under feature gate. Production-scale benchmarking + PR #350 (signature_kernel_pde math correction) — see Gap G-4.**
338+
> Both pillars exist; the codec cites them and does not reprove. **Status: Pillar 10 active; Pillar 11 active under feature gate. Production-scale benchmarking — see Gap G-4.** *(Corrected 2026-07-16, audit #9: the "PR #350 signature_kernel_pde math correction" claim is withdrawn — the PDE form's convergence tests to `I₀(2·√⟨u,v⟩)` pass; there is no known bug.)*
339339
340-
**R-7 path correction** — the kernel home:
340+
**R-7 kernel home** *(corrected 2026-07-16, audit #1-#4 — the earlier "path
341+
correction" here had the canon/adapter relationship inverted)*:
341342

342-
> R-7 (corrected): tropical-GEMM lives at `lance-graph::bgz17::scalar_sparse::tropical_spmv` (not the abstract `blasgraph` namespace). The codec's tropical-GEMM RDO call is `bgz17::scalar_sparse::tropical_spmv(edge_weights, dag)`.
343+
> R-7 (corrected): the canonical, bit-exact home for the tropical-GEMM
344+
> partition kernel is `lance-graph::blasgraph`; that f32 min-plus kernel is
345+
> UNWRITTEN today. The only shipped min-plus is the method
346+
> `bgz17::ScalarCsr::spmv_min_plus` (`fn(&self, x: &[f32]) -> Vec<f32>`) —
347+
> a lossy-sibling prototype, never a substitute for the blasgraph canon.
348+
> The free function `tropical_spmv(edge_weights, dag)` cited previously
349+
> does not exist.
343350
344351
**R-15 (new candidate)** — signature-basis as Basis<T> impl:
345352

346-
> R-15 (candidate): the substrate supports path-structured signals via `sigker::SignatureBasis<DEPTH>: Basis<f32>`, alongside `DctIIBasis<N>: Basis<i16>` (video) and `EwaSplatBasis: Basis<f16>` (3DGS). Implementation: ~1 week wrapper around `sigker::signature_kernel_pde`. **Plan G** gets a fifth lane (path-structured: audio waveform, time-series, gesture/handwriting).
353+
> R-15 (candidate): the substrate supports path-structured signals via `sigker::SignatureBasis<DEPTH>: Basis<f32>`, alongside `DctIIBasis<N>: Basis<i16>` (video) and `EwaSplatBasis: Basis<f16>` (3DGS). Implementation: ~1 week wrapper around `sigker::signature_truncated` (the form Pillar 11 cites; the PDE form is equally sound — audit #9 — but the truncated path is what R-15 commits). **Plan G** gets a fifth lane (path-structured: audio waveform, time-series, gesture/handwriting).
347354
348355
---
349356

.claude/knowledge/pr-x12-canon-resolutions-delta.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,12 @@ Three-way pass per load: (ratio + quality + LoC). Sub-threshold on any one = blo
159159
|---|---|
160160
| 4K resolution | 3840 × 2160 = 8.3 M pixels |
161161
| 60 fps | 16.67 ms/frame |
162-
| 8×8 leaf | 132,710 leaves/frame (≈2,025 CTUs/frame at 64×64) |
163-
| **Per-leaf budget** | **125 ns/leaf** |
162+
| 8×8 leaf | 129,600 leaves/frame (exact: 3840·2160/64; padded 64×64 accounting: 2,040 CTUs → 130,560 leaves) |
163+
| **Per-leaf budget** | **~129 ns/leaf** (16.67 ms / 129,600) |
164164

165-
> Corrected 2026-07-16 (audit #8): the 132,710 figure counts 8×8 **leaves**, not
166-
> 64×64 CTUs — substrate-canon R-11 labels it correctly; this table had mislabeled it.
165+
> Corrected 2026-07-16 (audit #8 + review): the unit is 8×8 **leaves**, not
166+
> 64×64 CTUs, and the previously-cited 132,710 count was not numerically
167+
> grounded (exact 8×8 accounting gives 129,600; padded 64×64 gives 130,560).
167168
168169
Encoder per-leaf breakdown:
169170

@@ -177,7 +178,7 @@ Encoder per-leaf breakdown:
177178
| rANS encode (A7) | ~40 ns | ~40 ns |
178179
| **Total** | **~960 ns** | **~210 ns** |
179180

180-
Scalar misses 60 fps by 7.6×; SIMD-batched misses by 1.7× (same OoM). **Pins B:D-CODEC-8 / A:T-7 from P2 → P1** — A4-impl and A6 must ship SIMD-batched, not scalar-then-vectorize.
181+
Scalar misses 60 fps by ~7.5×; SIMD-batched misses by ~1.6× (same OoM). **Pins B:D-CODEC-8 / A:T-7 from P2 → P1** — A4-impl and A6 must ship SIMD-batched, not scalar-then-vectorize.
181182

182183
---
183184

@@ -218,7 +219,7 @@ Tropical-semiring (+, min) formulation:
218219

219220
**Complexity:** `O(d² × |nodes|)`. For d=4, |nodes|=85: 1360 ops/CTU vs 21,760 naive. **~16× speedup.**
220221

221-
At 4K 132K CTUs/frame: ~4 ms vs ~64 ms just for partition RDO. At 60 fps, the difference between fitting and missing budget.
222+
At 4K (~2,040 CTUs/frame; corrected 2026-07-16 — "132K" was the leaf count, not CTUs): ~2.8 ms vs ~44 ms just for partition RDO at ~1 op/ns. At 60 fps, the difference between fitting and missing budget.
222223

223224
**Dep direction:** `ndarray-codec → lance-graph::blasgraph` (tropical-GEMM kernels nominally live in blasgraph). Allowed post-Plan-H because ndarray-codec is a sibling crate, not the bottom.
224225

@@ -386,7 +387,7 @@ Highlights of falsifiers — the canary tests:
386387
| R-1 | A7 has to subclass `LinearReduce` to make rANS work | Trait factoring wrong; A7 wastes 1.5 wks |
387388
| R-3 | Cumulative generic LoC > 1500 after A4-A8 | M:H-NEW-2 falsified; the abstraction grew domain-specific code |
388389
| R-9 | `grep -E 'North|East|West|South' src/hpc/codec/*.rs` returns production paths | Topology-free contract broken; consumer semantics leaked into codec |
389-
| R-11 | SIMD-batched encode > 210 ns/CTU on SPR | Plan G video threshold can't pass; 4K real-time falsified |
390+
| R-11 | SIMD-batched encode > 210 ns/leaf on SPR | Plan G video threshold can't pass; 4K real-time falsified |
390391

391392
---
392393

.claude/knowledge/pr-x12-codec-cognitive-substrate-mapping.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ Per-block butterfly wins for single 32×32. Per-frame batched `C = A_batch @ DCT
522522

523523
> [Pinned as **R-7**: the tropical-GEMM kernel's canonical home is `lance-graph::blasgraph` — but the symbol `blasgraph::tropical_gemm` **does not exist** (audit #3, corrected 2026-07-16; blasgraph's 7 HDR semirings are binary-Hamming over 16384-bit BitVec, no numerical min-plus). The kernel is unwritten; the only shipped min-plus is `bgz17::ScalarCsr::spmv_min_plus` (lossy sibling, prototype only). The `ndarray-codec → lance-graph` dep direction was confirmed *allowed* post-merge (both are sibling crates above `ndarray::hpc` and below `woa-rs`). See the corrected R-7 in the delta doc.]
524524
525-
x265 spends ~30% CPU on recursive partition RDO. Reformulate: each partition is a node in an 85-node DAG, edges = split/merge transitions, weights = ΔRDO. Optimal partition = shortest path. blasgraph's tropical-semiring GEMM (`D ← min(D, D + W)`) solves all partitions in **one batched matrix-relax**. `O(4^d)``O(d²)` per CTU.
525+
x265 spends ~30% CPU on recursive partition RDO. Reformulate: each partition is a node in an 85-node DAG, edges = split/merge transitions, weights = ΔRDO. Optimal partition = shortest path. A **planned** tropical-semiring GEMM in blasgraph (`D ← min(D, D + W)`; unwritten today, per the R-7 correction above) would solve all partitions in one batched matrix-relax — the `O(4^d)``O(d²)` reduction holds algebraically but the speedup is **conditional on the future A6 partition bench** confirming it on real edge weights.
526526

527527
### 13.4 CABAC context modeling → tiny transformer (E-9)
528528

.claude/knowledge/pr-x12-h266-h267-standards-landscape.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,19 @@ now supplies evidence for both directions:
9292
- *For NNVC:* every single CfE response for H.267 incorporated some form of
9393
NN tool — the field has voted.
9494
- *For the inversion:* the decoder-complexity/power pushback (Samsung et
95-
al.) is precisely the failure mode the anti-neural rule predicts, and the
96-
determinism argument (no model-version drift, legally/scientifically
97-
defensible reconstruction — x266 lens §7) is one no NN-in-loop codec can
98-
make.
99-
100-
This is the sharpest external differentiator the PR-X12 line has. Keep it.
95+
al.) is precisely the failure mode the anti-neural rule predicts. The
96+
reproducibility argument needs stating precisely: a *standardized*
97+
NN-in-loop codec can be bit-exact (JVET conformance requires fixed-point
98+
decode), so "NN = nondeterministic" is wrong as a universal claim. The
99+
PR-X12 advantage is **reproducibility-by-construction and governance**:
100+
closed-form math with no model artifact to pin, version, or govern —
101+
versus NN tools whose reproducibility depends on disciplined model
102+
pinning and whose behavior is not analytically auditable (x266 lens §7).
103+
Un-standardized AI-upscaler pipelines (DLSS-class, RIFE-class) DO drift
104+
across model versions; that comparison stands unqualified.
105+
106+
This — stated in the qualified form above — is the sharpest external
107+
differentiator the PR-X12 line has. Keep it, and keep it precise.
101108

102109
## 4. H.267 — the process, the requirement, the dates
103110

.claude/knowledge/pr-x12-substrate-canon-resolutions.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,10 @@ blasgraph`. For d=4, |nodes|=85: O(16 × 85) = O(1360) ops per CTU.
545545
Vs. O(4^4 × |nodes|) = O(21,760) ops for the naive recursive RDO.
546546
```
547547

548-
**Speedup: ~16×.** For a 4K frame at ~132K CTUs, this is the difference
549-
between ~4 ms and ~64 ms per frame just for partition RDO. At 60 fps,
550-
that's the difference between fitting and missing the latency budget.
548+
**Speedup: ~16×.** For a 4K frame at ~2,040 CTUs (corrected 2026-07-16 —
549+
the earlier "~132K CTUs" was the 8×8 leaf count), this is the difference
550+
between ~2.8 ms and ~44 ms per frame just for partition RDO at ~1 op/ns.
551+
At 60 fps, that's the difference between fitting and missing the budget.
551552

552553
**Why this targets `lance-graph::blasgraph`:** Standard BLAS GEMM uses
553554
(× , +) semiring. Tropical uses (+ , min) semiring. blasgraph is the
@@ -796,12 +797,13 @@ to the budget.
796797
60 fps = 16.67 ms/frame
797798
At 8×8 leaf granularity (HEVC's smallest CU; the unit at which the
798799
encoder's inner-loop work is paid):
799-
132,710 leaves/frame
800-
(= 2,040 CTUs/frame at 64×64, × ~64
801-
leaves/CTU at maximum split depth;
802-
130,560 from clean 3840·2160/64, with
803-
~1.6 % bias for chroma alignment)
804-
Per-leaf budget: 16.67 ms / 132,710 = 125 ns/leaf
800+
129,600 leaves/frame (exact: 3840·2160/64)
801+
(padded 64×64 accounting: 60×34 = 2,040
802+
CTUs/frame → 130,560 leaves at max split)
803+
Per-leaf budget: 16.67 ms / 129,600 = ~129 ns/leaf
804+
(Corrected 2026-07-16: the earlier 132,710 figure — 130,560 plus an
805+
unsourced "~1.6 % chroma alignment bias" — was not numerically
806+
grounded; use exact 129,600 or padded 130,560.)
805807
```
806808

807809
**Encoder per-leaf breakdown (scalar reference, current):**
@@ -816,11 +818,11 @@ Per-leaf budget: 16.67 ms / 132,710 = 125 ns/leaf
816818
| rANS encode (A7) | ~40 ns | ~40 ns |
817819
| **Total per-leaf** | **~960 ns** | **~210 ns** |
818820

819-
**At scalar reference (960 ns/leaf): 4K @ 60 fps requires 132,710 ×
820-
960 ns = 127 ms/frame. Misses 60 fps by 7.6×.**
821+
**At scalar reference (960 ns/leaf): 4K @ 60 fps requires 129,600 ×
822+
960 ns = 124 ms/frame. Misses 60 fps by ~7.5×.**
821823

822-
**At SIMD-batched (210 ns/leaf): 132,710 × 210 ns = 28 ms/frame. Misses
823-
60 fps by 1.7×; needs further work but in the same order of magnitude.**
824+
**At SIMD-batched (210 ns/leaf): 129,600 × 210 ns = 27 ms/frame. Misses
825+
60 fps by ~1.6×; needs further work but in the same order of magnitude.**
824826

825827
**To hit 60 fps 4K real-time** requires the SIMD-batched-encode path
826828
to land. **This pins B:D-CODEC-8 / A:T-7 from P2 to P1.** Plan A4-impl
@@ -1261,7 +1263,7 @@ that decides whether each holy-grail claim is demonstrated.
12611263
| R-8 (Plan G is confidence gate) | this doc | Phase order | Plan G ships before A7 | A7 PR doesn't merge until Plan G binary green |
12621264
| R-9 (topology-free) | this doc | grep audit | Codec body has no spatial-semantic refs | `grep -rE 'North\|East\|West\|South' src/hpc/codec/*.rs` returns only test/doc |
12631265
| R-10 (4 bit/Gaussian floor) | this doc | Plan E bench | bits/Gaussian on Mip-NeRF 360 | ≤4 bits/Gaussian without offline codebook |
1264-
| R-11 (4K 60fps SIMD-batched) | this doc | Plan G video latency assert | Per-CTU encode time | ≤210 ns/CTU on Sapphire Rapids |
1266+
| R-11 (4K 60fps SIMD-batched) | this doc | Plan G video latency assert | Per-leaf encode time | ≤210 ns/leaf on Sapphire Rapids (≡ ≤13.4 µs per fully-split 64×64 CTU = 64 leaves; corrected 2026-07-16 — the earlier "≤210 ns/CTU" mislabeled the per-leaf breakdown total) |
12651267
| R-12 (per-CTU flush) | this doc | A8 frame-header parse + decode | First-CTU latency | First CTU decodable before frame complete |
12661268
| R-13 (Option A per-shard) | this doc | Plan F on BERT-glue | 8× compression + accuracy | Holds; else escalate to Option B |
12671269
| R-14 (Pillar 10 active) | this doc | `cargo test -p jc` (default features) | Pflug-Pichler Lipschitz bound | Pillar 10 probe green |
@@ -1414,7 +1416,7 @@ When this doc is summarised across context windows, preserve at minimum:
14141416
- R-8: Plan G is confidence gate
14151417
- R-9: topology-FREE codec layer
14161418
- R-10: ~4 bits/Gaussian near target, ~1 bit stretch
1417-
- R-11: 210 ns/CTU SIMD-batched encode
1419+
- R-11: 210 ns/leaf SIMD-batched encode (per-leaf, not per-CTU)
14181420
- R-12: per-CTU flush default; per-bucket Plan F
14191421
- R-13: Option A (per-shard codebook) for Plan F v1; primitives are
14201422
`cam_pq` + `bgz-hhtl-d` + `dn_tree` + `merkle_tree`

.claude/knowledge/pr-x12-woa-multiarch-orchestration.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
> doc as evidence for anything.** Pending rewrite per audit Tier-1
1111
> recommendation; the W1a consumer contract at
1212
> `vertical-simd-consumer-contract.md` is the authoritative source.
13-
14-
13+
>
1514
> Date: 2026-05-22
1615
> Status: **perspective doc** — examines how the orchestration crates (`woa-rs`, `woa`, `q2`, `surrealdb`, `MedCare-rs`, `smb-office-rs`) consume the PR-X12 substrate, and how PR-X12's per-arch polyfill decisions (R-4, R-5, R-11) generalise to the entire HPC stack.
1716
>

.claude/knowledge/pr-x12-x265-blasgraph-gemm.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ Tropical-GEMM: O(d²) × |nodes| = 16 × 85 = ~1.4 K ops/CTU
104104
~16× speedup
105105
```
106106

107-
For 4K @ 60 fps with 132K CTUs/frame, this is the difference between **4 ms and 64 ms per frame just for partition RDO**. At 60 fps's 16.67 ms budget, naive RDO doesn't fit.
107+
For 4K @ 60 fps with ~2,040 CTUs/frame (corrected 2026-07-16 — the earlier "132K CTUs" was the 8×8 leaf count), this is the difference between **~2.8 ms and ~44 ms per frame just for partition RDO** at ~1 op/ns. At 60 fps's 16.67 ms budget, naive RDO doesn't fit.
108108

109109
**Dep direction:** the tropical-GEMM kernel's canonical home is `lance-graph::blasgraph` (the bit-exact cognitive-side substrate). *(Corrected 2026-07-16, audit #3: blasgraph's shipped semirings are binary-Hamming over 16384-bit BitVec — the numerical f32 min-plus kernel is UNWRITTEN and lands there when A6 wires it; the only shipped min-plus today is `bgz17::ScalarCsr::spmv_min_plus`, a lossy-sibling prototype.)* Post-Plan-H, `ndarray-codec → lance-graph::blasgraph` is allowed because both are sibling crates above `ndarray` hardware.
110110

@@ -218,7 +218,7 @@ pub fn kmeans_predict_batched(
218218
);
219219
```
220220

221-
**Codec layer:** ~30-50 LoC per stage to wrap the BLAS call into the predict/A6/A4 flow. **BLAS layer:** zero new lines — all four already exist or land via existing infrastructure (`bf16_tile_gemm`, `cam_pq`, `simd_int_ops`).
221+
**Codec layer:** ~30-50 LoC per stage to wrap the BLAS call into the predict/A6/A4 flow. **BLAS layer:** the four wrapper APIs above still require implementation — what exists today is the underlying infrastructure they compose (`bf16_tile_gemm`, `cam_pq::kmeans` + `CamCodebook::distance_batch`, `simd_int_ops`); the wrappers are thin but not written (corrected 2026-07-16 — the earlier "zero new lines, all four already exist" overstated).
222222

223223
This is what makes R-3's ≤1500 generic-codec-LoC ceiling reachable. Most of the heavy lifting is already in `blas_level2`; the codec adds wrappers and orchestration, not new BLAS code.
224224

0 commit comments

Comments
 (0)