Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
6e25ebc
fix(vindex): reject LYRW format_version newer than the reader's own
chrishayuk Aug 1, 2026
d010827
docs(vindex2): format spec v2.0-draft-2 and pre-registered experiment…
chrishayuk Aug 1, 2026
6eae5ea
feat(vindex): LYRW v2 container — streaming writer, non-copying reader
chrishayuk Aug 1, 2026
63cecf4
feat(vindex): container-generation detection, and rename the generations
chrishayuk Aug 1, 2026
0d7465e
fix(vindex): write the expert store for separate-tensor MoE models
chrishayuk Aug 1, 2026
0bcdb68
test(e0): golden-capture harness and pinned baselines for two models
chrishayuk Aug 1, 2026
bf3c0ee
docs(vindex3): E0 corpus, E7 control coverage, and the generation rename
chrishayuk Aug 1, 2026
e15026e
feat(vindex): MoE programme manifest — schema, router vocabulary, def…
chrishayuk Aug 1, 2026
073d1eb
fix(vindex): scope defect suppression, pin diagnostics, retire `eager`
chrishayuk Aug 1, 2026
78ad0ae
feat(vindex): capability foundations — operand states, region coordin…
chrishayuk Aug 1, 2026
45b3a68
feat(vindex): authority as a monotonic fold, plus the traversal input…
chrishayuk Aug 1, 2026
ea4683b
feat(vindex): cross-role segment compatibility as an alternative-leve…
chrishayuk Aug 1, 2026
4306124
feat(vindex): programme traversal — facts first, capabilities inferred
chrishayuk Aug 1, 2026
a7c5a04
feat(vindex): operation admission, with authority attached separately
chrishayuk Aug 1, 2026
de7a876
feat(vindex): canonical reconstruction, and the document/profile scop…
chrishayuk Aug 1, 2026
cb43433
refactor(vindex): authority belongs to a route, not to an operation
chrishayuk Aug 1, 2026
57e9b33
feat(vindex): WALK is request-scoped, and a residual vector is always…
chrishayuk Aug 1, 2026
b7b4340
feat(vindex): infer_walk — a narrow projection, provably
chrishayuk Aug 1, 2026
8498de4
refactor(vindex): plans carry components, not only bank regions
chrishayuk Aug 1, 2026
7eb3e51
feat(vindex): infer_local_decode — the last major semantic inference
chrishayuk Aug 1, 2026
f5c89a2
test(e0): wire the preservation matrix into CI — and it immediately c…
chrishayuk Aug 1, 2026
a189243
refactor(vindex): schema version is not a container generation
chrishayuk Aug 1, 2026
fb6e3ab
fix(vindex): AnyOf no longer collapses the route before binding
chrishayuk Aug 1, 2026
f13bf38
feat(vindex3): reference MoE execution — V2-1 first rung
chrishayuk Aug 2, 2026
dd2017d
feat(vindex3): Gemma one-layer routing parity over real VINDEX2 bytes
chrishayuk Aug 2, 2026
f5dd256
feat(vindex3): bind production router kernel with exact Gemma parity
chrishayuk Aug 2, 2026
53f3be5
docs(roadmap): track the VINDEX3 programme and move the active slice
chrishayuk Aug 2, 2026
b2b94df
feat(vindex3): bind production expert kernel with exact Gemma parity
chrishayuk Aug 2, 2026
23e7621
feat(vindex3): locked-input sweep — every Gemma MoE layer, classified
chrishayuk Aug 2, 2026
c624ece
feat(vindex3): free-propagation composition, bit-identical end to end
chrishayuk Aug 2, 2026
0465978
test(vindex3): close the MoE-backend coverage gap, and gate it
chrishayuk Aug 2, 2026
5a12711
feat(vindex3): endpoint parity — final norm, logits and greedy token
chrishayuk Aug 2, 2026
c097dbd
feat(inference): generalise the engine's MoE adapter to any bound route
chrishayuk Aug 2, 2026
536e214
feat(vindex3): MAP-3A selected-operand residency example
chrishayuk Aug 2, 2026
2067f5b
feat(inference): strict refusal policy — a missing expert is not an a…
chrishayuk Aug 2, 2026
bd1c857
feat(vindex3): decode parity — teacher-forced, then free-running
chrishayuk Aug 2, 2026
f5c6637
refactor(execution): extract the refusal vocabulary into a leaf crate
chrishayuk Aug 2, 2026
14b8a03
test(vindex3): cover the boundary trait's delegation
chrishayuk Aug 2, 2026
24a267c
feat(execution): give FfnBackend a typed error channel
chrishayuk Aug 2, 2026
8b8bd7c
feat(engine): a refused expert cannot become a token
chrishayuk Aug 2, 2026
469897b
feat(vindex3): a container that writes, opens, binds and executes
chrishayuk Aug 2, 2026
22b3e99
docs(vindex3): name the spec files after the format they specify
chrishayuk Aug 2, 2026
ebaabd8
style(vindex3): rustfmt the container tests
chrishayuk Aug 2, 2026
10760f4
test(compute): cover the latent-mask stats machinery
chrishayuk Aug 2, 2026
7d3e1ab
docs(roadmap): what's next after PR #197
chrishayuk Aug 2, 2026
c420a21
feat(engines): a refused expert cannot become a token, in every engine
chrishayuk Aug 2, 2026
4de60e5
docs(roadmap): close VINDEX3 item 1, record the dense-only engine gap
chrishayuk Aug 2, 2026
fa3c39f
feat(engines): the dense-only forwards stop answering for a different…
chrishayuk Aug 2, 2026
c128873
docs(roadmap): close VINDEX3 item 1b — the dense-only forwards
chrishayuk Aug 2, 2026
5292987
refactor(kv,vindex): split the oracle out of generation.rs, stop exam…
chrishayuk Aug 2, 2026
7e8c1a3
docs(kv): decode cost model — measured bottlenecks across all nine en…
chrishayuk Aug 2, 2026
f946899
fix(kv,compute): the window must bound attention, not just storage
chrishayuk Aug 2, 2026
bbb8711
refactor(kv,cli): rename UnlimitedContext to WindowedCheckpoint, reje…
chrishayuk Aug 3, 2026
9640019
feat(compute): per-layer sliding-window attention on the CPU path
chrishayuk Aug 3, 2026
0372c36
fix(kv,bench): measure a whole token, and count K/V held off-engine
chrishayuk Aug 3, 2026
a6c3895
feat(kv,compute): a windowed engine keeps the fused path on CPU
chrishayuk Aug 3, 2026
b711663
refactor(metal): the K/V cache's position is not its occupancy
chrishayuk Aug 3, 2026
181e27c
feat(metal): a windowed engine keeps the fused path on Metal too
chrishayuk Aug 3, 2026
7d46f7e
docs(kv): the engine notes describe the paths that exist now
chrishayuk Aug 3, 2026
0eac5ab
fix(fixtures): the Gemma-3 Q4K fixture must carry the QK-norm it decl…
chrishayuk Aug 3, 2026
177a109
docs(kv): roadmap entry and a superseded note on the window guard
chrishayuk Aug 3, 2026
1c93279
docs(kv): split the roadmap into current state and changelog
chrishayuk Aug 3, 2026
5887614
docs(kv): restore the changelog I overwrote, and merge into it
chrishayuk Aug 3, 2026
95ab64d
Split examples three ways: demos, tooling, and research probes
chrishayuk Aug 3, 2026
64f1f7a
docs(roadmap): head-major K/V layout as open work, with its measureme…
chrishayuk Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/larql-boundary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ jobs:

