omnigraph/docs
Ragnor Comerford 8b13096183
fix(engine): total deterministic ORDER via entity-key tie-break + NULL contract
apply_ordering used an unstable lexsort with no tie-break, so rows with equal
user-sort keys came out in a run-dependent order (the input order depends on
scan parallelism / upstream hashing) — making ORDER ... LIMIT non-deterministic,
a latent deny-list violation (no nondeterministic result ordering).

Append the bound entities' key columns (<var>.id, unique per row) in canonical
name-sorted order as ascending tie-breaks, giving a total, reproducible order
(and a deterministic top-N when ties straddle the LIMIT cutoff). NULL placement
(nulls_first = !descending) is unchanged and now documented as the contract.

New tests/ordering.rs locks descending, multi-key precedence, the deterministic
key tie-break (data loaded in a different order than the expected output, so it
proves the tie sorts by key not by load order), and NULL placement under ASC/DESC.
docs/user/query-language.md documents the total-order + NULL contract.
2026-06-09 13:50:59 +02:00
..
dev docs(testing): fix stale optimize test name in maintenance.rs row (#148) 2026-06-08 22:19:21 +03:00
releases feat(engine): sweep & remove legacy __run__ branch guard (MR-770) (#132) 2026-06-07 18:33:14 +03:00
rfcs governance: external contribution model (issues/discussions/RFCs/PRs) (#143) 2026-06-06 23:58:08 +03:00
user fix(engine): total deterministic ORDER via entity-key tie-break + NULL contract 2026-06-09 13:50:59 +02:00