Repository navigation
perf(gfql): use resident seed indexes in native Polars chains - #2038
Conversation
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
3a90313 to
47da761
Compare
daa7348 to
994f4bd
Compare
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
994f4bd to
479a421
Compare
9b190d2 to
2eeaf99
Compare
479a421 to
530afa4
Compare
2eeaf99 to
bf9acb7
Compare
530afa4 to
059b2a8
Compare
bf9acb7 to
14be070
Compare
059b2a8 to
bf46a8a
Compare
14be070 to
7f4e7a7
Compare
bf46a8a to
86b7017
Compare
7f4e7a7 to
e08a059
Compare
86b7017 to
88ff625
Compare
e08a059 to
ab3a32e
Compare
88ff625 to
6312e18
Compare
ab3a32e to
ff818e1
Compare
6312e18 to
0664c3a
Compare
ff818e1 to
a45374b
Compare
0664c3a to
4a80847
Compare
|
READY (4a80847) — restacked on the new #2037 head after #2035 landed (patch-id identical to the previous head). This restack also drops a duplicated #2033 CHANGELOG bullet that an earlier union rebase had left (one bullet now). Round-003 amplification (owner ask: reflect on the review flow before this lands) ran at this head: 51 shapes × pandas/polars/cuDF, default route vs the polars seed lane and the chain fast path forced to decline, plus the pandas full path as oracle. Polars cells: every served shape ( Cost receipt (local box, medians of 7, ms; polars seeded typed hop Receipts at 4a80847
|
…exes and records its engagement The seeded shortcut ran before the polars index-policy consult and served un-indexed shapes without a trace step, so gfql_explain lost the policy off/force diagnostics and the engine-mismatch reason, the i1913 engagement pin saw no index step, and a named seeded shape skipped the collect-once combine. The lane now requires the resident node-id + adjacency indexes, runs after the consult, and records an indexed_traversal step. Structured schema errors and duplicate-id declines from the amplification pass are kept and pinned. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…olars seed lane Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
4a80847 to
a3991bb
Compare
|
CI at the rebased head a3991bb (on master 4c5e252 after #2037 landed): 77/77 check-runs success (tck-gfql, changed-line coverage, polars lane, hygiene guards included). Patch-id identical to the previous head 4a80847, so the GPU receipt (1331 passed, 3 failures identical to master, #2043) and the round-003 parity sweep carry over. Ready to merge; #2040 auto-retargets to master afterwards and I rebase it. |
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…index-resolved seeds Vendors pyg-bench published/docs-numbers.json at main 5cf81ae (byte-identical): the SF0.1 indexed GFQL cells come from the #2038 head with the pre-landing disclosure, SF1 stays the release measurement. The SNB prose states the native op-list arm, where the resident indexes now engage, the hop rows they do not change, and the open issues behind the remaining gaps. Release-notes Performance paragraph names the native seed resolution and the sentinel's native op-list points. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
Native Polars op-list queries with named nodes, scalar edge filters, or a filtered destination fell through to the full traversal even when resident indexes could resolve the seed. Single-node native queries also scanned their seed predicates.
Reuse the shared seeded reduction for these directed one-hop shapes and the shared node resolver for single-node queries. The seeded lane serves only when the resident node-id and adjacency indexes cover the hop (validated once, passed into the reduction), runs after the polars index-policy consult so
index_policyoff/force/use and the engine-mismatch diagnostics are unchanged, and records anindexed_traversalstep sogfql_explainreports the engagement. Indexed gathers preserve input table order; native aliases match the full Polars path. Unsupported shapes, alias/property collisions, duplicate node ids, and graphs without a usable index keep the existing full-path behavior; scalar filters raise the same structured schema errors as the full path.Stacked on #2037. Fixes #2033.
Validation (head cdbcc64): polars lane
bin/test-polars.sh8,238 passed (4 failures are the local libcublas/dask environment, identical on the base); index contract + narrow-combine + seed-resolution + seeded-fast-path suites 436 passed; 33 pins in the new test file (explain/index_trace engagement, policy-off and no-index declines with full-path parity, duplicate-id decline, schema-error parity). Ruff, changed-file mypy, comment-density, type-hygiene, Cypher surface guard and diff checks pass. DGX measurements follow from a dedicated frozen checkout. Found while amplifying: #2039 (polars full path raises on an edge alias colliding with its filtered edge column).