//! PowDB query engine — lexer, parser, planner, and executor for PowQL.
//!
//! The query pipeline: PowQL text → Lexer (tokens) → Parser (AST) → Planner (plan tree) → Executor (results).
//! The planner is pure (no catalog access); plan lowering happens at execution time.
//!
//! # Public API boundary
//!
//! `canonicalize`, `plan`, `plan_cache`, and `token` are marked
//! `#[doc(hidden)]`. They stay `pub` and code that imports them still compiles:
//! the attribute hides a module from the generated documentation without
//! restricting access to it. They are `pub` so that `powdb-server` can
//! canonicalize a query for redaction, `powdb-cli` can inspect a token stream,
//! and this crate's own integration tests can assert on plan shapes. None of
//! that is an interface: plan shapes track the executor and tokens track the
//! grammar, so both change without notice whenever those change.
//!
//! The supported entry points are the `powdb` facade crate and
//! [`executor::Engine`]. See `docs/STABILITY.md` for what a version bump
//! promises.