docs release evidence p15 t05 privacy acceptance - AlexandreZanata/Abastevo GitHub Wiki

P15-T05 — Media privacy and device acceptance

Status: LOCAL_DONE on codex/phase-15-lightweight-photos (phase PR #39, draft). Issue: #38 (slice 5 of 5; issue stays open until the phase PR merges). No camera, storage-config or live-provider contact in this slice; device runs stay deferred per owner decision, recorded — never claimed.

Slice acceptance (frozen before coding)

  • T05 (this commit) — G15 exit: real-PostGIS E2E of the full low-memory audit path (reserve → complete → forward verify → logical access expiry at the deadline with bytes present → sweep deletes bytes + marks rows → repeat converges), with restart-resume (fresh store handle), outage-then-retry and refusal log-redaction proofs; privacy notice reconciles deleted-photo vs retained-fact (bytes gone, fact + 90-day hashes stay, expired never advertised as available) and discloses the powered-off limitation; runbook freezes the same limitation. G15 evidence separates logical access expiry from actual deletion; nothing is claimed from an emulator.

What changed

  • adapters/e2e_forward_test.go (integration) — TestForwardLifecycleEndToEnd (full path incl. restart, outage/retry, convergence, audit-zero, row-survives) + TestForwardRejectionsStayRedacted (fixed-vocabulary reasons, no payload/key material in errors).
  • docs/backend/PRIVACY_NOTICE.md — sanitized row now reads every-copy 24 h; new after-expiry and powered-off paragraphs; target note updated (media rows forward, account/social rows pending).
  • docs/operator/retention.md — frozen powered-off limitation section.

RED → GREEN

  • RED proven by zeroing the forward ExpiresAt: the E2E first-receipt + 24 h assertion fails; GREEN on restore.

Validation (exact commands, this host)

cd backend && GOTOOLCHAIN=go1.27.1 go build ./... && sqlc vet
GOTOOLCHAIN=go1.27.1 go test -count=1 ./internal/modules/evidence/... ./cmd/ops/
export ANPFUEL_TEST_DATABASE_URL=postgres://anpfuel:[email protected]:5434/anpfuel?sslmode=disable
GOTOOLCHAIN=go1.27.1 go test -count=1 -race -tags=integration ./internal/modules/evidence/...
./gradlew :domain:test :application:test :data:testDebugUnitTest :app:testDebugUnitTest :app:assembleDebug --no-daemon
bash scripts/check-mobile.sh
git diff --check

Outcome: backend unit + -race integration green (incl. the 2 new E2E suites); Android baseline BUILD SUCCESSFUL; check-mobile full ok (Swift SKIP recorded outstanding); diff --check clean; secrets scan clean.

Limits (not claimed)

  • No device run (Android/iOS hardware stays release-horizon); 2 MP/32 MiB figures are host-measured until device matrices.
  • Worker-RSS matrix and live-R2 overdue drill stay outstanding to release per owner decision pattern.

Rollback

E2E test + doc paragraphs only (no behavior change): deleting them restores the tree. No migration, no flag.

Next

G15 exit review + phase closure (#38, same branch; issues #34–#38 stay open until PR #39 merges).