--after on both scan drivers documented a journal mtime as the epoch to pass. Measured 2026-11-04, that is the one epoch that cannot work.
Jellyfin status|wait --after <mtime> reads the scan task's EndTimeUtc — a scan that finished before the question already passes it, so scannedAfter: true describes a walk that predates your moves. wait refuses such an epoch by name; bare status cannot tell them apart.
Plex status --after <mtime> reads section_locations.scanned_at, which PMS stamps when it accepts the request: trigger accepted 19:46:58Z → settled19:46:58Z, and that same stamp still answered settled at 20:17Z while the walk ran. No epoch survives it — not even the trigger's — so the door is a census, never a waiter.
Text only, no behavior change: the help line and the module docstring now name the trigger's epoch and say why a file mtime lies. The laws themselves live on the vault pages (main146c28d). ./tests/run.sh: all 841 assertions pass, plus py_compile / bash -n on both scripts.
Deploy note: the planner maps scripts/media-* to the media services, so the next service-scoped deploy of jellyfin/plex syncs this. Nothing running needs it.
cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
(committed and tested in the worktree /tmp/wt-plexlaw2)
`--after` on both scan drivers documented a **journal mtime** as the epoch to pass. Measured 2026-11-04, that is the one epoch that cannot work.
* Jellyfin `status|wait --after <mtime>` reads the scan task's `EndTimeUtc` — a scan that finished before the question already passes it, so `scannedAfter: true` describes a walk that predates your moves. `wait` refuses such an epoch by name; bare `status` cannot tell them apart.
* Plex `status --after <mtime>` reads `section_locations.scanned_at`, which PMS stamps when it **accepts** the request: trigger accepted `19:46:58Z` → `settled` `19:46:58Z`, and that same stamp still answered `settled` at `20:17Z` while the walk ran. No epoch survives it — not even the trigger's — so the door is a census, never a waiter.
Text only, no behavior change: the help line and the module docstring now name the trigger's epoch and say why a file mtime lies. The laws themselves live on the vault pages (`main` 146c28d). `./tests/run.sh`: all 841 assertions pass, plus `py_compile` / `bash -n` on both scripts.
Deploy note: the planner maps `scripts/media-*` to the media services, so the next service-scoped deploy of jellyfin/plex syncs this. Nothing running needs it.
---
cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
(committed and tested in the worktree `/tmp/wt-plexlaw2`)
Both drivers' help text recommended `--after "$(stat -c %Y <journal>)"`. Measured
2026-11-04 that epoch is answered by whatever scan finished before the question was
asked: on Jellyfin it reads an earlier task's EndTimeUtc, and the Plex door cannot be
a waiter at all, since PMS stamps section_locations.scanned_at when it accepts the
request. The laws are on the vault pages (main 146c28d); this puts the warning at
point of use, in the text an agent reads before calling the door.
dank
merged commit 70aa40a24a into main2026-11-04 12:25:46 -08:00
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.
--afteron both scan drivers documented a journal mtime as the epoch to pass. Measured 2026-11-04, that is the one epoch that cannot work.status|wait --after <mtime>reads the scan task'sEndTimeUtc— a scan that finished before the question already passes it, soscannedAfter: truedescribes a walk that predates your moves.waitrefuses such an epoch by name; barestatuscannot tell them apart.status --after <mtime>readssection_locations.scanned_at, which PMS stamps when it accepts the request: trigger accepted19:46:58Z→settled19:46:58Z, and that same stamp still answeredsettledat20:17Zwhile the walk ran. No epoch survives it — not even the trigger's — so the door is a census, never a waiter.Text only, no behavior change: the help line and the module docstring now name the trigger's epoch and say why a file mtime lies. The laws themselves live on the vault pages (
main146c28d)../tests/run.sh: all 841 assertions pass, pluspy_compile/bash -non both scripts.Deploy note: the planner maps
scripts/media-*to the media services, so the next service-scoped deploy of jellyfin/plex syncs this. Nothing running needs it.cwd: /home/blank/.omp/wt/wt-20261030-163847-6d1fc1f · session: 01a18f2e-18b1-7573-bcd5-ac99636f8bcb
(committed and tested in the worktree
/tmp/wt-plexlaw2)