diff --git a/.claude/board/ISSUES.md b/.claude/board/ISSUES.md index 9f72c02..9502a8a 100644 --- a/.claude/board/ISSUES.md +++ b/.claude/board/ISSUES.md @@ -3,6 +3,13 @@ > Open blockers and cross-repo follow-ups. Append new entries at the top; > change only the `Status` line of an existing entry. +## ISS-LG-GRAPHFLOW-LANCE-PATHS — graph-flow-lance cannot be consumed by git + +- **Status:** OPEN (found 2026-10-14, rs-graph-llm `5b54301`; upstream ask) +- **Where:** rs-graph-llm `crates/graph-flow-lance` (#27), excluded from that workspace. +- **What:** the crate is the shape D-FLOW-1 needs: graph-flow tasks whose `Context` carries generation-checked plan and result handles, a fan-out as one mask-set coordinate folded in one pass, a checkpoint that fails closed on a newer source generation. It path-deps `lance-graph-report` and two `z8run` siblings, so a HubSPO-rs build cannot fetch it, and its handle generation is `z8run-lance`'s `Envelope.generation` (u32; see ISS-LG-REPORT-GENERATION-WIDTH). +- **Ask:** git coordinates for `graph-flow-lance` and `z8run-lance` (the same move mask-risc made in lance-graph #1457). Until then D-FLOW-1 designs against it without depending on it. + ## ISS-LG-METHOD-TABLE-PROBE-ONLY — the declared-method table is not consumable - **Status:** WITHDRAWN 2026-10-13: there is no table left to ask for. lance-graph #1524 (D-CMR-RESET, `9cfdf2a3`) moved the method layer to a backup branch: it was a second algebra beside the folds, lowered per call with fresh scratch, and `billable_hours` measured 430–480 µs against 283 µs for a scalar row loop. The rebuild (D-CMR, open) makes a class method a binding `classid × WideFieldMask → an existing compiled fold`, which is what HubSPO-rs's Quack programs already are. D-ACT-4 and the D-QRY-3/6 measures therefore build on compiled Quack programs now and gain a name when D-CMR lands. Earlier: OPEN (found 2026-10-12, lance-graph `42fa2a34`; upstream ask, not built here) @@ -112,7 +119,7 @@ ## ISS-LG-PREFLIGHT-STALE-PINS — consumer preflight whitelists old lance pins -- **Status:** REOPENED 2026-10-11, upstream text only; this workspace is correct. lance-graph #1436 set the preflight to `12.*`/`0.39.*`; #1437 then moved the fleet to lance 13 / lancedb 0.40 / Rust 1.99.0, so `ogar-consumer-preflight.md:45` is stale again. HubSPO-rs floats `13.*`/`0.40.*` (#6). Ask: the preflight points at lance-graph `CLAUDE.md` § Key Dependencies instead of restating numbers, so the next major bump cannot stale it. +- **Status:** STILL OPEN 2026-10-14 at lance-graph `c21bd165`: the preflight paragraph reads `lance 12.*` · `lancedb 0.39.*` while the fleet is on 13 / 0.40. Earlier: REOPENED 2026-10-11, upstream text only; this workspace is correct. lance-graph #1436 set the preflight to `12.*`/`0.39.*`; #1437 then moved the fleet to lance 13 / lancedb 0.40 / Rust 1.99.0, so `ogar-consumer-preflight.md:45` is stale again. HubSPO-rs floats `13.*`/`0.40.*` (#6). Ask: the preflight points at lance-graph `CLAUDE.md` § Key Dependencies instead of restating numbers, so the next major bump cannot stale it. - **Where:** lance-graph `.claude/knowledge/ogar-consumer-preflight.md`. - **What:** it whitelists `lance =9.0.0 / lancedb =0.33.0`; lance-graph `CLAUDE.md` floats `12.*` / `0.39.*`. Approved 2026-10-10 (OD-11): follow diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index ff0469c..a16d0dc 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -46,11 +46,11 @@ | D-id | Deliverable | Size | Status | Evidence | |---|---|---|---|---| -| D-QRY-1 | Filter compiler: HubSpot filter groups (AND within group, OR across groups; operators EQ/NEQ/LT/…/HAS_PROPERTY/CONTAINS_TOKEN/IN/BETWEEN) → Quack program | L | Shipped | `hubspo-store::catalog` + `hubspo-query::filter`; 600 random filter sets equal a plain-loop oracle on mask-risc; #19 | +| D-QRY-1 | Filter compiler: HubSpot filter groups (AND within group, OR across groups; operators EQ/NEQ/LT/…/HAS_PROPERTY/CONTAINS_TOKEN/IN/BETWEEN) → Quack program | L | Shipped | 2026-10-14: lance-graph #1546 `lance-graph-relalg` (D-RA-1) normalizes a filter before it runs and answers a contradictory one as `Empty` without a program; D-CMR-1 moves that set algebra into the contract. Adopt it there, not from the prototype crate; `hubspo-store::catalog` + `hubspo-query::filter`; 600 random filter sets equal a plain-loop oracle on mask-risc; #19 | | D-QRY-2 | Lists: active (incremental on version delta) + static (stored mask); membership history | L | Shipped | `hubspo-query::list` (refresh, static add/remove/members, added/removed); tests vs full recomputation. P-LIST-1 2.6 ms at 10M; P-SPARSE-1 1.93 ms, 257 KiB flat at 10M. Storage of list masks lands with D-STO-1 | | D-QRY-3 | Saved views + board view (report pivot over pipeline × stage) | M | In progress | board half shipped (#21): `hubspo-query::board` (count + amount per stage as two `GroupReduce` programs); saved-view half open: `SavedView` value type + sort at the edge over existing Quack programs (`Agg::Rows` storage order, `Count` threshold bisection for I32, `GroupReduce Count` for coded lanes); ORDER BY is asked upstream only if a page-cost probe fails | | D-QRY-4 | Quack lowering of callcenter's `ParsedQuery` (the upstream DataFusion `parsed_query_to_plan` is an unimplemented stub) | M | Queued | | -| D-QRY-5 | Association-traversing filters ("contacts whose company has an open deal"): Quack `Semijoin` over edge lanes for one hop; multi-hop needs cypher-quack shapes that do not exist yet → upstream request first | L | Queued | | +| D-QRY-5 | Association-traversing filters ("contacts whose company has an open deal"): Quack `Semijoin` over edge lanes for one hop; multi-hop needs cypher-quack shapes that do not exist yet → upstream request first | L | Queued | 2026-10-14: the hop is D-CMR-5, preimage `f⁻¹(S)` under a proven mapping (lance-graph `d-cmr-concept-chain-normalization-v1`), not chained key reads (withdrawn in #1524 / ndarray #359). One hop is ready on the existing Quack `Semijoin`; multi-hop waits on D-CMR-5 rather than on new cypher-quack shapes | | D-QRY-6 | Reports: single-object, cross-object, funnel, time-series, attribution skeleton on `lance-graph-report` | XL | Queued | | | D-QRY-7 | Full-text search over records (Tantivy, reference-indexed, reconciled from the store — tesseract-paperless `search` pattern) | M | Queued | | @@ -97,7 +97,7 @@ | D-id | Deliverable | Size | Status | Evidence | |---|---|---|---|---| -| D-FLOW-1 | Workflow model: trigger (criteria / event / schedule / webhook), enrolment, re-enrolment, actions, branches (if/then, value equals, A/B), delays (fixed, until date, until event) as graph-flow graphs | XL | Queued | | +| D-FLOW-1 | Workflow model: trigger (criteria / event / schedule / webhook), enrolment, re-enrolment, actions, branches (if/then, value equals, A/B), delays (fixed, until date, until event) as graph-flow graphs | XL | Queued | 2026-10-14: rs-graph-llm #27 `graph-flow-lance` — graph-flow tasks over lance-graph-report folds, the Context holds generation-checked handles, never rows (ISS-LG-GRAPHFLOW-LANCE-PATHS) | | D-FLOW-2 | Enrolment triggers: mask delta between published versions ∩ criteria from a stored offset; due-run mask for delays and schedules; watcher as wake-up only (H-ADR-7, amended 2026-10-10) | L | Queued | P-FLOW-1 2026-10-10: commit → enrolled 13.8 ms p50 / 27.1 ms p99 at 1k workflows | | D-FLOW-3 | Action library: set property, create record/task, send email, add to list, webhook, rotate owner, delay, branch, custom code (loco program) | L | Queued | | | D-FLOW-4 | Sequences: steps (email / task / call), stalwart future-release for scheduled sends, unenrol on reply/meeting booked (MTA hook / webhook) | L | Queued | |