v0.314.0: CONTEXT and REPORT after the release (floor 0.314.0 raised by CC's token at 13:11 UTC)
gates / gates (push) Successful in 46s

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-15 15:17:51 +02:00
parent 97c992ad44
commit 85f65c70d8
2 changed files with 21 additions and 32 deletions
+8 -1
View File
@@ -7,7 +7,14 @@
> >
> Ask Claude Code: "Please update CONTEXT.md with what we did today" > Ask Claude Code: "Please update CONTEXT.md with what we did today"
Last updated: 2026-10-15 (v0.313.0 — media apps on every drive, R-1023) Last updated: 2026-10-15 (v0.314.0 — the gate on restore, test builds and the floor, Prowlarr's link, Plex by address)
> **2026-10-15 (evening) — v0.314.0, the floor since 13:11 UTC (raised by CC's token after the three test boxes; no golden).**
> A restore puts the setup gate back as it was (`internal/stacks/restore_gate.go`, felhom.eu `09` §3 decision 253, R-1057);
> `util.ParseVersionPre` puts `X.Y.Z-rc.N` below `X.Y.Z` for the floor ONLY — never for the tags offered (R-1053);
> Prowlarr's start runs the media wiring (`linkOnlyApps`, R-1058); every Plex call goes to the container's address
> (`mediawire.PlexURL`, R-1060 — Plex refuses the name `plex` as non-local). Still open: the real Plex claim on demo-hp
> 9201 (the operator's code), R-1052's new-box proof (a throwaway customer is session only).
> **2026-10-15 (afternoon) — release rule `09` §3 decision 250:** a release needs no golden; the floor carries it after > **2026-10-15 (afternoon) — release rule `09` §3 decision 250:** a release needs no golden; the floor carries it after
> the three test boxes; the golden is weekly. Test images use `-rc.N` tags — the household button skips them, but the > the three test boxes; the golden is weekly. Test images use `-rc.N` tags — the household button skips them, but the
+13 -31
View File
@@ -1,33 +1,15 @@
# REPORT — v0.313.0: media apps on every drive, drive events, a real restart, Plex without the race (2026-10-15) # REPORT — v0.314.0: the gate on restore, test builds and the floor, Prowlarr's link, Plex by address (2026-10-15)
Baseline `8bc7ec5` (0.312.0). Design: felhom.eu `architecture/15-media-library.md` §2, §3, §7–§10; `09` §3 decisions 245, Baseline `e209a8d` (0.313.0). Design: felhom.eu `architecture/09-update-architecture.md` §3 decisions 46–49, 250–253;
247, 248. Evidence: felhom.eu `documentation/audits/media-build-2026-10-15/` (A = Plex gate, G = Tester 1, G7 = demo-hp). `07-backup-architecture.md`; `15-media-library.md` §6. Evidence: felhom.eu `documentation/audits/gate-restore-2026-10-15/`.
## What changed - **R-1057:** the per-app backup records the setup gate; a restore puts it back as it was. Ten mutations red-proved.
- `internal/stacks/media_library.go` — per-drive binds for `media_library:` templates, only present drives; dead-drive Live on 9202: a stranger met the gate after the restore of a pre-setup backup (before: 200).
check `system.MountIsShutdown`; R-1031 (no drive question), R-1027/R-1032 (removal never deletes shared/`:ro`; safety - **R-1053:** `X.Y.Z-rc.N` is below `X.Y.Z` for the floor; the button never offers it; the skip is a WARN. Live: Tester 1
list knows userdata). on rc.1 was moved to 0.314.0 by the floor by itself. Six older floor tests now wait for the background update.
- `RestartStack` — a real restart (R-1026). - **R-1058:** Prowlarr's own start runs the wiring. Live on 9202: linked ~40 s after Prowlarr ran, no button.
- `internal/mediawire` — the drive wiring (R-1024, R-1037), the old-install repair (R-1047), safe-removal pause/resume, - **R-1060:** every Plex call by address. Live on 9201 with a fake code: Plex took it as local (500 from plex.tv, before
the stream count. 401). The real claim waits on the operator's code.
- `internal/web/media_events.go` + `media_notice.html` — the notice, restart now/later, safe removal that keeps the drive - **Release:** MinAgent 0.155.0. Three test boxes via per-customer floors (token), box walk green, global floor 0.314.0 at
(R-1044), the returned drive's file browser recreate (R-1038), the Plex claim (R-1028) and „Kész" refused while 13:11 UTC by CC's token, read back from the hub DB with its WAL; per-customer floors cleared. No golden (decision 250).
unclaimed (R-1045). `after_start` deploy fields. - Gates: `controller_gates.py` OK; `go test ./...` green.
## 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`.