Summary
Found by route-off test amplification: with the four Cypher fast lanes forced to decline, shapes they normally serve fall to the lowered general path, which on polars does not serve them:
test_lowering.py::TestVarlenAliasHopGate::test_fixed_length_hop_is_not_gated → polars.exceptions.ColumnNotFoundError: "b.id" not found (the lowered projection path on polars).
test_seeded_typed_hop_fastpath.py::test_has_label_narrowing_*[polars] → NotImplementedError: polars engine does not yet natively support cypher row op 'rows' (the lowered path routes through the rows op the polars engine declines).
pandas and cuDF serve the same shapes on the general path. Consequence: on polars, a query variant that misses a lane's admission gate (one extra predicate, a different alias shape) gets an error instead of a slower answer — the lanes are masking a general-path gap rather than accelerating a working path.
Expected
The polars general path serves every shape a polars lane admits (the lanes are optimizations, not the only implementation), or the lane declines are typed and documented per shape.
Pins
The existing tests above, run with GFQL_ROUTES_OFF=cypher-fast (conftest switch from #2054), must pass; today they fail.
Summary
Found by route-off test amplification: with the four Cypher fast lanes forced to decline, shapes they normally serve fall to the lowered general path, which on polars does not serve them:
test_lowering.py::TestVarlenAliasHopGate::test_fixed_length_hop_is_not_gated→polars.exceptions.ColumnNotFoundError: "b.id" not found(the lowered projection path on polars).test_seeded_typed_hop_fastpath.py::test_has_label_narrowing_*[polars]→NotImplementedError: polars engine does not yet natively support cypher row op 'rows'(the lowered path routes through the rows op the polars engine declines).pandas and cuDF serve the same shapes on the general path. Consequence: on polars, a query variant that misses a lane's admission gate (one extra predicate, a different alias shape) gets an error instead of a slower answer — the lanes are masking a general-path gap rather than accelerating a working path.
Expected
The polars general path serves every shape a polars lane admits (the lanes are optimizations, not the only implementation), or the lane declines are typed and documented per shape.
Pins
The existing tests above, run with
GFQL_ROUTES_OFF=cypher-fast(conftest switch from #2054), must pass; today they fail.