- name: Run examples
run: |
cargo run -p larql-boundary --example encode_decode
cargo run -p larql-boundary --example gate_decision
cargo run -p larql-demos --example encode_decode
cargo run -p larql-demos --example gate_decision

coverage:
name: coverage · ubuntu
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/larql-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ jobs:

- name: Run examples
run: |
cargo run -p larql-core --example edge_demo
cargo run -p larql-core --example graph_demo
cargo run -p larql-core --example algorithm_demo
cargo run -p larql-core --example filter_demo
cargo run -p larql-core --example serialization_demo
cargo run -p larql-demos --example edge_demo
cargo run -p larql-demos --example graph_demo
cargo run -p larql-demos --example algorithm_demo
cargo run -p larql-demos --example filter_demo
cargo run -p larql-demos --example serialization_demo

coverage:
name: coverage · ubuntu
Expand Down
79 changes: 79 additions & 0 deletions .github/workflows/larql-demos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# larql-demos cross-platform CI
#
# The crate holds no logic — every target is an `examples/*.rs` binary —
# so there is nothing to unit-test or measure coverage on. What CI must
# guarantee is that the demos still compile against the crates they
# demonstrate, and that the weight-free ones still run.
#
# Demos needing model weights are compiled here but not executed; they
# are exercised by hand against a real vindex.

name: larql-demos

on:
push:
branches: [main]
paths:
- 'crates/larql-demos/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/larql-demos.yml'
pull_request:
branches: [main]
paths:
- 'crates/larql-demos/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/larql-demos.yml'
workflow_dispatch: {}

jobs:
test:
name: test · ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 30

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-14]

steps:
- uses: actions/checkout@v7

- name: Install stable Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Cache cargo registry + build artefacts
uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-demos-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-demos-

- name: Format check
run: cargo fmt -p larql-demos -- --check

- name: Check (all targets)
run: cargo check -p larql-demos --all-targets

- name: Clippy (warnings as errors)
run: cargo clippy -p larql-demos --all-targets --no-deps -- -D warnings

