3150e444b2
`hermes kanban boards export|import` moves a board between machines: tasks, comments, links, history, and attachments in one .tar.gz. Two things make this more than a tar of the board directory. The database is live — kanban runs in WAL mode, so a filesystem copy loses whatever still sits in the -wal sidecar and tears if the dispatcher commits mid-copy; export goes through SQLite's online-backup API instead. And rows carry machine-local state: claims, worker PIDs, absolute workspace and attachment paths, session ids, and the gateway chat ids subscribed to task events. Shipping those verbatim is how an imported board arrives holding a claim owned by a process on someone else's laptop, or starts pushing task events into a stranger's Telegram thread. Everything machine-local is stripped on export and re-stripped on import, since an archive is untrusted input. Imports always land as a NEW board, auto-suffixing the slug on collision, so an import can never merge into or overwrite a board that is already there. Tasks whose workspace was a directory or git worktree on the source machine are parked in triage rather than left for the dispatcher to claim and burn into the failure breaker.