Forward (/vault->/data) mirroring was gated to only AREA/CATEGORY/ID-shaped
names, so arbitrary sub-structure Ryan creates inside an ID (e.g. dated trip
folders under F.21.21) never propagated to /data. Removed the name-shape
gate; the existing parent-must-exist check is sufficient safety, plus an
explicit '0 System area' exclusion since that tree has no /data root at all.
- 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).