Shared vocabulary for tephra: the concepts a client and the storage engine both speak.
This crate is pure data and validation with no I/O and no storage machinery, so a
client can link it (and the wire protocol) without pulling in the engine. It holds the
[Position] type, the event [EventType]/[Tag] names and the sorted [Tags] set,
and the [Query] model ([Query], [QueryItem], [AppendCondition]).
The engine re-exports these types, so tephra::Query and tephra_types::Query
are the same type. Name and tag validation ([EventType::new], [Tag::new],
[Tags::new]) lives here as the single source of truth for both sides.