Repository navigation
fix(gfql): validate absent relationship types - #2003
Conversation
| bool(available_types) or has_declared_type_catalog or "type" not in edge_columns | ||
| ) | ||
| if can_judge_types: | ||
| for rel_type in relationship_pattern.types: |
There was a problem hiding this comment.
Is this sufficient positive and negative testing on either side of the boundary?
There was a problem hiding this comment.
The original positive/negative pair was sound for the no-carrier versus generic-carrier boundary, but it did not isolate the second disjunct added by the implementation: an explicitly declared empty relationship-type catalog. Exact commit 133a01955ede7d65126216cfa484a09814b93c5d adds that direct strict-binder case (type carrier + edge_types=() rejects NOPE). The resulting matrix now covers no carrier, generic undeclared carrier, explicit empty catalog, and nonempty declared catalog. Six focused tests pass; lint/mypy are clean; the incremental diff adds zero prohibited typing/dynamic-attribute tokens.
e216bcd to
712e2d1
Compare
053f216 to
133a019
Compare
712e2d1 to
d357373
Compare
133a019 to
76d87ab
Compare
Summary
type-carrier case as unjudgeable without scanning instance values.[Development]inCHANGELOG.md.This closes the validator/executor agreement residual tracked by #1916 without changing default strictness, the declared-schema API, or remote behavior.
Final linear state
76d87ab22639075394d5536de8e2e2f175a48e37masterat merged fix(gfql): preserve boolean sum zero on polars gpu #2002 commitfcf369fb920a280030706ce672fdd1a28a4440e6The three reviewed implementation/test patches are range-diff exact after the final rebase. The fourth commit adds only the requested changelog entry.
Relationship-type judgement boundary
The strict binder has four pinned states:
E301.typecarrier without declarations: membership is unjudgeable without scanning values, so validation defers.Validation
strscan: clean../bin/lint.sh: clean, including Ruff, comment-density, and import guards../bin/typecheck.sh: mypy 2.3.1, 336 source files, zero issues.Review resolution
Landing
Review the master-relative range
fcf369fb9...76d87ab22.After this exact-head CI generation is green, the authorized landing method is GitHub Create a merge commit with admin override. Retain the source branch.