A directory of tables: the JSONL logs, their index snapshots, the metadata catalog
(hayson.json) describing them, and one writer lock (lock::DirLock, ADR-hjxp/0006 — one
writer per database directory).
Absolute paths of everything a database keeps on disk, by role — the port of the TS Layout,
narrowed to the roles this engine actually writes (format 2 keeps no per-table schema files,
and its write queue stages in memory rather than in a pending/ directory).
The layout/metadataFile/manifest triple of OpenOptions, exactly as a caller passed it —
unresolved, because which of the two file names wins (and whether they even agree) is decided
by LayoutOptions::metadata_file, and the kind by [resolve_kind].
Whether the tables of this database catch up with foreign writes on their own — the port of the
TS OpenOptions.follow, which takes false, true or { intervalMs }.
Name of the metadata document a database keeps in its root when open() names none — the port
of the TS DEFAULT_MANIFEST_FILE (packages/hayson/src/database/layout.ts).
Checks a database directory without taking its lock or changing a byte, and reports what is
wrong with it instead of failing on it: every damaged, missing or unreadable file becomes a
Problem, never an Err and never a panic.