diff --git a/serverAppConfigs-docs/Dankserver/Entropy Volume.md b/serverAppConfigs-docs/Dankserver/Entropy Volume.md index 4e43f25..8fbc20b 100644 --- a/serverAppConfigs-docs/Dankserver/Entropy Volume.md +++ b/serverAppConfigs-docs/Dankserver/Entropy Volume.md @@ -66,3 +66,24 @@ exactly describes the year this bug survived. volume absent they start `active (healthy)` against empty directories, which is how a missing 91 TiB volume hides. See [[Dankserver Stack]] for the stack and [[Storage Policy]] for what may be written here. + +## Write doors + +Something renamed movie folders on this array with no journal in any of the +`/mnt/entropy/*.jsonl` plans, no bash history, no cron, no timer, and no job +artifact. The census of things that can mutate it: + +- **A local process** as `dank` or root. `scripts/media-apply.py` is the only + one that journals; anything else (a hand `mv`, another session's script) is + silent. +- **SFTP by a human.** GNOME Files on a workstation mounts the array through + `gvfsd-sftp`, which runs `sftp-server` on this host as `dank`. Renames and + moves are direct `rename()` calls: no shell, no history, no journal. A folder + rename bumps **only that directory's ctime** — its mtime and every child's + ctime stay at their old values, so the files look untouched while their paths + are gone. Diagnose it with `pgrep -af gvfsd-sftp` on the workstation and + `ss -tnp` for the peer. +- **Copyparty is not a door**: the bind is `ro` at the mount level, so no HTTP + or WebDAV write reaches the array regardless of account flags ([[Copyparty]]). +- **No SMB or NFS server exists here** — the `*arr` stack on FrankBook-Pro + cannot reach the array at all, so it cannot rename, import, or rescan it. diff --git a/serverAppConfigs-docs/Dankserver/Media Duplicate Prune.md b/serverAppConfigs-docs/Dankserver/Media Duplicate Prune.md index 2bfdf70..f11c361 100644 --- a/serverAppConfigs-docs/Dankserver/Media Duplicate Prune.md +++ b/serverAppConfigs-docs/Dankserver/Media Duplicate Prune.md @@ -97,6 +97,12 @@ keeper is missing — either one drops the whole group rather than half-applying - The 2026-11-01 pass held 226 files (~1.1 TiB) in `/mnt/entropy/.AGENTTRASH/20261101-duplicate-prune`, journals `dup-prune-exact.jsonl` and `dup-prune-similar.jsonl`. Purge pending Frank's word. +- **Re-verify each survivor by size, not by the recorded path, before purging.** + Detection artifacts and plans key on paths, and a folder renamed by an + interactive session ([[Entropy Volume]], *Write doors*) makes its keeper look + deleted while it sits untouched under the new name. The 2026-11-01 audit hit + three such groups: every keeper was present, same bytes, different folder. A + purge decided from the plan's paths alone would have reported survivors gone. ## After the pass @@ -129,9 +135,10 @@ from the database are the pass succeeding. One residue is normal, so do not chase it: a section pass rewrites the feature rows first, and rows for clips in a film's `other/` or `extras/` subfolder can still name -a held path after the section's `refreshing` flag is back to `0`. Beside `REAL: 0` -that is a dead disc-menu clip — not a false prune, and no reason to touch the cache, -the database, or the hold. +a held path after the section's `refreshing` flag is back to `0` — and a second +section pass does not clear them either, so do not run one hoping for `0`. Beside +`REAL: 0` that is a dead disc-menu clip — not a false prune, and no reason to touch +the cache, the database, or the hold. ## Failure signatures