Backup: the whole store, off the host

Every onboarded project's tasks live in virta's log, and an immutable log doesn't survive losing the host, the Firebase project or the account (owner, 2026-10-01; board #2479). virta backup <dir> copies all of it to a directory a private git repo can keep, and virta restore-backup <dir> rebuilds a host from it.

This copy is private: it keeps everything, provenance and addresses included. (The practices export is the public one.) A restore writes only the events the host lacks, in their original order, so task numbers come out the same on an empty host, and then the files. Provenance can't be restored: the host stamps whoever restores, and each event keeps its own by.

virta backup ../virta-backup          # incremental: run it on a schedule
virta restore-backup ../virta-backup --dry