From 7e6a0c560f7ec283c421e32f47d7226e0550a222 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 15 Oct 2026 07:54:31 +0000 Subject: [PATCH] =?UTF-8?q?board:=20#1562=20merged=20(D-WAL)=20=E2=80=94?= =?UTF-8?q?=20PR=20arc=20entry,=20LATEST=5FSTATE=20moves=20D-WAL=20from=20?= =?UTF-8?q?branch=20to=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_011BMJnDBAfzcuQh5HeT39Rh --- .claude/board/LATEST_STATE.md | 11 ++++++----- .claude/board/PR_ARC_INVENTORY.md | 7 +++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index e36bbbe28..228813310 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -1,9 +1,10 @@ -## 2026-10-15 — main after #1555 (merged); D-WAL measured on branch `ccr-9f3b8075-74u47l-wal-shootout` (unpushed) +## 2026-10-15 — main after #1562 (merged `31ef1802`); D-WAL on main -- **On `main` (#1555, merged `5366a5ab`):** `crates/lance-graph-metta` (excluded) with the D-MTP-1 join probe and the D-MTP-1b range-hop probe; plan `metta-polyfill-v1.md`. Examples only, no production change. -- **On branch:** D-WAL-5/6/7 (decisions accepted 2026-10-15): `LanceCycleWriter` opens and writes on a Lance session with an 8 MiB metadata cache (`SESSION_METADATA_CACHE_BYTES`); index forms of `deinterlace` / `local_trajectories` in `lance-graph-planner::temporal`. -- **Contract (new type):** `temporal_pov::{VersionClock, ClockError}` — rows of an append-only lane per version; `rows_at(&TemporalPov)` resolves a point of view to one half-open row range (v4: 4.2 ns per call; a per-row scan of 400k rows takes 127 µs). Eight bytes per version. -- **On branch (unpushed):** D-WAL-1/2/3 for `LanceCycleWriter` vs the lancedb 0.40 MemWAL path (probe, harness, example behind `lancedb-sdk`); entry `2026-10-15-d-wal-shootout.md`. No production wiring. +- **On `main` (#1562):** D-WAL-1/2/3 for `LanceCycleWriter` vs the lancedb 0.40 MemWAL path (probe, harness, example behind `lancedb-sdk`); entry `2026-10-15-d-wal-shootout.md`. No production wiring of MemWAL. +- **On `main` (#1562):** D-WAL-5/6/7: `LanceCycleWriter` opens and writes on a Lance session with an 8 MiB metadata cache (`SESSION_METADATA_CACHE_BYTES`); index forms of `deinterlace` / `local_trajectories` in `lance-graph-planner::temporal` (refuse more than `u32::MAX` rows). +- **Contract (new type):** `temporal_pov::{VersionClock, ClockError}` — rows of an append-only lane per version; `rows_at(&TemporalPov)` resolves a point of view to one half-open row range (v4: 4.2 ns per call; a per-row scan of 400k rows takes 127 µs). Eight bytes per version. Not yet wired into a writer or reader. +- **Decision D-LNC-7:** L stays the default with the capped session; MemWAL stays an option; the 60-minute soak is deferred. +- **On `main` (#1555, merged `5366a5ab`):** `crates/lance-graph-metta` (excluded) with the D-MTP-1 join probe and the D-MTP-1b range-hop probe; plan `metta-polyfill-v1.md`. ## 2026-10-14 — the rail walk applies the reader's field mask on branch `ccr-0455e606-wmtsor` (unmerged) diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index b69bd656c..8133ed9bb 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -1,3 +1,10 @@ +## 2026-10-15 — lance-graph PR #1562 (merged `31ef1802`, branch `ccr-9f3b8075-74u47l-wal-shootout`, head `e38779f5`, 19 commits) — D-WAL: LanceCycleWriter vs MemWAL measured; capped session cache, version clock, copy-free temporal projections + +- **Added:** plan `wal-shootout-v1.md`; probe `tests/wal_shootout_probe.rs` (V1–V4, behind `lancedb-sdk`), harness `tests/wal_common/`, examples `wal_shootout` and `wal_rss_probe`; `LanceCycleWriter` session capped at `SESSION_METADATA_CACHE_BYTES` (8 MiB) on create and open; contract `temporal_pov::{VersionClock, ClockError}`; `temporal.rs` index forms (`deinterlace_indices`, `local_trajectories_indices`, `local_trajectory_indices_of`); entry `2026-10-15-d-wal-shootout.md`; STATUS rows D-WAL-1..7, D-LNC-7. +- **Locked:** both write paths are crash-atomic per cycle and lose no acknowledged cycle (V1 sweep 0 ms … 10 s brackets the boundary on both arms; V2 reaches ACK 2/5/9 on both); MemWAL needs `durable_write = true`. L's RSS growth was Lance's session metadata cache (V²/2 manifest fragments): 628 MiB default vs 7.8 MiB capped at 1,600 versions. D-LNC-7: L default, MemWAL optional. +- **Deferred / open:** the 60-minute soak; seeding the version clock from storage on open; compaction/deletes break the clock's prefix property (fragment-id remap needed); clock not wired into a writer or reader. +- **Confidence:** high for V1/V2 and the cache cap (test-first, disable runs red); medium for D-WAL-2/3 timings (one VM, soak truncated at 27.5 min). + ## 2026-10-14 — lance-graph PR #1555 (merged `5366a5ab`, branch `ccr-9f3b8075-74u47l-metta`, head `457a8c41`, 14 commits) — D-MTP: MeTTa over the masking-algebra polyfill; two-hop join and the hop as a range - **Added:** plan `metta-polyfill-v1.md` (Hyperon seams, PeTTa vs Hyperon measurements, MeTTa-as-IR verdict, datafrog fork as the exact Rust oracle). `crates/lance-graph-metta` (own workspace, excluded; datafrog from `AdaWorldAPI/datafrog` as a dev-dependency only) with `join_probe` (D-MTP-1, two-hop join through Quack `Semijoin`) and `join_range_probe` (D-MTP-1b, the hop as a range under a monotone `dst`). Entries `2026-10-14-metta-polyfill-map.md`, `-d-mtp-1-join.md`, `-d-mtp-1b-range-hop.md`; STATUS D-MTP rows.