• Joined on 2026-03-27
mathias pushed to sprint/v032 at mathias/tapir 2026-10-03 19:32:57 +00:00
c24573bd9f docs: state what the save timeout and a racing delete actually guarantee (#51, #37)
fc1e8e7ba8 test(web): a foreign post to the recording delete route leaves the recording, on an app that mounts uploads (#37, #48)
4a0226d8bd test(llm): the response cap is pinned at its boundary and as the production default (#53)
2e54d80a78 test(uploads): jobSink forwards the tracker's timestamp to the store (#51)
01c1606caa test(progress): the default save and heartbeat deadline is pinned, not only the override (#51)
Compare 6 commits »
mathias created pull request mathias/tapir#58 2026-10-03 19:22:47 +00:00
v0.32.0: per-recording delete and nav link, cloud-served note, tracker hardening, bounded LLM reads (#37 #51 #52 #53)
mathias pushed to sprint/v032 at mathias/tapir 2026-10-03 19:22:43 +00:00
25628a9994 test(web): the per-recording delete route is covered by the cross-origin gate (#37, #48)
a6691ac46b docs: per-recording delete and the recordings link are built; feature scenarios and coverage map (#37)
c909b4e775 feat(web): confirm-then-delete control on a finished or failed recording (#37)
f309a39027 feat(web): POST /uploads/{id}/delete, owner-scoped and refused while the recording is active (#37)
89611164e3 test(web): per-recording delete is owner-scoped, refused while active, offered only when finished (#37), red
Compare 10 commits »
mathias created branch sprint/v032 in mathias/tapir 2026-10-03 19:22:43 +00:00
mathias commented on issue mathias/tapir#50 2026-10-03 19:22:09 +00:00
SIGTERM is not handled: every deploy kills the process without draining or failing the running row (interim fix; the full drain is recorded as a limitation)

Shipped in v0.31.1 (e037c6b, image live): SIGTERM handled; a shutdown records the running job interrupted at once on its own 3 s context; serveHTTP waits (10 s each) for in-flight requests and…

mathias closed issue mathias/tapir#47 2026-10-03 19:22:07 +00:00
Audio upload: cap concurrent uploads in flight, and give ffprobe its own deadline (found reviewing the production enablement, infra#520)
mathias closed issue mathias/tapir#48 2026-10-03 19:22:06 +00:00
Security: refuse cross-origin POSTs; POST /account/delete is forgeable from a sibling *.d-ma.be origin
mathias closed issue mathias/tapir#49 2026-10-03 19:22:06 +00:00
ffprobe/ffmpeg resource limits: a 900-stream file costs about 570 MB against the 512 Mi pod limit; no probe deadline; unbounded probe output
mathias commented on issue mathias/tapir#47 2026-10-03 19:22:03 +00:00
Audio upload: cap concurrent uploads in flight, and give ffprobe its own deadline (found reviewing the production enablement, infra#520)

Item 1 shipped in v0.31.1 (e037c6b): at most 4 request bodies received at once, 2 per user, busy rejection before anything is spooled; production defaults pinned by `TestNewIntake_DefaultsAllowTwoR…

mathias commented on issue mathias/tapir#41 2026-10-03 19:22:01 +00:00
Taskfile lint step can never fail: golangci-lint run || echo "not installed" swallows findings

Fixed in v0.31.1 (e037c6b). task lint now fails on findings; TestTaskLint_* runs the real Taskfile in a scratch module, TestTaskCheck_RunsTheLintStep pins that check runs it. CI run 8940…

mathias commented on issue mathias/tapir#49 2026-10-03 19:22:00 +00:00
ffprobe/ffmpeg resource limits: a 900-stream file costs about 570 MB against the 512 Mi pod limit; no probe deadline; unbounded probe output

Shipped in v0.31.1 (e037c6b, live). Measured with the static ffmpeg/ffprobe 7.0.2 on the 900-stream file: 564 MB (ffprobe) / 566 MB (ffmpeg) RSS without -max_streams, 18 MB with `-max_streams…

mathias commented on issue mathias/tapir#48 2026-10-03 19:21:57 +00:00
Security: refuse cross-origin POSTs; POST /account/delete is forgeable from a sibling *.d-ma.be origin

Shipped in v0.31.1 (merge e037c6b, PR #55, image e037c6b live). Adversarial review verdicts (agent reviews, round 1 BLOCK on other findings, round 2 APPROVE) are on PR #55; the reviewer's 33…

mathias pushed tag v0.31.1 to mathias/tapir 2026-10-03 19:20:00 +00:00
mathias pushed to main at mathias/tapir 2026-10-03 19:19:56 +00:00
e037c6b683 Merge pull request 'v0.31.1: cross-origin POST protection, ffprobe/ffmpeg limits, receive cap, SIGTERM, lint gate (#41 #47 #48 #49 #50)' (#55) from sprint/audio-followups into main
5baffd0189 fix(test): strip colour codes before looking for the lint skip notice (CI run 8937)
228bcc77da test(lint): the skip notice is found behind CI's colour codes, red
4ef446548d docs(adr): spool arithmetic and the unbounded slow-drip limitation for the receive cap (#47)
145949875e fix(audio): keep a bounded head of ffmpeg's output instead of buffering all of it (#49)
Compare 25 commits »
mathias merged pull request mathias/tapir#55 2026-10-03 19:19:55 +00:00
v0.31.1: cross-origin POST protection, ffprobe/ffmpeg limits, receive cap, SIGTERM, lint gate (#41 #47 #48 #49 #50)
mathias closed issue mathias/tapir#41 2026-10-03 19:19:55 +00:00
Taskfile lint step can never fail: golangci-lint run || echo "not installed" swallows findings
mathias commented on pull request mathias/tapir#55 2026-10-03 19:19:53 +00:00
v0.31.1: cross-origin POST protection, ffprobe/ffmpeg limits, receive cap, SIGTERM, lint gate (#41 #47 #48 #49 #50)

Adversarial review round 2 (pr-gatekeeper, review-only, verified by execution): APPROVE for delta 3e69c00..4ef4465. Agent review, not four-eyes.

  • FailUpload guard: lost-ack scenario on real…
mathias pushed to sprint/audio-followups at mathias/tapir 2026-10-03 19:18:07 +00:00
5baffd0189 fix(test): strip colour codes before looking for the lint skip notice (CI run 8937)
228bcc77da test(lint): the skip notice is found behind CI's colour codes, red
Compare 2 commits »
mathias commented on pull request mathias/tapir#55 2026-10-03 19:13:31 +00:00
v0.31.1: cross-origin POST protection, ffprobe/ffmpeg limits, receive cap, SIGTERM, lint gate (#41 #47 #48 #49 #50)

Adversarial review round 1 (pr-gatekeeper, review-only, verified by execution): BLOCK on head 3e69c00. Recorded here and on #48/#54. The reviewer is an agent, so this is an independent pass,…

mathias opened issue mathias/tapir#57 2026-10-03 19:13:13 +00:00
Shutdown: log an undrained Shutdown and let a second signal kill the process