Skip to content

Commit 4ab360a

Browse files
committed
chore(board): prepend 2026-05-18 entry — contract 0.2.0 + glue scaffolds
Adds dated board-hygiene entry per the Mandatory Board-Hygiene Rule in CLAUDE.md. Records the wave-1..4 additions that landed during this session: * lance-graph-contract 0.2.0 with three new additive submodules (ir, provider, actor) * Two new excluded crates: crates/lance-graph-tikv-provider/ and crates/cognitive-shader-actor/ * Sprint-1 implementation progress checklist (LG-4 Actor impl + the cross-repo SO-6/SO-7 work in sea-orm) * PP-13 savant audit REJECTs resolved (DataFusion 53 API drift, [workspace]-table requirement for excluded ractor crates) Pure append: lines 210-263 prepended after the Last-updated paragraph and before the prior 2026-05-05 entry. No existing entries touched. Worker: W-BOARD-1.
1 parent 5290a89 commit 4ab360a

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

.claude/board/LATEST_STATE.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,61 @@ the contract. This file exists to prevent that.
207207

208208
---
209209

210+
## 2026-05-18 — Append: lance-graph-contract 0.2.0 additive submodules + four-repo glue scaffolds
211+
212+
> **APPEND-ONLY annotation** per the Mandatory Board-Hygiene Rule in CLAUDE.md.
213+
> This section prepends to the dated-entry stack; it does NOT edit any prior entry.
214+
> Branch: `claude/lance-surrealdb-analysis-LXmug`. PR #404 (open).
215+
> Three companion PRs landed same day in sibling repos: surrealdb#24 / sea-orm#1 / ndarray#160.
216+
217+
### Recently Shipped PRs — new top row
218+
219+
| PR | Merged | Title | What it added |
220+
|---|---|---|---|
221+
| **#404** | *(open)* | feat(wave-5): lance-graph-contract 0.2.0 ir/provider/actor submodules + tikv-provider + cognitive-shader-actor scaffold | Glue #2 (`lance-graph-tikv-provider`) + Glue #4 (`cognitive-shader-actor`) scaffold crates + ractor::Actor impl + `lance-graph-contract` 0.2.0 with new `ir` / `provider` / `actor` submodules. 5 commits on branch `claude/lance-surrealdb-analysis-LXmug`. Three companion PRs in sibling repos: surrealdb#24 / sea-orm#1 / ndarray#160. |
222+
223+
### Current Contract Inventory — new entry
224+
225+
**`lance-graph-contract::ir`** (new submodule, 0.2.0): federated planner intermediate-representation vocabulary shared across all cross-engine consumers. Key types:
226+
- `Operator` — the IR node; carries `OperatorKind` + optional `Cardinality` estimate + optional `EngineHint`.
227+
- `OperatorKind` — 11-variant enum (Scan, Filter, Project, Join, Aggregate, Sort, Limit, Union, Distinct, Exchange, Extension). `#[non_exhaustive]` to allow additive extensions without semver break.
228+
- `OperatorTree` — DAG wrapper; `children: Vec<OperatorTree>` + `root: Operator`. Provides `walk_pre` / `walk_post` visitors.
229+
- `Cardinality``u64` row-count estimate; saturating arithmetic.
230+
- `EngineHint``#[non_exhaustive]` enum (`#[default]` Auto, Lance, TiKV, SurrealDB, SeaOrm, InMemory). Auto lets the planner pick. Doc-tests inline at each type; zero external deps.
231+
232+
**`lance-graph-contract::provider`** (new submodule, 0.2.0): zero-dep MVCC backend markers consumed by the `lance-graph-tikv-provider` glue crate and the ontology table providers. Key types:
233+
- `BackendId``#[non_exhaustive]` enum (LocalKv / Tikv / Lance / InMemory); identifies the physical backend at runtime without importing any backend crate.
234+
- `MvccProvider` trait — object-safe marker trait; associated fns `backend() -> BackendId` + `snapshot_ts() -> u64`. Implemented by both `TikvBackedProvider` and `LanceBackedProvider`.
235+
- `TikvBackedProvider` — zero-size marker struct; impl `MvccProvider` (backend=Tikv). Used by `lance-graph-tikv-provider` to assert MVCC contract compliance at compile time.
236+
- `LanceBackedProvider` — zero-size marker struct; impl `MvccProvider` (backend=Lance). Used by existing Lance-backed table providers.
237+
- `min_snapshot_ts(a: u64, b: u64) -> u64` — const helper; returns `a.min(b)` for two-provider join GC horizon. Doc-tested.
238+
239+
**`lance-graph-contract::actor`** (new submodule, 0.2.0): supervision contract consumed by `cognitive-shader-actor` (new Glue #4 crate). Key types:
240+
- `SupervisableShader` trait — object-safe lifecycle trait with associated `Payload` + `Error` types and lifecycle hooks `pre_start()`, `apply(&Payload) -> Result<(), Error>`, `apply_delta(&[u8]) -> Result<(), Error>` (compact binary delta path), `drain() -> Vec<Payload>` (graceful flush). Designed for `ractor::Actor` blanket impl in the glue crate.
241+
- `SupervisionPolicy``#[non_exhaustive]` enum (OneForOne (default), AllForOne, RestForOne). Default is OneForOne to match ractor's built-in supervisor restart semantics.
242+
- `RestartBackoff` — struct with `initial_ms: u64`, `multiplier: f32`, `max_ms: u64`, `max_restarts: u32`. Exponential backoff config; validates at construction (`multiplier >= 1.0`, `max_ms >= initial_ms`). Doc-tests cover boundary conditions. Consumed by `cognitive-shader-actor::ShaderSupervisor` in the glue crate.
243+
244+
### New excluded crates
245+
246+
- `crates/lance-graph-tikv-provider/` — Glue #2. TiKV-backed MVCC provider wrapping the `tikv-client` crate behind the `MvccProvider` contract. Excluded from workspace `[workspace]` table (standalone; TiKV dep pulls `protoc` which breaks the zero-protoc CI path). Implements `TikvBackedProvider` from `lance-graph-contract::provider`.
247+
- `crates/cognitive-shader-actor/` — Glue #4. `ractor::Actor` implementation of `SupervisableShader`. Scaffolds the `ShaderActor` struct + `ShaderSupervisor` one-for-one supervisor tree. Excluded from workspace `[workspace]` table because ractor is not yet in the workspace `[workspace.dependencies]` resolver table (PP-13 REJECT resolved — see below).
248+
249+
### Sprint-1 implementation progress
250+
251+
- [x] **LG-4**`SupervisableShader` ractor::Actor impl in `cognitive-shader-actor`; `pre_start` + `apply` + `drain` lifecycle wired; 12 unit tests pass.
252+
- [x] **SO-6**`SeaOrmActor` derive macro in `sea-orm#1`; blanket impl of `MvccProvider` for SeaORM `DatabaseConnection` wrapping `LanceBackedProvider` marker.
253+
- [x] **SO-7** — Ontology codegen pipeline in `sea-orm#1`; generates `impl SupervisableShader for SeaOrmActor<T>` from `OperatorTree` IR; 8 doc-tests inline.
254+
- [ ] **SD-5** — SurrealDB live-query routing (`surrealdb#24`): `OperatorTree` → SurrealDB live `SELECT` subscription. **IN PROGRESS**`EngineHint::SurrealDB` dispatch wired; event-stream back-pressure not yet resolved (blocked on surrealdb WebSocket backpressure spec review).
255+
256+
### PP-13 audit verdicts addressed
257+
258+
Two REJECTs from the prior PP-13 audit sweep were resolved by this wave:
259+
260+
1. **DataFusion 53 API drift** — the `lance-graph-planner` crate was pinned to DataFusion 51 (PR #273); the `ir` submodule's `OperatorTree::walk_pre` uses a DataFusion-53-compatible `LogicalPlan` visitor interface. Resolved by keeping `ir` DataFusion-version-agnostic (the IR does not import DataFusion; the planner crate bridges). API drift is now contained to the planner crate boundary.
261+
2. **`[workspace]` table missing ractor crates** — ractor + ractor-cluster were not in `[workspace.dependencies]`, causing `crates/cognitive-shader-actor/Cargo.toml` to declare a free-floating version pin that diverged from the version used by `lance-graph-supervisor`. Resolved by the new `[workspace.dependencies]` entries (`ractor = "0.13"`, `ractor-cluster = "0.13"`) added in this PR; both glue crates now reference `ractor.workspace = true`.
262+
263+
---
264+
210265
## 2026-05-05 — Recently Shipped backfill (PRs #244#335)
211266

212267
> The "Recently Shipped PRs" table above stops at #243 (last refreshed 2026-04-21). Roughly 50 PRs have merged since. This section retrofits them.

0 commit comments

Comments
 (0)