From b2f61295cc92af83b500530ccb373f4a7b4baadc Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Thu, 8 Oct 2026 10:53:04 +0800 Subject: [PATCH] skill: orphan the long runs (session death killed both tiers) + copy tier is not idempotent --- SKILL.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SKILL.md b/SKILL.md index 81cc8c8..01cc380 100644 --- a/SKILL.md +++ b/SKILL.md @@ -276,6 +276,8 @@ re-encoded to `-b:a 256k`: that added ~128 kbps for no audible gain, ~+10% file - **Never build a verification harness on a stream copy or a seek**: compare whole files, decode both sides sequentially, and prove the harness on a file against itself (must be lo=1.0). - **Judge a defect's SHAPE, not one frame**: mean < 0.98 or > 1% of frames below 0.85 fails; a handful of scattered low frames at a healthy mean is a fade, and SSIM on near-flat frames means nothing. - **Kill by PID only**, one lock per tier, one NVENC job at a time, and pause GPU tiers before a driver update (an update wedges GPU work silently — the output-growth watchdog is the net). +- **A multi-day run must not be tied to the agent session.** Two tiers launched as Hermes background jobs with `persist_on_release` were both killed mid-encode the moment the user closed their session (measured 2026-10-08 10:37: `*_out.mp4` and `.err` frozen in the stage dir, no `PASS-DONE` in either log, ~40 min of work lost). Launch them **orphaned** instead — `powershell -NoProfile -Command "Start-Process -FilePath -ArgumentList -WindowStyle Hidden"`, the script itself looping `library_run.py` with a retry — so the parent exits immediately and the agent's process cleanup cannot reach the tree. Verify the chain: the job's parent must be a bash whose own parent is already gone. Cost: no exit notification (watch the log) and **stopping is by PID only**. +- **The `copy` tier is not idempotent — never re-run a whole `--tier copy` pass.** Its only skip test is "already HEVC hvc1", and a copy output is H.264 by definition, so a second pass redoes every file it ever produced (193 of them here, ~40 GB of share I/O). For a handful of newly-arrived files use the single-file path per file: `library_run.py --tier copy --path --keep-source`. - **Full measured detail, every failure mode and its detector: `references/pitfalls.md`.** ## The owner's standing requirements — read this first