Evaluate one start.filter in the start-filter context: document (may
be absent — a root read is then GROQ null, fail-closed or vacuous-pass by
shape) as the GROQ root, the StartScope bindings plus
$definition, and — when analyzeCondition says the filter reads the
dataset — the scope's fetched slice as *. Cheap pure evaluation otherwise: no I/O rides a
filter that needs neither. GROQ null ("can't decide") is false — every consumer of
this verdict fails closed; a parse/evaluation THROW is a malformed
predicate, not an unevaluable one — rethrown loud, naming the definition,
so every read surface that evaluates the filter reports the same context.
A failed slice FETCH propagates as itself: transport trouble, never
definition blame.
Evaluate one
start.filterin the start-filter context:document(may be absent — a root read is then GROQ null, fail-closed or vacuous-pass by shape) as the GROQ root, the StartScope bindings plus$definition, and — whenanalyzeConditionsays the filter reads the dataset — the scope's fetched slice as*. Cheap pure evaluation otherwise: no I/O rides a filter that needs neither. GROQ null ("can't decide") isfalse— every consumer of this verdict fails closed; a parse/evaluation THROW is a malformed predicate, not an unevaluable one — rethrown loud, naming the definition, so every read surface that evaluates the filter reports the same context. A failed slice FETCH propagates as itself: transport trouble, never definition blame.