Conversation
41bf7fe to
350ef4b
Compare
350ef4b to
cab184f
Compare
|
READY (cab184f) but LAST per the landing order: rebased on master; 59 green + 10 skipped + RTD; re-vendor from the master re-measure follows before the final merge. |
|
Re-vendored from the master re-measure: docs/source/_data/gfql_benchmarks.json now equals pyg-bench published/docs-numbers.json at pyg-bench main af1513f (PR graphistry/pyg-bench#249: SNB SF0.1/SF1 arms and q1–q9 20k/100k boards at pygraphistry master 5a6586f, sentinel baseline at 86de0f5). 166 of 262 cells changed, all within noise of the 4 September board except the seeded SNB shapes, which are the release wins (pandas message-content 10.06→1.66 ms, seed-lookup 30.12→3.91 ms; polars seed-lookup 21.82→10.19 ms). Losses stay on the pages through the same cells (100k q8 Kuzu 9.7 ms vs polars 14.0 ms; polars tag-cooccurrence 30.2→31.7 ms, inside its 17% run-to-run spread). The SNB pre-landing disclosure is gone (both scales are the release measurement); the GraphFrames note now says #2024 has landed since and the ladder was not re-run. docs/test_bench_numbers.py 37 pass. Stays open until the rest of the queue lands (merges last). |
|
CI receipt at 090ad9e: 59 check-runs success, 10 skipped by the path filter (docs-only change). docs/test_bench_numbers.py 37 pass locally; the vendored JSON equals pyg-bench main af1513f. |
090ad9e to
60d39f0
Compare
|
Rebased onto master 1a41079 (60d39f0, docs only, clean). Expect the docs-numbers contract test to be RED on this head by design: the vendored boards were measured at 5a6586f and the landed 0.60 stack put them 19 compute commits behind master (policy allows 12). Rather than waive, the SNB arms, q1–q9 boards and sentinel are being re-measured at master 1a41079 on dgx now; this PR gets re-vendored from that run, with any cell that moved called out here. The three 0.59.0-era runs (GraphFrames ladder ×2, filter-pagerank) get explicit drift waivers with the reason stated in the pyg-bench PR. Review the prose and structure via the RTD preview meanwhile: https://pygraphistry--2017.org.readthedocs.build/en/2017/gfql/index.html |
|
CI on 60d39f0: 59 green, 11 filter-skipped. Correction to my note above: CI does not run docs/test_bench_numbers.py on this PR (it is among the skips), so CI green here is not evidence for the numbers. Locally that test fails on drift (19 compute commits past the policy's 12) until the re-vendor from the master 1a41079 re-measure lands. |
|
Editorial pass 1 (owner items 1–5, 7–12 on engines; 6 started) at 3dbf8fc. Preview rebuilds from this head in a few minutes:
|
|
Jargon pass (item 6) at 777475d across performance, index_adjacency, indexing, benchmark_filter_pagerank, benchmark_graphframes, overview: 'seeded' → 'from known nodes' except the two defining first uses; 'receipt' / 'committed artifact' → 'run record'; 'parity' → 'identical results'; 'point lookup' → 'single-node lookup by id'; 'lane' → 'path'. No number changed. Items 1–12 from your list are now all applied; add more per page and I queue them in plan.md before editing. |
|
Re-vendored at d660e33 from the master 1a41079 re-measure (pyg-bench #251, publishing now). docs/test_bench_numbers.py passes locally including the drift policy (37 passed). Cells that moved more than 15% vs the 5a6586f vendoring: graphbench.20k.q4.polars_gpu 16.41 → 4.53 ms (the GPU tiny-point outlier did not reproduce), graphbench.20k.q8.polars_gpu 2.17 → 2.53, snb.sf01.message_creator.gfql_pandas_idx 2.87 → 2.33; everything else within run-to-run spread. Verdict changes on the boards: 100k q5 polars vs Kuzu is now a tie (0.97×, was a weak 1.12× win); 20k q8 is a tie (1.10×); 100k q8 stays the one loss. Board prose on performance.rst updated to the new verdicts; the tallies are roles and follow the cells automatically. |
d660e33 to
762b011
Compare
…chmark pages - gfql/index: Start Here (about, overview, quick, cypher) + Guides hubs gfql/perf/index and gfql/reference/index + Developer Resources; no page moved, URLs unchanged; loading_graph_data joins the reference hub - benchmark_filter_pagerank, benchmark_graphframes: lede states result and engine to use; one "Method and limits" section; numbers unchanged and re-verified against bench cells / results.json; Cypher comments use // - CHANGELOG: [Development] / Docs Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…provenance block - overview: positioning paragraph (only open-source in-process Cypher on dataframes; columnar/vectorized framing); remove empty hidden toctree that rendered the page as a folder; trim marketing wording - benchmark_filter_pagerank: retitle as a case study, list it under Start Here; lede says what is compared and the outcome; drop the above-the-fold caveat paragraph; add a pipeline lead sentence - benchmark_graphframes: lede says what is compared and the 7-of-8 outcome; add per-task bar charts rendered from results.json by gfql_bench_charts.py (byte-reproducible, covered by the chart sync test) - _ext/gfql_bench: bench-provenance accepts several runs and renders one Measurement block (reader-facing fields only; caveats folded in via :disclosures:) - vendor pyg-bench published numbers (runtime strings now name the RAPIDS base image; pyg-bench #220); numbers unchanged Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…e 6/8); wrap chart strings Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…engines table, tested Cypher twins - index: Start Here = about, overview, speedup case study; quick + cypher head the Language Reference hub (spec linked) - benchmark_filter_pagerank: "Speedup Case Study" title - indexing / index_adjacency: plain-language titles and cross-refs - overview: one "Why GFQL?" list (was Why + Key Features), engine-design and launch blog links - engines: opening note boxes folded into prose; "coming from" table with concrete change + measurement pointer; Memgraph row; PuppyGraph removed; section "Parity and fallback rules" - about: examples 3-7 gain tested Cypher twins; example 4 pattern now returns rows on the sample graph; sample-graph block is executable in the doc lane - slop words removed across gfql pages (leverage/seamless/honest/powerful/ critical gap); no numbers added Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…NB matrix; cell-derived tallies; drift enforcement - vendor pyg-bench published/docs-numbers.json @ main 7426456 (relane board with Kuzu/Memgraph/Neo4j, snb_aligned SF0.1/SF1, drift waivers) - _ext/gfql_bench_data: :bench-tally: (strict "N of M" from cells, registers refs) and max_compute_commit_drift enforcement via git rev-list on graphistry/compute, honoring policy.drift_waivers; None on shallow clones - performance.rst: no release-pinned headings; legacy untraceable literals removed; SNB tables with losses stated; five-engine q1-q9 boards; single Measurement block with caveats; q8 rendered as a result (cold binding) - overview: where GFQL wins and where databases win, with links - tests: tally, drift (fail / waived / unknown), vendored runs within policy Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…s diagnostic - vendor pyg-bench published numbers with results/filter-pagerank-059-20260904 (GFQL CPU/GPU re-measured at 3fb216d under the pinned PageRank contract) - lede states CPU-vs-Neo4j on both graphs and the Twitter GPU ratio; the GPlus GPU time renders via :bench-diag: with the selection caveat, and no GPlus GPU-vs-CPU ratio is claimed; alt texts follow the cells - gplus_pipeline chart drops the withdrawn ratio annotation Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
Vendor the pyg-bench publication (graphbench-q1q9-{20k,100k}-20260904:
pandas, polars, polars-gpu at 3fb216d; Memgraph/Neo4j lanes of 2026-08-12).
performance.rst gains the polars-gpu column, tallies for GPU-vs-CPU and
GFQL-vs-each-database, and names every loss (Kuzu q4/q8, Memgraph q3/q5/q6/q7,
Neo4j q5, GPU q8). Provenance block retargeted to the new runs.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…e the PageRank solver Vendor pyg-bench's GraphFrames ladder publication (LiveJournal and Orkut: host-Spark GraphFrames baselines, GFQL GPU PageRank with the solver stage as a component cell, and the released code's LJ filter/hop rows as diagnostic cells behind #2023). The page now prints cells only, with one multi-run provenance block; the June saved results and the stale parity file are gone. The chart generator reads the ladder cells (no results.json), draws the solver share as the solid part of each GFQL PageRank bar and the rest of the query as the light part, marks unmeasured systems, and is tested on a synthetic ladder. Friendster is named as the next rung with the reason it waits on #2024. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…ly with a label Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…he measured ceiling Vendor pyg-bench's second ladder publication: GFQL filter/hop cells and ratios for LiveJournal and Orkut at the head of #2024 (disclosed as pre-landing in the provenance block), and the Friendster rung (1.8B edges, filter + 1-hop on the CPU streaming path, 106 GB peak of a 119 GB host). The page opens with that ceiling, prints wins and losses side by side (GPU PageRank 18.3x/12.5x; CPU faster on filter and 1-hop; GraphFrames wins 2-hop on both graphs; the GPU streaming executor loses every hop), gains a Friendster table and chart, and keeps the released code's 2-hop as a diagnostic before-state sentence. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…nt (T2.9.10) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…ntence from the performance lede (review round 4: A5, B2) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
… a Fastest column Review round 4: the q1-q9 and SNB boards made the reader compare digits to see who won. bench-board renders a board from published cells (same gate as the :bench: role), bolds the fastest cell on each row, names it in a last column, and prints a dash for a system that has no number for that query. The four boards on the performance page now use it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…ocks; values unchanged) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…rs) and say where the loss comes from Review round 4: the published GFQL SNB column ran without indexes while the databases ran with theirs. The boards now print the indexed pandas and polars arms (pyg-bench snb-aligned-indexed-20260904) next to Kuzu, Neo4j and Memgraph; the prose says the index engages only on the hop-shaped rows (2.5-3x there) and that the point lookups keep a ~20 ms per-call floor in the chain pipeline (#2027). The un-indexed run stays in the provenance block as the before-state. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…4j run) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh7i1
…ger-vs-streaming and igraph-conversion answers Re-vendors pyg-bench docs-numbers (batch C/D): CPU PageRank cells for LiveJournal and Orkut (GraphFrames wins; solver share shown), Friendster 2-hop cell, Friendster ceiling text (GPU stops at 1-hop, PageRank does not fit on either path), engine guidance for CPU PageRank (#2032), streaming-vs-eager note; charts regenerated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
…ures in GiB from the receipts Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
… and the gates added Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WwMmVFo44ADiRRj5cxh1i1
…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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RhboAkmjP5eXbCCkX1BMt
…(pyg-bench #249) docs/source/_data/gfql_benchmarks.json = pyg-bench published/docs-numbers.json after the release close-out re-measure at pygraphistry master 5a6586f (SNB SF0.1/SF1 arms, q1-q9 20k/100k boards); provenance directive names the master runs; the SNB pre-landing disclosure is gone (both scales are the release measurement) and the GraphFrames ladder note says the fix has since landed without a re-run. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QztW7jYsDd66e8rb8pJNQA
…tent, docs-review editorial policy engines: one keyword section replaces the duplicated opening and switching sections; footnote citations folded into the decision table and three plain rules; 'when not to use Polars' merged into the table; parity section cut to three bullets; internal process prose removed; competitor table states benefits; plain sentences in the memory note. perf hub: case study first, then the boards, then a separate track for getting the speed on your data, with a reference list. agents/skills/docs-review: the editorial policy (plain language, jargon table, AI-writing tells, review procedure). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HdYcPgiafGGutW9KfG3gg1
…run records, identical results) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HdYcPgiafGGutW9KfG3gg1
…measure (pyg-bench #251); board prose follows the new verdicts Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HdYcPgiafGGutW9KfG3gg1
048b454 to
a489e9a
Compare
GFQL documentation now gives readers a short start path, separate performance and language-reference hubs, and an engine guide tied to measured results. Existing page URLs are preserved. The performance hub leads with the speedup case study and separates examples and architecture from benchmark tables and methodology.
The benchmark pages use verified publication cells for values, ratios, query tallies, and generated charts. This refresh includes GraphBench Q1–Q9 at 20k/100k from PyGraphistry
d20c6ae1af73e64b05aa4b24459dfd3ba247edf9and SNB SF0.1/SF1 fromf7a7253bc95d9cc0663bd130a53a03f2f355cbcd. The source revisions remain distinct. The final artifact is byte-identical to merged pyg-bench #267; #268 records and enforces matching CPU placement. Historical database measurements keep their original dates and methods.The engine guide explains input-based
autoselection, frame conversion, unsupported-query behavior, and when Polars-GPU still executes CPU operations. Indexed message-content and creator lookups lead the measured four-engine SNB comparisons at both scales. The full tables retain every eligible result. GraphBench 20k q8 is explicitly identified as CPU-only under Polars-GPU. Instrumented GPU diagnostics are excluded from published timings.The editorial pass addresses the recorded review items: shorter prose, defined lookup terms, consolidated engine decisions and memory guidance, simpler comparison tables, and one provenance section per page. The Neo4j/GDS and GraphFrames case studies retain their measured scope and limits. Benchmark contracts enforce source freshness, correct references, derived tallies, and chart synchronization.
Validation on the final data and prose:
$parameters in the case study; none point to the four final edited pages.Review previews:
Performance changes and private benchmark/TCK companions are merged. This public documentation PR is the remaining owner review and merge step. Final head
048b454673dcf673ba23784d938f9ab73845f02bpassed GitHub CI with 57 successful jobs and 11 conditional skips, plus CodeQL. Read the Docs build 34554961 passed on that exact head. Eleven hosted pages match the locally verified tables and headings; all six SVG assets load, and the final source/run identifiers were checked through the preview source link. The hosted performance page was also inspected in Chrome. The skipped route/TCK/GPU jobs do not add coverage; the separately recorded merged-master and private-companion validation remains the evidence for those areas.