- refuse while any other process holds the library, its -wal or -shm open
(tools/comfyui_stopped.py), also in a rehearsal; without /proc only with
--i-stopped-comfyui; require main.py in --comfyui-dir; check again just
before BEGIN IMMEDIATE
- the plan records its library (normcase realpath) and max row id; apply
refuses on another library
- refuse when opening the library changes its schema (run from a checkout
at the live code version)
- verify the backup (integrity_check and counts) and never overwrite one
- target_text is a drift key and must match its hash; keep compares the
linked text's hash, not the stored column
- the dry run rehearses the orphan deletes when --delete-orphans is chosen
- a .md plan path is refused; the list is <stem>.list.md
- any error during apply rolls back, names the backup, exits 2
- relpath on another drive falls back to the full path