You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found by the #1737 review's test-coverage adversarial pass; pre-existing on master dbc6f628 (A/B-verified — NOT introduced by #1737, which covers only the binding_rows_polars path).
Repro
Fixture (same as _disambiguation_frames() in graphistry/tests/compute/gfql/test_polars_rows_entity_groupby.py): node id 400 duplicated across a Tag row (t4) and a Forum row (f4); edge 601 -HAS_TAG-> 400.
MATCH (post:Post{id:601})-[:HAS_TAG]->(tag)
RETURNtag.nameAStagName, count(post) ASc
pandas: [{'tagName': 't4', 'c': 1}] (disambiguation narrows the unlabeled tag op to the HAS_TAG label row)
Silent divergence — violates the polars parity-or-NIE contract. The single-MATCH aggregating shape routes through a polars path that has no HAS_ destination disambiguation and never declined. The non-aggregating RETURN shape on the same fixture is parity-correct (covered by test_has_label_narrowing_applies_on_reached_collision).
Found by the #1737 review's test-coverage adversarial pass; pre-existing on master
dbc6f628(A/B-verified — NOT introduced by #1737, which covers only thebinding_rows_polarspath).Repro
Fixture (same as
_disambiguation_frames()ingraphistry/tests/compute/gfql/test_polars_rows_entity_groupby.py): node id 400 duplicated across a Tag row (t4) and a Forum row (f4); edge601 -HAS_TAG-> 400.[{'tagName': 't4', 'c': 1}](disambiguation narrows the unlabeledtagop to the HAS_TAG label row)[{'tagName': 'f4', 'c': 1}, {'tagName': 't4', 'c': 1}]Silent divergence — violates the polars parity-or-NIE contract. The single-MATCH aggregating shape routes through a polars path that has no HAS_ destination disambiguation and never declined. The non-aggregating RETURN shape on the same fixture is parity-correct (covered by
test_has_label_narrowing_applies_on_reached_collision).Fix options
_gfql_disambiguate_has_edge_destination_nodesgate to this path (probing pre-dedup base nodes — see feat(gfql): polars whole-entity aggregation Cypher — HAS_label disambiguation + identity-key + key_prefixes (LDBC IC4 native) #1737'sbinding_rows_polarsgate for the base-graph plumbing via_gfql_rows_base_graph), orEither way, add a parity test pinning this exact aggregating shape.