You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|#293|`src/hpc/signature_pde.rs`| Goursat-PDE signature kernel, anti-diagonal SIMD wavefront, f64/`F64x8` (doc sketch of f32/`F32x16` corrected); now consumed by lance-graph `crates/sigker/src/kernel.rs:35`|
22
+
|#294|`src/hpc/randomized_signature.rs`, `examples/randomized_signature_bench.rs`| Cuchiero-Schmocker-Teichmann randomized-signature recurrence, `F64x8`-only (zero new arch code, zero `unsafe`); 2.00x–3.79x vs scalar; follow-up `c129662` fixed a real `debug_assert_eq!`-compiles-out-in-release bug on the ragged-path guard |
23
+
|#295| same 3 files, docs only | Docstring coverage 61.76%→100% (42/42 fns) after CodeRabbit's scoped-diff coverage check flagged #294; caveat: merged before the bot could re-verify, so the 100% figure is a manual `///` scan, not bot-confirmed |
Copy file name to clipboardExpand all lines: .claude/knowledge/vertical-simd-consumer-contract.md
+62-4Lines changed: 62 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -226,9 +226,25 @@ impl U64x4 {
226
226
227
227
---
228
228
229
-
## W1.5 — DEFERRED primitives (gated on `lance-graph:crates/sigker` certification)
230
-
231
-
Three more primitives are queued behind a certification gate. `crates/sigker` is `lance-graph`'s path-signature codec — it's pure-scalar Rust today (zero raw intrinsics, zero ndarray dep), and is positioned as the **Index-regime third encoding lane** alongside palette-distance (bgz17) and NSM tiling (deepnsm). It explicitly bypasses the `I-NOISE-FLOOR-JIRAK` iron rule (Jirak 2016 Berry-Esseen for weak-dependence data) via Hambly-Lyons 2010 path-signature uniqueness.
229
+
## W1.5 — sigker primitives (gate now OPEN; #6 and #7 SHIPPED)
230
+
231
+
> **⊘ CORRECTED (2026-09-04) — this section originally read as three
232
+
> future/deferred primitives, gated on a certification that had not yet
233
+
> happened. That framing is stale: the gate opened 2026-05-07
> 2026-05-07"; `jc/src/hambly_lyons.rs` is a live module, `pub mod
236
+
> hambly_lyons;` at `jc/lib.rs:37`), and W1.5-#6 and W1.5-#7 have since
237
+
> shipped (ndarray PR #293, PR #294). The original sketches below are
238
+
> kept verbatim, each followed by a correction block, rather than
239
+
> silently rewritten — see the standing note at the end of this section
240
+
> for why every remaining sketch (#8) must be treated as unverified.**
241
+
242
+
Three primitives were queued behind a certification gate. `crates/sigker` is `lance-graph`'s path-signature codec — it's pure-scalar Rust today (zero raw intrinsics, zero ndarray dep), and is positioned as the **Index-regime third encoding lane** alongside palette-distance (bgz17) and NSM tiling (deepnsm). It explicitly bypasses the `I-NOISE-FLOOR-JIRAK` iron rule (Jirak 2016 Berry-Esseen for weak-dependence data) via Hambly-Lyons 2010 path-signature uniqueness.
243
+
244
+
> **⊘ CORRECTED:** the paragraph above and the "When `jc Pillar 11`… lights
245
+
> up" sentence below described the gate as future-conditional. **The gate is
246
+
> OPEN as of 2026-05-07.**`crates/sigker` is also no longer purely scalar —
247
+
> its consumer wiring for #6 is live (see #6 below).
232
248
233
249
When `jc Pillar 11` (Hambly-Lyons signature uniqueness on lance-graph paths) activates and sigker is benchmarked at production carrier widths, the W1.5 queue lights up:
234
250
@@ -249,15 +265,57 @@ where
249
265
250
266
2D banded grid sweep; closure-parameterized kernel evaluator per step.
251
267
268
+
> **⊘ CORRECTED — SHIPPED (ndarray PR #293).** The sketch above is WRONG on
269
+
> lane type and is superseded, not merely deferred. Real state:
270
+
> - Shipped as `ndarray::hpc::signature_pde::signature_pde_sweep`, an
271
+
> anti-diagonal SIMD wavefront sweep.
272
+
> -**Lane type is f64-based, NOT `F32x16` as sketched.** The real
273
+
> consumer (`lance-graph crates/sigker`) works in `f64`/`Vec<f64>`, so the
Cuchiero-Schmocker-Teichmann (2021) randomized signatures: Gaussian random-matrix-vector update with `F32x16` state. Same closure-batch shape as W1a-#1, different lane type.
255
282
283
+
> **⊘ CORRECTED — SHIPPED (ndarray PR #294).** The sketch above is WRONG on
284
+
> lane type AND on data ownership. Real state:
285
+
> - Shipped as `ndarray::hpc::randomized_signature`, exposing
286
+
> `randomized_signature_sweep` / `_sweep_with` / `_step`, plus
287
+
> `INCREMENT_EPSILON = 1e-15`.
288
+
> -**Lane type is `F64x8`, not `F32x16`.**
289
+
> -**Ownership model was wrong too:** the sketch implied Gaussian entries
290
+
> re-derived per step from `(seed, depth)`. In reality the projections are
291
+
> materialized ONCE per encoder instance (seeded SplitMix64 + Box-Muller)
292
+
> and reused across every path and step — so the primitive must CONSUME
293
+
> caller-owned buffers, not generate them internally.
294
+
> -**`k` is a runtime value** (32…4096 in the consumer's own tests), not a
295
+
> fixed lane width — the hot path is a `k×k` GEMV plus an axpy per path
296
+
> dimension, O(T·d·k²), not a single-register lane update.
297
+
> -**Consumer NOT yet wired:**`lance-graph crates/sigker/src/randomized.rs:95`
298
+
> `RandomizedSignatureBuilder::encode` still runs its own scalar loop.
299
+
> Wiring is in flight in a parallel task as of this correction — treat as
300
+
> in-flight, not done.
301
+
256
302
### W1.5-#8 — `TD-NDARRAY-SIMD-LYNDON-PACK`
257
303
258
304
Log-signature compression in the Lyndon basis of the free Lie algebra (7-13× compression, lossless). Pack/unpack primitives on `I16x16` state with combinatorial-index awareness.
259
305
260
-
**No code needed today for W1.5.** Mentioned here so W1a additions are designed broad enough to compose with these later (in particular: the closure-batch shape introduced in W1a-#1 is the foundation for W1.5-#7).
306
+
> **⊘ CORRECTED — still unbuilt, but NO LONGER GATED** (Pillar 11 is active,
307
+
> see above). **The `I16x16` state sketch above is UNVERIFIED against the
308
+
> real consumer** (`lance-graph crates/sigker/src/log_signature.rs`) — the
309
+
> equivalent sketches for #6 and #7 were BOTH wrong on lane type (2-for-2
310
+
> miss rate). Do not implement from this sketch. Read the actual consumer
311
+
> source first and confirm the real lane type before writing any code.
312
+
313
+
**Standing note (2026-09-04):** the pattern across #6 and #7 is that this
314
+
doc's API sketches predate the consumer code and drift from it — both
315
+
missed the lane type, and #7 also missed the ownership model and the
316
+
runtime-`k` shape. Treat every remaining sketch in this section as a
317
+
starting hypothesis to verify against `lance-graph crates/sigker`, never as
0 commit comments