Deletion audit1.x
Mounted content under /content can vanish for several independent reasons. “Files disappeared by themselves” usually conflates these paths:
| Cause | What happens |
|---|---|
| History delete with delete-files | Triggered from the admin UI or del_completed_files=1. Mounted items for that history row are deleted. |
| Cascading child sweep | After a directory is deleted, its children are removed in the background. |
| Health repair | Triggered by repairs and missing articles. Unlinked or blocklisted files are deleted along with their generated STRM sidecars since 1.3.0; linked releases are removed and blocklisted through Arr. |
| Clean Missing Payloads | Manual, after an approved dry run. Deletes only mounts whose streaming payload blob and legacy metadata are both absent; verified Arr files request replacement without blocklisting since 1.3.0. |
| Remove Orphaned Files | Manual or scheduled. Deletes files with no library symlink or STRM and no history link, along with their generated STRM sidecars since 1.3.0. Aborts if too few links are found; sidecars under the configured completed-downloads directory never count as library links. |
| History retention / Prune Completed History | Retention days above 0, or the Maintenance task. Prunes history with deleteFiles: false: mounts stay but lose their history link, so Remove Orphaned Files can then remove unlinked mounts. |
| SAB/Arr history delete without delete-files | Arr Remove Completed, queue rules with removeFromClient=true, or a /completed-symlinks folder DELETE. The history row is gone; mounts stay. Logged as history-remove source=… deleteFiles=false. |
| Manual delete | WebDAV DELETE or admin API. Explicit user action. |
| Blocklist filter | Files matching the download file blocklist are removed during queue post-process and never appear in /content. |
Non-persistent /config |
Volume missing or wiped. Empty database on restart, so the entire library looks gone. |
Grep the audit log
Section titled “Grep the audit log”Every DavItem deletion emits a structured Serilog line. Search for:
dav-deleteExamples:
dav-delete source=history-cleanup ... reason=DeleteMountedFiles=true ...dav-delete source=dav-cleanup ... reason=cascading child sweep ...dav-delete source=health-repair ... reason=health validation failed; not library linked and ...dav-delete source=remove-missing-payloads ... reason=streaming payload and legacy metadata ...dav-delete source=remove-orphaned ... reason=no library symlink/strm linkdav-delete source=remove-orphaned ... reason=generated strm sidecar of orphaned filedav-delete source=webdav-delete ... reason=client DELETE on UsenetFiledav-delete source=blocklist-filter ... reason=blacklisted filename during queue post-processhistory-remove source=sab-history-delete count=1 deleteFiles=false ...Large history deletes may also emit dav-delete-bulk.
Persist /config
Section titled “Persist /config”Always map a durable host directory to /config. Without it, every recreate looks like a total wipe.