omnigraph/crates
aaltshuler 9460f097d9 feat(engine): execute Direction::Both on both Expand arms
CSR arm: an undirected hop chains csr(edge).neighbors with
csc(edge).neighbors under the existing visited/seen_dst gates, so
both-direction pairs and self-loops dedup for free (set semantics),
including per-hop in variable-length BFS. Indexed arm: endpoint_probes
returns both (src,dst) and (dst,src) orientations for Both; the per-hop
scan runs once per orientation into one neighbor_map, deduped by the
existing per-source seen_dst sets. Bulk anti-join: "no edge in EITHER
direction" (csr || csc has_neighbors).

Also fixes a lowering gap the anti-join test caught red: negation
inners are typechecked into a discarded context clone, so the
ResolvedTraversal direction lookup silently fell back to Out inside
not{} — undirectedness now travels on the AST node itself (the syntax
is the source of truth), immune to context-propagation gaps.

Tests: traversal.rs (out ∪ in vs the directional miss, both-ways dedup,
var-length from an incoming-only node, undirected anti-join vs
directional), traversal_indexed.rs both_modes equivalence, and the
proptest arm-equivalence property widened with <knows>{1,3}.
2026-07-06 00:59:09 +03:00
..
omnigraph feat(engine): execute Direction::Both on both Expand arms 2026-07-06 00:59:09 +03:00
omnigraph-api-types chore(release): bump version to 0.8.0 (#313) 2026-06-29 12:38:24 +02:00
omnigraph-cli feat(compiler): plan pure enum widening as a supported ExtendEnum step 2026-07-05 01:32:11 +03:00
omnigraph-cluster chore(release): bump version to 0.8.0 (#313) 2026-06-29 12:38:24 +02:00
omnigraph-compiler feat(engine): execute Direction::Both on both Expand arms 2026-07-06 00:59:09 +03:00
omnigraph-policy chore(release): bump version to 0.8.0 (#313) 2026-06-29 12:38:24 +02:00
omnigraph-server chore(release): bump version to 0.8.0 (#313) 2026-06-29 12:38:24 +02:00