- vault move now accepts any JD code kind (area/cat/ID) on both old and
new, not just ID->ID. Enables e.g. 'vault move F.50.09 F.59' to promote
an ID to a standalone category.
- Refuses if the source has nested JD-coded children (would orphan their
codes -- that's a bulk renumber, a different and riskier operation).
- Also commits vault_sync_daemon.py (inotify bidirectional /vault<->/data
sync service, with ntfy notifications on rename/archive/stub/error).
- vault analyze now accepts -m MODEL and --provider PROVIDER, passed through to
hermes -z, so intelligence/spend can be dialed inline per cadence (nightly cheap
on Haiku/bedrock, ad-hoc on the default smart model).
- sync-data --execute now git-commits like the other write ops (was the only
mutating op that skipped the commit).
- gitignore + untrack __pycache__/*.pyc build artifacts.
Adds packages/vault-cli (the `vault` CLI: search/show/tree, clobber-safe
create/move/rename across both /vault and /data + manifest regen, sync-data,
report, analyze) and wires it onto $PATH via modules/hosts/core/vault.nix for
server + vault-client hosts. Scripts self-locate siblings via realpath so they
run from the Nix store. Includes the deterministic $0 report generator, the
topology-manifest generator, and the shared Librarian prompt.