fix(gfql): preserve explicit whole-entity projection provenance - #2079
Merged
Merged
Conversation
This was referenced Sep 12, 2026
Closed
lmeyerov
marked this pull request as ready for review
September 13, 2026 01:31
…jection-provenance
lmeyerov
marked this pull request as draft
September 13, 2026 02:43
This was referenced Sep 13, 2026
lmeyerov
commented
Sep 13, 2026
lmeyerov
commented
Sep 13, 2026
lmeyerov
commented
Sep 13, 2026
| for field in frame.columns: | ||
| not_na = cast(SeriesT, frame[field].notna()) | ||
| present = not_na if present is None else cast(SeriesT, present | not_na) | ||
| presence = getattr(result, "_cypher_entity_projection_presence", {}) |
Contributor
Author
There was a problem hiding this comment.
dynamic typing patterns like setattr are forbidden, as are ignore rules
lmeyerov
commented
Sep 13, 2026
lmeyerov
commented
Sep 13, 2026
…jection-provenance # Conflicts: # CHANGELOG.md
lmeyerov
marked this pull request as ready for review
September 13, 2026 17:42
…jection-provenance # Conflicts: # CHANGELOG.md
…jection-provenance # Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Whole-entity results now retain typed, independent entity kind and presence metadata, so unlabeled entities and present entities with null-valued properties remain distinguishable from scalar/property projections and absent OPTIONAL rows. Snapshots and row-aligned metadata survive projection, renaming, OPTIONAL null filling and reentry without caller mutation.
Declared Plottable fields replace dynamic metadata access and unchecked casts. None distinguishes unrecorded provenance from an explicit empty mapping; unchanged UNION/legacy TCK oracles verify that boundary. OPTIONAL test helpers preserve the real bound result graph instead of discarding metadata. New code contains no getattr/setattr/hasattr/cast calls or B010 suppressions.
Merged as
65c359b5d94231224010ce00f7bcbbfadcb1e4fb, after #2077 and #2078. The CHANGELOG conflict preserved both entries; 347 focused tests passed with 283 environment/GPU skips after resolution. The actual merged graphistry tree exactly equals the device-tested combinedffa52d8abaaf81f1a3508f2723a7f79bdcda2db0; final source equivalence is recorded.Combined validation at
ffa52d8abaaf81f1a3508f2723a7f79bdcda2db0: PolarsGPU26 1301passed,0skipped; cuDF26 image1086passed,215skipped; cuDF25 image1053passed,215skipped,33CPU-Polars1.21 baseline failures, identically reproduced on master92 and tracked in #2082. PolarsGPU25 is not claimed. Strict GPU execution and unsupported-capability diagnostics are explicit.Main Q1–Q9 assessment found no demonstrated repeatable product regression: originalthree timing flags repeated in neither predeclared control; one control's GPUQ9 flag did not repeat in the second. Actual Q3/Q4/Q9 paths and strictGPU receipts match between sources. Original flags, raw samples, source/image/data/query pins, thread-setting differences and uncertainty remain disclosed in #2074 and local
plans/gfql-2073-followups/performance-resolution.md.Final product CI34888725964 SUCCESS: 83 successful jobs, 2 conditional skips (no-plans-in-repo, changed-line-coverage). CodeQL SUCCESS. Two clean production review waves and current source-equivalence/integration evidence are recorded. TCK #201 is merged as84b098c2784849a47e1c3c12bbf0766a2ffe3b4b. Final default paired CI34888937724 passes4257tests/189skips/689xfail. Native Polars normal/all-off CI34889497333 passes4352tests/94skips/689xfail each. The remaining opt-in cuDF TCK variants are not claimed as executed by these CPU workflows; actual product cuDF coverage is described above. Benchmark #261 is merged as26e90c745f3233578230a96923b27b6bd7505ca9 and pins product65; postmerge contract97tests/0skips and smoke both pass. #2074 records final evidence and explicit limits. No further user action is needed.