diff --git a/docs/sprints/audio-upload-followups-2026-10.md b/docs/sprints/audio-upload-followups-2026-10.md index 38c9690..cfb7ee0 100644 --- a/docs/sprints/audio-upload-followups-2026-10.md +++ b/docs/sprints/audio-upload-followups-2026-10.md @@ -1,7 +1,8 @@ # Sprint: audio upload follow-ups (Sweep Sprint, 2026-10) Method: Sweep Sprint (phase 1 parallel read-only research per issue: **done**; phase 2 sequential -execution, one issue per commit: **not started, waits for the owner's go**). Closing oath below. +execution, one issue per commit: **v0.31.1 and v0.32.0 shipped 2026-10-03/04, the owner-held items +below remain open**). Closing oath below. Milestones: [v0.31.1 - security and robustness](https://git.d-ma.be/mathias/tapir/milestone/10), [v0.32.0 - audio upload follow-ups](https://git.d-ma.be/mathias/tapir/milestone/11). @@ -86,3 +87,28 @@ Release v0.31.1: one adversarial review round over 2-5, then tag, push, observe. SemVer: v0.31.1 patch (fixes, no new behaviour); v0.32.0 minor (nav link, delete, cloud labelling). Every push to tapir main redeploys the pod and fails any job in flight: push when no upload is running (check the pod log first). + +## Status (2026-10-04) + +**Shipped and deployed:** v0.31.1 (PR #55, merge e037c6b) and v0.32.0 (PR #58, merge 85f4cc3; pod +tapir-597dbfccc-ng78q 1/1, 0 restarts, image 85f4cc3). Each went through an adversarial review +round by agent with the verdicts recorded on the PR (v0.31.1: BLOCK then APPROVE; v0.32.0: BLOCK, +BLOCK, APPROVE, APPROVE; every block was a real defect, fixed test-first). + +**Live evidence:** a foreign-origin `POST` to `/account/delete` and to `/uploads/{id}/delete` is +refused (403) on production, a same-origin one reaches the login redirect (302). + +**Not observed live (needs an authenticated session, so it is the owner's look):** + +- #37: the home page shows a "Recordings" link; a finished recording offers a confirm-then-delete + control that removes it; a queued or transcribing one offers none. +- #52: a transcript served by the cloud fallback shows the "audio left the homelab" note; a local + one does not. A reconciled (two-engine) all-local transcript must NOT show it. +- #50: the old pod of the next rollout should end `Completed`, not `Error` (the v0.31.1 rollout + replaced a pod that ran the pre-fix image, and the v0.32.0 pod was gone before it could be read). + +**Still open (owner's call, milestone 11):** #36, #38, #45, #46 remainder, #56 (slow-drip bodies hold +a receive slot), #57 (shutdown logging, second signal). Decisions D4-D6, D8-D10 above are unchanged. + +**Deferred and filed from the reviews:** #56, #57, #59 (start-up exits when the identity provider's OIDC +discovery returns 503 (seen once at 19:40 on 2026-10-03; the pod restarted itself and recovered)).