media-verify reads the WAL; the metadata view is live; duplicates get a page #114
Closed
dank
wants to merge 0 commits from
fix/media-verify-wal-and-prune-record into main
pull from: fix/media-verify-wal-and-prune-record
merge into: dank:main
dank:main
dank:chore/untrack-agenttrash
dank:feat/media-io-weight
dank:fix/array-mount-gate
dank:perf/media-apply-batch
dank:fix/episode-marker-guard
dank:feat/media-tvdb-id-map
dank:feat/media-tv-relayout
dank:feat/media-metadata-view
dank:feat/media-tv-mover
dank:fix/media-series-key
dank:feat/media-sweep
dank:feat/media-relayout
dank:fix/quant-pipeline-hardening
dank:chore/fleet-image-refresh
dank:docs/radiance-engine-reference
dank:fix/qwen38-calib-shape
dank:fix/qwen38-flat-round
dank:fix/qwen38-tap-marker
dank:feat/qwen38-w5nl64
dank:feat/frank-archon-pool-step
dank:fix/signal-relay-fw-order
dank:security/quadlet-digest-pins
dank:fix/blackbox-entrypoint-bind
dank:fix/blackbox-web-listen-flag
dank:fix/blackbox-unit-generation
dank:fix/blackbox-service-gates
dank:fix/observability-errors-gone
dank:fix/grafana-copier-glob
dank:fix/dragoon-context-200k
dank:fix/deploy-sh-allowlist-drift
dank:chore/plex-1435
dank:feat/gpu-stats
dank:wt/20261020-213526
dank:feat/containers-observability
dank:feat/archon-dashboard
dank:feat/e2e-audit-coverage
dank:feat/grafana-starter-dashboards
dank:fix/grafana-authentik-sso
dank:feat/alloy-root-journal
dank:fix/observability-vllm-loki
dank:docs/openwebui-tts-voice
dank:chore/narrator-voice-repoint
dank:chore/open-notebook-admin-tenant
dank:chore/authentik-session-ttl
dank:chore/agent-skills-vault-setup
dank:feat/frank-dragoon-npu-lane
dank:feat/open-notebook-portal
dank:docs/radiance-prefill-decode-census
dank:docs/npu-tts-verdict
dank:fix/frank-archon-two-slots
dank:fix/frank-archon-cache-ceiling
dank:feat/frank-archon-radiance-181
dank:docs/vault-dedupe-okf-20261019
dank:chore/frank-zealot-mtp-reslice
dank:wt/20261017-181502
dank:docs/zealot-f16-measured-record
dank:fix/zealot-2x262144-f16-kv
dank:docs/openwebui-browser-kokoro-tts
dank:docs/frank-tts-voice-lore
dank:fix/frank-tts-default-voice
dank:docs/frank-tts-live
dank:docs/retire-cold-voice-ladder
dank:fix/frank-tts-warm-argv
dank:feat/frank-tts-engine
dank:feat/voice-pack-builder
dank:docs/tts-engine-trials
dank:chore/pr-attribution-trailer
dank:feat/open-notebook-podcast
dank:wt/20261015-040156
dank:wt/20261015-030408
dank:wt/20261013-180349
dank:wt/20261013-185330
dank:wt/20261009-204001
dank:wt/20261006-122204
dank:autoresearch/optimize-the-speed-of-frank-primary-make-it-fast-20261002
dank:autoresearch/iteratively-improve-the-decode-and-prefill-speed-20260929
dank:autoresearch/without-changing-the-quantization-or-checkpoint-20260927
dank:frank-large-strix-model
dank:feature/tiel-coder-flash-next
dank:feat/service-scoped-deploy
dank:deploy/searxng-provider-policy
dank:frank-default-large-q8agent-262144
dank:eemin-rocmi4-mtp-large
dank:frank-large-tune-ctx-batch-thinking
dank:tune-frank-small-context-163840
dank:vllm-qwen36
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Two commits out of tonight's duplicate sweep of
/mnt/entropy/Movies.fix(media-verify): read the WAL the server commits throughmode=ro&immutable=1tells sqlite the file never changes, so it skips thewrite-ahead log entirely: every row the server has committed but not yet
checkpointed reads as MISSING, and a read taken beside a running scanner can
fail outright as
database disk image is malformed. Both servers keep theirlibraries in WAL, so plain
mode=rois now the first door andimmutable=1onlythe fallback for a database whose
-shmcannot be read.The verdict stopped guessing from the database alone too: a file still at
srcisREAL(this pass's own damage), a file at neither path isgone, a file sittingat
dstwith no row naming it is simply not indexed. A row still namingsrcisthe server's stale pointer, and it costs a re-scan — never a restore.
docs(media): the view is live, and duplicates get their own pageMedia Metadata View.mdclaimed "Not deployed on Dankserver — verified2026-10-31". That was true yesterday. The overlay is mounted and both installed
quadlets bind it (
Volume=/var/lib/media-meta/view:/datarw for Jellyfin,view:/mnt/entropy:rofor Plex), so the page now states the live shape and theorder that proves it (
media-view.sh verify, then theVolume=lines). The samefalse claim sat in the
AGENTS.mdsummary table; it is corrected there too.New page
Media Duplicate Prune.md: the screen ladder (size → head+tailblake2b→ sparse-window confirmation before anything moves), which copysurvives, the guards that each encode a file that would otherwise have been
destroyed (qBittorrent
.!qBstate, year-required-with-digits-kept, featurelength,
disc/cd/part, media containers only), and the law that a hold onthe same volume frees nothing until it is purged. It also carries the way
media-verify.pyhas to be read for a prune —landed: 0is the correct endstate because no server may index the hold — and the planner bug that explains it:
re-deriving "largest wins" from the hold list alone dropped every keeper out of its
own group and pruned 17 files instead of 205.
Media Relayout.mdkeeps a one-line pointer; carrying the whole procedure therepushed it past the vault's 500-line ceiling.
Fleet state this run produced (record, not a proposal)
/mnt/entropy/.AGENTTRASH/20261101-duplicate-prune;journals
/mnt/entropy/dup-prune-exact.jsonlanddup-prune-similar.jsonl.verifyreports all 226 at their targets,REAL: 0.unexplained.
purging is Frank's word.
.!qBqBittorrent leftovers (53.8 GiB, 13 months stale) weredeliberately left where they are.
Scan Media Libraryqueued once and running; Plex's Moviessection (key 1) refreshes only after Jellyfin reaches
Idle, per the rescan law.Evidence
tests/run.sh: 761 tests, all pass.scripts/check-okf.py: 0 violations. Vaultindex regenerated, which the index seam requires to be a no-op.
Local branch label is this session's worktree branch (
wt-…) because workspacepolicy blocks
git checkout/switchin a shared checkout; the remote branch nameabove is the conventional one, and the diff against
mainis exactly these twocommits.
cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
Superseded by #115, which carries the same commits with
origin/mainmerged in. This PR auto-closed when its head branch was deleted (the cleanup step ran before the merge was verified); the branch was re-pushed, so nothing was lost. Landed as #115.cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
Pull request closed