Found by
The route harness (frame variants, PR #2070) on the productized polars single-node route.
Repro
Node frame with a null id row (nullable Int64) or a duplicated id row; op list [n()] or [n({"w": GT(2)})].
| frame |
engine |
lane |
general path |
| null-ids |
pandas |
[1,2,3,4,5,None] |
[1,2,3,4,5,None] |
| null-ids |
polars |
[1,2,3,4,5,None] |
[1,2,3,4,5] |
| dup-ids |
pandas [n()] |
[1,1,2,3,4,5] |
[1,1,2,3,4,5] |
| dup-ids |
polars [n()] |
[1,1,2,3,4,5] |
[1,2,3,4,5] |
The pandas oracle keeps both; the polars single-node lane matches it; the polars general chain drops the null-id row and collapses the duplicate. Related: #2034 (duplicate-id contract on node lookups vs hops).
Where
graphistry/compute/gfql/lazy/engine/polars/chain.py general forward/backward passes for a node-only op list (the endpoint/closure joins never link a null id and dedupe by id, which is right for hops but not for a bare node lookup).
Ledger
("polars-single-node", "null-ids") in the route harness KNOWN map until fixed.
Found by
The route harness (frame variants, PR #2070) on the productized polars single-node route.
Repro
Node frame with a null id row (nullable Int64) or a duplicated id row; op list
[n()]or[n({"w": GT(2)})].[n()][n()]The pandas oracle keeps both; the polars single-node lane matches it; the polars general chain drops the null-id row and collapses the duplicate. Related: #2034 (duplicate-id contract on node lookups vs hops).
Where
graphistry/compute/gfql/lazy/engine/polars/chain.pygeneral forward/backward passes for a node-only op list (the endpoint/closure joins never link a null id and dedupe by id, which is right for hops but not for a bare node lookup).Ledger
("polars-single-node", "null-ids")in the route harness KNOWN map until fixed.