haematite-cli 0.21.3

The haematite command: serve a store, its door and Studio, answer MCP, query with jq, and host the store's assistant seat
Documentation
# Query library

Each JSON file is one teaching group. The filename order is the display order.
An entry carries `name`, one `sentence`, `query`, `change`, and `defaults`.
`change` names the parts a person can edit. `${part}` marks a query snippet;
a string default is inserted verbatim, including JSON quotes where needed.
Every declared default must occur in the query, change line or selection.
Missing, empty, unknown and unresolved defaults are refused by the tests.

Earlier versions are selections in `query.run`, not language stages.
The optional `selection` templates name the branch and the complete version.
`{"context":"selection.version"}` takes the captured version from the
inserting selection. It never substitutes the current head for an absent
version. The fixture captures this version before it writes the vectors,
then proves the branch advanced and that each result and origin stayed at
the captured version.

The Studio copy is a JSON array: `[\n`, all group files in filename order
joined by `,\n`, then `]\n`. Every group file's bytes are retained exactly;
there is no parse-and-reserialize step. `src/library.test.ts` compares bytes
and proves that changing one byte fails the comparison.

`library_tests.rs` uses the existing `stages_tests_support.rs` fixture and
its four patient records, stored vectors and strict framed fixture worker.
Every entry must produce its exact fixture values and a complete page.
The typo case and store and worker refusal cases must name the entry.
No shipped entry expects a refusal. This fixture is not a real jq worker;
real-worker qualification remains a separate check.

The write-only lane cannot register the Rust test: `query/mod.rs` is outside
its permitted Rust paths. It needs `#[cfg(test)] mod library_tests;` there.
The current Vitest include list excludes `src/library.test.ts`; its owner
must add that exact path while retaining every existing test glob.
These two registrations must land before the named lane checks can prove
this library. No Rust or JavaScript tool ran on the writing machine.