Skip to content

fix(gfql): preserve explicit whole-entity projection provenance - #2079

Merged
lmeyerov merged 13 commits into
masterfrom
fix/gfql-entity-projection-provenance
Sep 14, 2026
Merged

lmeyerov merged 13 commits into
masterfrom
fix/gfql-entity-projection-provenance

Conversation

@lmeyerov

@lmeyerov lmeyerov commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

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 combined ffa52d8abaaf81f1a3508f2723a7f79bdcda2db0; 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.

@lmeyerov
lmeyerov marked this pull request as ready for review September 13, 2026 01:31
Comment thread graphistry/compute/gfql/cypher/reentry/execution.py Outdated
Comment thread graphistry/compute/gfql/cypher/reentry/execution.py Outdated
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", {})

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dynamic typing patterns like setattr are forbidden, as are ignore rules

Comment thread graphistry/compute/gfql/cypher/result_postprocess.py Outdated
Comment thread graphistry/compute/gfql/cypher/result_postprocess.py Outdated
…jection-provenance

# Conflicts:
#	CHANGELOG.md
…jection-provenance

# Conflicts:
#	CHANGELOG.md
@lmeyerov
lmeyerov merged commit 65c359b into master Sep 14, 2026
88 checks passed
@lmeyerov
lmeyerov deleted the fix/gfql-entity-projection-provenance branch September 14, 2026 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant