# REPORT — v0.313.0: media apps on every drive, drive events, a real restart, Plex without the race (2026-10-15) Baseline `8bc7ec5` (0.312.0). Design: felhom.eu `architecture/15-media-library.md` §2, §3, §7–§10; `09` §3 decisions 245, 247, 248. Evidence: felhom.eu `documentation/audits/media-build-2026-10-15/` (A = Plex gate, G = Tester 1, G7 = demo-hp). ## What changed - `internal/stacks/media_library.go` — per-drive binds for `media_library:` templates, only present drives; dead-drive check `system.MountIsShutdown`; R-1031 (no drive question), R-1027/R-1032 (removal never deletes shared/`:ro`; safety list knows userdata). - `RestartStack` — a real restart (R-1026). - `internal/mediawire` — the drive wiring (R-1024, R-1037), the old-install repair (R-1047), safe-removal pause/resume, the stream count. - `internal/web/media_events.go` + `media_notice.html` — the notice, restart now/later, safe removal that keeps the drive (R-1044), the returned drive's file browser recreate (R-1038), the Plex claim (R-1028) and „Kész" refused while unclaimed (R-1045). `after_start` deploy fields. ## Proven - Tester 1 (rc.1–rc.3): existing apps moved to the marker binds with every stored path, library item, watch mark and file identical; Media D added → notice → restart → wired in every app, second run writes nothing; Media B pulled → nothing lost, the file browser let go and came back at once, one restart cured the apps; Media D safely removed with torrents → only its torrents paused, every app let go before the unmount, the drive came back by itself, torrents resumed with no re-check; 13 hardlink pairs intact. - demo-hp 9201: the marker ignored by 0.312.0; rc.4 wired qBittorrent + Sonarr from the live catalog; a fresh Plex with no code stays gated and „Kész" is refused while unclaimed. ## Tests (each seen failing once) `TestRestartStack_R1026_*`, `TestMediaLibrary_*`, `TestMountIsShutdown_K4`, `TestRemoveStack_R1027_*`, `TestProtectedHDDPaths_R1032_*`, `TestR1031_*`, `TestAfterStartField_*`, `TestRun_SecondRunWritesNothing`, `TestRepairOldRoot_K7`, `TestMediaEvents_*`, `TestEjectStep_G4`, `TestPlanDriveGates_SkipsSafelyRemovedDrive`, `TestSetupDoneProbe_AcceptJSON_Plex`, `TestPlexClaimBox_RendersPerBranch`, `TestPlexDonePress_RefusedWhileUnclaimed`. ## Fixed without a row (found on the boxes this session) qBittorrent 5's 204 login; the gate racing a safe removal; presence read from the agent's `state`.