# The weight-free demos, i.e. exactly the set larql-core and
# larql-boundary used to run before these moved here.
- name: Run the weight-free demos
run: |
cargo run -p larql-demos --example edge_demo
cargo run -p larql-demos --example graph_demo
cargo run -p larql-demos --example algorithm_demo
cargo run -p larql-demos --example filter_demo
cargo run -p larql-demos --example serialization_demo
cargo run -p larql-demos --example encode_decode
cargo run -p larql-demos --example gate_decision
12 changes: 12 additions & 0 deletions .github/workflows/larql-vindex.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,18 @@ jobs:
- name: Clippy
run: cargo clippy -p larql-vindex --all-targets -- -D warnings

# E0 — VINDEX2 preservation. Named separately from the general test
# step so a failure reads as "the shipped generation regressed" rather
# than as one red test among hundreds. Any regression blocks merge:
# finding one now identifies the introducing commit, finding one after
# another ten changes produces archaeology.
#
# Scope caveat: this is the generation-boundary subset. The full matrix
# (decode, WALK, slice, publish/pull) needs multi-GB checkpoints and
# runs locally against tests/goldens/e0 via scripts/e0-capture-goldens.sh.
- name: E0 - VINDEX2 preservation (generation boundary)
run: cargo test -p larql-vindex --test e0_generation_boundary

- name: Tests
run: cargo test -p larql-vindex

Expand Down
38 changes: 38 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ members = [
"crates/larql-core",
"crates/larql-vindex",
"crates/larql-vindex-spec",
"crates/larql-execution",
"crates/larql-factory",
"crates/larql-inference",
"crates/larql-kv",
"crates/larql-lql",
"crates/larql-cli",
"crates/larql-demos",
"crates/larql-server",
"crates/larql-router",
"crates/larql-router-protocol",
Expand All @@ -34,6 +36,7 @@ default-members = [
"crates/larql-kv",
"crates/larql-lql",
"crates/larql-cli",
"crates/larql-demos",
"crates/larql-server",
"crates/larql-router",
"crates/larql-router-protocol",
Expand Down
14 changes: 7 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ larql-core-bench:
cargo bench -p larql-core --bench graph

larql-core-examples:
cargo run -p larql-core --example edge_demo
cargo run -p larql-core --example graph_demo
cargo run -p larql-core --example algorithm_demo
cargo run -p larql-core --example filter_demo
cargo run -p larql-core --example serialization_demo
cargo run -p larql-demos --example edge_demo
cargo run -p larql-demos --example graph_demo
cargo run -p larql-demos --example algorithm_demo
cargo run -p larql-demos --example filter_demo
cargo run -p larql-demos --example serialization_demo

larql-core-coverage:
@if ! command -v cargo-llvm-cov >/dev/null 2>&1; then \
Expand Down Expand Up @@ -536,8 +536,8 @@ larql-boundary-bench-test:
cargo test -p larql-boundary --benches

larql-boundary-examples:
cargo run -p larql-boundary --example encode_decode
cargo run -p larql-boundary --example gate_decision
cargo run -p larql-demos --example encode_decode
cargo run -p larql-demos --example gate_decision
cargo run -p larql-boundary --example accuracy

larql-boundary-coverage:
Expand Down
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,15 @@ gemma3-4b.vindex/
feature_labels.json # Probe-confirmed labels
```

**Container generations.** `index.json`'s `version` is the sole discriminator —
schemas 1–2 are **VINDEX2** (what `extract` writes, and what every published
vindex is today), schema 3 is **VINDEX3**, the successor container for sparse
models. One binary reads both; `larql show` and `larql verify` dispatch on the
version and describe each generation in its own terms rather than flattening
one into the other. VINDEX3 is still draft — the ABI is not frozen and
`extract` does not emit it yet — so in practice everything below is VINDEX2.
See [`crates/larql-vindex/docs/vindex3-format-spec.md`](crates/larql-vindex/docs/vindex3-format-spec.md).

Three extraction levels:

| Level | CLI Flag | LQL Syntax | Size (f16) | Enables |
Expand Down Expand Up @@ -464,7 +473,7 @@ delta on Metal, which the per-engine bench numbers confirm.
| `markov-rs` | residual stream | derivative | exact logits under arch contract | **98.0** |
| `markov-rs-codec` | compressed residuals | derivative | bounded KL | **98.1** |
| `boundary-per-layer` | per-layer codec residuals | derivative | bounded KL per-layer | **98.7** |
| `unlimited-context` | KV (within window) + checkpoints | derivative | exact within window | 94.2 |
| `windowed-checkpoint` | KV (within window) + checkpoints | derivative | exact within window | 94.2 |
| `turbo-quant` | quantised K/V | canonical (destructive) | bounded KL | 85.0 |
| `boundary-kv` | K/V + boundary frames | canonical | exact logits | composes `standard` |
| `apollo` | boundary retrieval store | n/a (retrieval) | task-level | orthogonal |
Expand Down
Loading
Loading