Found by the RFC-009 Phase 1 parity matrix (which pins it as agreeing behavior across embedded/remote arms — this is a cross-PATH asymmetry, not an arm divergence).
Observed:
- Inline execution (
omnigraph query --query file.gq --name get_person with no --params, or the /read endpoint): a declared-but-unbound $name does not error — the filter effectively drops and every row returns. Both embedded and remote arms agree.
- Stored-query invoke (
POST /graphs/{g}/queries/{name}): the same situation hard-errors parameter 'x' not provided (observed live on the Railway deployment with stale_patterns).
Why it matters: silently widening a filter on a missing binding is surprising (a typo'd param name in a script returns everything instead of failing), and the invoke path proves the system already knows how to be strict. Candidate fix: make inline execution require declared params too (loud), as a deliberate release-noted change — the parity matrix row parity_errors_share_exit_codes currently pins the permissive behavior and will need its expectation flipped in the same PR.
Refs: crates/omnigraph-cli/tests/parity_matrix.rs (the pinning row + comment).
Found by the RFC-009 Phase 1 parity matrix (which pins it as agreeing behavior across embedded/remote arms — this is a cross-PATH asymmetry, not an arm divergence).
Observed:
omnigraph query --query file.gq --name get_personwith no--params, or the/readendpoint): a declared-but-unbound$namedoes not error — the filter effectively drops and every row returns. Both embedded and remote arms agree.POST /graphs/{g}/queries/{name}): the same situation hard-errorsparameter 'x' not provided(observed live on the Railway deployment withstale_patterns).Why it matters: silently widening a filter on a missing binding is surprising (a typo'd param name in a script returns everything instead of failing), and the invoke path proves the system already knows how to be strict. Candidate fix: make inline execution require declared params too (loud), as a deliberate release-noted change — the parity matrix row
parity_errors_share_exit_codescurrently pins the permissive behavior and will need its expectation flipped in the same PR.Refs:
crates/omnigraph-cli/tests/parity_matrix.rs(the pinning row + comment).