//! Filter-engine for `haz query`.
//!
//! `haz-query` layers two responsibilities on top of the
//! domain-free grammar provided by [`haz_query_lang`]:
//!
//! - **Atom typing.** The [`expr`] module lifts the raw
//! `(text, span)` atoms parsed by `haz-query-lang` into typed
//! expressions per the `QRY-003` / `QRY-004` rules:
//! `Expr<TagName>`, `Expr<ProjectName>`, `Expr<TaskName>`,
//! and (in subsequent revisions) `Expr<PathPattern>` and
//! `Expr<RelationalAtom>`. Atom-validation errors
//! (`ID-001..ID-005` violations, unknown relational kinds,
//! malformed path patterns) surface here with their byte
//! spans.
//!
//! - **Engine.** The `engine` module (forthcoming) applies
//! the typed expressions against a loaded workspace and its
//! validated task graph, producing the effective task set
//! per `QRY-006` / `QRY-007`.
//!
//! Splitting the language layer ([`haz_query_lang`]) from the
//! engine keeps the boolean grammar reusable and free of any
//! `haz-domain` / `haz-dag` coupling.