docs mobile p37 owner scope expiry - AlexandreZanata/Abastevo GitHub Wiki

P37-T02 stable contribution ownership across access expiry

B-BR-PC04 / BUC-PC04, AK03 refinement, 2026-10-08: access-token expiry must not change a retained account contribution into an anonymous intent. Local owner scope uses the retained, shape-checked account identity while refresh is owed. This is identity continuity, never expired-token authorization: signed photo operations still require fresh server-issued nonces and the exact device key; account HTTP access/refresh/revocation rules remain unchanged. Explicit logout, account/device-key/origin changes and pending unverified key-account recovery must never dispatch another owner's command or reveal its private receipt.

Source parent: 6ca2e94, maintained dev. Connected POCO read-only native diagnosis for the exact existing capture found five account commands, five matching origins, zero matching current owner scopes, NeedsRefresh and access_live=false. WorkManager had terminated the five attempts as FAILED after owner-or-origin-changed. The server photo/job recovery is already complete. Normal foreground rescheduling uses the same owner-scoped durable command IDs; recovery creates no new intent, revision, photo/session or retention extension.

Status: LOCAL_DONE Validation: PASS

Local evidence and remaining runtime work

The focused auth/owner/dispatcher/receipt slice passed 112 distinct cases, including expiry during an in-flight signed request, offline logout, changed account/key/origin, pending key recovery and no expired bearer transmission. Commands and raw local results: /tmp/owner-scope-green-build.log, /tmp/owner-scope-inflight-test.log; final unchanged transport regression on 2026-10-09: :data:testDebugUnitTest --tests '*PhotoProofTransportTest' passed. App/data debug lint reported zero errors; debug/instrumentation builds and release/R8 passed (unsigned APK 4,249,809 bytes). Two native feedback dialog cases passed on the combined APK, installed without account/data wipe.

The temporary exact-capture recovery harness returned five frozen commands, zero eligible dispatches, zero received/validated receipts and no mutations. It therefore proves no completed mobile delivery. The operator harness is removed from source; no next-day replay or retention extension is authorized by this local checkpoint. Live receipt/end-user confirmation remains OWED. Backend same-photo recovery and original deadlines are unchanged.

No deployment, remote Git publication, production certification or premium fuel behavior is part of this ownership repair.

Transport/test source fingerprint: 5919b9dfe6d165a5c346b51894e0dddd40346554e354c78939e96644802cec6d.