feat(report): ReportPlan fold substrate, zero-copy pivot, reports as OGAR projection sources - #1271
Conversation
…OGAR projection sources lance-graph-report (workspace member): a coordinate-native report plan that LOWERS INTO lance-graph-quack and runs on mask-risc's one evaluator — no second evaluator, no independent aggregate semantics, no row loop. - ReportPlan = Selection (lazy; a predicate is never a bitmap by construction) + coordinate providers with roles (ordinal Field, derived Bucket — never a materialized lane) + measures as mergeable fold states. - PhysicalKey excludes roles/order/top-k, so rotation is Arc<CellSpace> + a new View: never transpose data to pivot, transpose meaning. - Planner: fold key, partitions, dense vs sparse accumulator (product never allocated), selection carrier (validity plane / extent / tile-local / one reused mask). Every knob has an inertness test; `explain` shows the plan. - String-free execution core (FieldId / MaskId / SourceId / ordinals), fenced by a source test; text only in boundary (KV over the contract's ContentStore/ContentSink, CAM codebook of ContentIds), render (JSON/CSV data export) and explain. lance-graph-report-ogar (EXCLUDED; path-deps the OGAR sibling): ReportSource implements ogar-doc-ir's DocObjectSource over ANY existing object source and answers grid_of (OGAR #307), so one DocCompose arranges objects and reports by reference, rotates by naming another view, pins by Revision(generation), and renders through OGAR's Typst emitter. No report rendering ontology. Measured: execution allocates identical bytes at N and 64N; rotation <64 B with the payload address unchanged; a 100k-row 8x12 pivot resolves 20 CAM labels; fold does 0 CAM/KV work. Disable-verified falsifiers throughout. Board: entry + index, STATUS_BOARD D-RPT-1..5, LATEST_STATE, ISSUES (ISS-REPORT-NO-COMPOSITE-KEY-GROUP-FOLD), AGENT_LOG (recon run). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCEP2fZdHYdMCtcEVcTpS2
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (27)
✨ Finishing Touches📝 Generate docstrings
Comment |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_222481ca-91ec-42b1-83cc-dd2b9306ec00) |
|
Every step in the job passed (log for job 107266243280):
After the tests, Why this happens here and not on I'm re-running the failed job once. If the save times out again, the fix is outside this PR's code: raise Generated by Claude Code |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_5cbfc3cb-de63-404e-92c3-c2b88ba60157) |
… statuses) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCEP2fZdHYdMCtcEVcTpS2
board: record #1271 merge (arc entry, LATEST_STATE, D-RPT statuses)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GXUahz73MZxtxWcfpHp9dG
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GXUahz73MZxtxWcfpHp9dG
What
crates/lance-graph-report(workspace member). A coordinate-native report plan that lowers intolance-graph-quackand runs onlance-graph-mask-risc's single evaluator. It adds no second evaluator, no independent aggregate semantics and no row loop.ReportPlanhas three parts:Selection— a predicate never becomes a bitmap just by being written;Field, or a derivedBucketthat is never materialized as a lane;FoldState::identity/merge/finalize). Adding a measure does not touch the pivot engine.Zero-copy pivot.
PhysicalKeyleaves out roles, axis order and top-k. A pivot rotation is therefore the sameArc<CellSpace>with a newView: never transpose data to pivot, transpose meaning.Physical planner (
explainshows its choices). It picks:Every planner knob has an inertness test.
String-free execution core. It uses only
FieldId,MaskId,SourceIdand ordinals, and a source-fence test enforces that. Text appears in three places only:boundary: a KV built on the contract'sContentStore/ContentSink, plus a CAM codebook ofContentIds that stores no text;render: JSON/CSV data export;explain.crates/lance-graph-report-ogar(EXCLUDED; path-deps theOGARsibling).ReportSourceimplementsogar_doc_ir::resolve::DocObjectSourceover any existing object source and answersgrid_offor report views.DocComposecan arrange object A, a report, and object B by reference:Revision(generation)pins a report;Snapshotfalls back to the slot's fallback.Depends on / companions
SlotOutcome::Grid/grid_of/emit_grid, needed bylance-graph-report-ogar.z8run-lancenative nodes build this plan. FlowMessages carry only handles.Tests / measurements
All suites were run locally and pass; clippy
-D warningsis clean on every crate.lance-graph-reportagnostic suite (TEST 1–9 + knob twins)lance-graph-report-ogarconvergence (rotation through composition, mixed recombination, Live/Revision/Snapshot, label rename)grid_offails its tests;report_bench(4M rows, avx2 build):Board
STATUS_BOARDD-RPT-1..5,LATEST_STATE(no contract delta), and theAGENT_LOGrecon run.ISSUES:ISS-REPORT-NO-COMPOSITE-KEY-GROUP-FOLD. A 2-D fold costs one pass per partition member. The missing primitive is a multi-lane group fold inndarray::simd/mask-risc, not a report-side loop.SUPERSESSION-INDEXregenerated, with no diff.🤖 Generated with Claude Code
https://claude.ai/code/session_01DCEP2fZdHYdMCtcEVcTpS2
Generated by Claude Code