Privacy sweep: opaque TURN usernames, delete on receipt, coturn logs, retention scripts #244

Merged
paulhitt merged 7 commits from privacy/sweep-2026-10 into main 2026-10-07 14:56:49 +00:00
paulhitt commented 2026-10-07 13:36:37 +00:00 (Migrated from gitlab.com)

Privacy sweep, part 1 (owner-approved 2026-10-07).

  • TURN usernames carry no account id. <expiry>:<32 random hex>, fresh per credential. Tested live against production coturn: allocate succeeds; wrong and expired credentials get 401. Neither app parses the username.
  • Delete on receipt is on by default (FN_DELETE_ON_ACK=0 turns it off; never on SQLite). Deletes only the polling device's own envelopes up to the cursor it confirmed. The 1-day sweep stays as the backstop. Docs, metadata and privacy pages (en + es) updated. Deploying this turns it on in production, because the box .env has FN_DELETE_ON_ACK= empty.
  • coturn logs: one stream with a size cap, no dated files inside the container.
  • deploy/retention/: PITR WAL prune (7-day window, list-only unless --apply, refuses without a readable base), a fixed WAL push script (the current one writes pg_basebackup's NOTICE line into the base tar, so restores fail at step one), a 30-day expiry for the offsite attachment copy, timers. Nothing here is installed by merging; the README has the steps.
  • .e2e-ref pins flamenet-e2e c26cd74 (extant2000/flamenet-e2e!64), which must merge first.

Tests: new suites 13 tests / 3 suites + 3 XCTest; broader targeted run 114 tests / 20 suites + 25 XCTest, 0 failures; each new test falsified then restored; e2e harness 266 passed, 0 failed, 2 skipped. Full suite and Linux not run locally; CI covers Linux.

🤖 Generated with Claude Code

Privacy sweep, part 1 (owner-approved 2026-10-07). - **TURN usernames carry no account id.** `<expiry>:<32 random hex>`, fresh per credential. Tested live against production coturn: allocate succeeds; wrong and expired credentials get 401. Neither app parses the username. - **Delete on receipt is on by default** (`FN_DELETE_ON_ACK=0` turns it off; never on SQLite). Deletes only the polling device's own envelopes up to the cursor it confirmed. The 1-day sweep stays as the backstop. Docs, metadata and privacy pages (en + es) updated. Deploying this turns it on in production, because the box `.env` has `FN_DELETE_ON_ACK=` empty. - **coturn logs:** one stream with a size cap, no dated files inside the container. - **deploy/retention/:** PITR WAL prune (7-day window, list-only unless `--apply`, refuses without a readable base), a fixed WAL push script (the current one writes pg_basebackup's NOTICE line into the base tar, so restores fail at step one), a 30-day expiry for the offsite attachment copy, timers. Nothing here is installed by merging; the README has the steps. - `.e2e-ref` pins flamenet-e2e c26cd74 (extant2000/flamenet-e2e!64), which must merge first. Tests: new suites 13 tests / 3 suites + 3 XCTest; broader targeted run 114 tests / 20 suites + 25 XCTest, 0 failures; each new test falsified then restored; e2e harness 266 passed, 0 failed, 2 skipped. Full suite and Linux not run locally; CI covers Linux. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
paulhitt commented 2026-10-07 14:23:27 +00:00 (Migrated from gitlab.com)

added 1 commit

  • f9f7eb40 - Regenerate the spec and self-hosting pages; pin merged e2e main

Compare with previous version

added 1 commit <ul><li>f9f7eb40 - Regenerate the spec and self-hosting pages; pin merged e2e main</li></ul> [Compare with previous version](/extant2000/flamenet-relay/-/merge_requests/181/diffs?diff_id=2084159560&start_sha=acdffd6c36065cb8b02db73ff9389a0fe72da44a)
paulhitt (Migrated from gitlab.com) scheduled this pull request to auto merge when all checks succeed 2026-10-07 14:23:37 +00:00
paulhitt (Migrated from gitlab.com) merged commit d2820f878c into main 2026-10-07 14:56:49 +00:00
paulhitt commented 2026-10-07 14:56:50 +00:00 (Migrated from gitlab.com)

mentioned in commit d2820f878c

mentioned in commit d2820f878c341f4bb3787d544a95d8ae80516c1c
Sign in to join this conversation.