fix(gfql): reject cross-kind WITH rebinds early - #2004
Merged
Conversation
lmeyerov
marked this pull request as ready for review
August 21, 2026 02:33
lmeyerov
added a commit
that referenced
this pull request
Aug 21, 2026
lmeyerov
added a commit
that referenced
this pull request
Aug 21, 2026
lmeyerov
added a commit
that referenced
this pull request
Aug 21, 2026
lmeyerov
added a commit
that referenced
this pull request
Aug 21, 2026
This was referenced Aug 21, 2026
Merged
lmeyerov
added a commit
that referenced
this pull request
Aug 21, 2026
lmeyerov
changed the base branch from
master
to
fix/gfql-1916-relationship-type-validation
August 21, 2026 20:13
lmeyerov
commented
Aug 21, 2026
lmeyerov
force-pushed
the
fix/gfql-1916-relationship-type-validation
branch
from
August 27, 2026 10:54
053f216 to
133a019
Compare
lmeyerov
force-pushed
the
fix/gfql-1937-cross-kind-with-rebind
branch
from
August 27, 2026 11:15
8db1439 to
6605296
Compare
lmeyerov
force-pushed
the
fix/gfql-1916-relationship-type-validation
branch
from
August 28, 2026 14:46
133a019 to
76d87ab
Compare
lmeyerov
force-pushed
the
fix/gfql-1937-cross-kind-with-rebind
branch
from
August 28, 2026 15:38
6605296 to
dd044ea
Compare
lmeyerov
changed the base branch from
fix/gfql-1916-relationship-type-validation
to
master
August 28, 2026 15:39
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.
Scope
Addresses #1937 item 2 only; this PR does not close the issue.
The local Cypher compiler now rejects a
WITHprojection that rebinds a bare MATCH-bound whole-entity alias onto another live MATCH-bound entity alias, including node-to-edge and edge-to-node cases. These shapes previously escaped the same-kind guard and could resolve rows and properties against different bindings. The decline uses the existing typedE108contract.Final stack
master, exact prepared base222799c6e2890536080f68cb0e6e7f957124d77cdd044ea4d68c6f9e529b5de693d31b341d2d28ed9b5ba26d9— reject cross-kind WITH rebinds early36090a8c5— tighten scalar rebind error contracts914e351c3— type the cross-kind boundary testsdd044ea4d— add the release changelog entryCHANGELOG.mdgraphistry/compute/gfql/cypher/lowering.pygraphistry/tests/compute/gfql/test_alias_scoping_semantics.pyBoundary contract
Error side, asserted directly at compile time:
E108, valuea AS rE108, valuer AS bSafe and adjacent controls remain unchanged:
RETURN a AS bWITHoutput consumed by a reentryMATCHReview resolution
The sole review question asked whether both sides of the error boundary were sufficiently tested. The final test matrix covers both cross-kind error directions plus same-kind errors, scalar/property vs entity sources, live vs fresh/reentry targets, carries/self-renames, terminal RETURN, and validation precedence.
Validation
CPU/code gates only; no Docker, cuDF/GPU, DGX, or broad local suite:
Any,object,cast,getattr,setattr,hasattr, unqualifiedList/Dict, or broadstrannotations./bin/lint.sh: pass, including Ruff, type-hygiene, comment-density, and relative-import guards./bin/typecheck.sh: pass, mypy 2.3.1, 336 source filesgit diff --check: pass[Development]→FixedLanding
Maintainer-authorized merge-commit landing with admin override only after this exact head is fully green. Retain the source branch.