Skip to content

OAUTH-001B2: redact ambiguous Strava disconnect browser failures#253

Merged
daliu merged 1 commit into
mainfrom
codex/issue-252-strava-disconnect-ui-redaction
Jul 14, 2026
Merged

OAUTH-001B2: redact ambiguous Strava disconnect browser failures#253
daliu merged 1 commit into
mainfrom
codex/issue-252-strava-disconnect-ui-redaction

Conversation

@daliu

@daliu daliu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Closes #252
Parent: #88

Outcome

A rejected Strava disconnect request is now treated as an unknown outcome. My Account shows one fixed refresh-before-retry alert without inspecting, rendering, or logging the rejected value. It preserves the connected athlete and activity view until a refresh re-reads authoritative state.

A dedicated disconnect warning outranks a later activity-load failure, so concurrent failures cannot erase the safer instruction. Cancel and successful disconnect behavior remain unchanged.

Safety invariant

  • rejected provider, callable, SDK, and exception values are untrusted and never inspected
  • rejection never claims that revoke or deletion succeeded or failed
  • the connected view remains because the result is unknown
  • the busy state ends, while a pending request disables repeat activation
  • a later stats failure cannot replace the disconnect refresh instruction
  • tests use only made-up values and mocks; no Firebase or Strava network access

Verification

Red proof on old source:

  • 33 passed / 2 intended failures
  • raw private canary rendered
  • hostile message getter executed and prevented a safe alert

Final local proof on Node 20:

  • focused Account: 36/36
  • full frontend: 12 suites / 259 tests
  • TypeScript no-emit: passed
  • lint safety: unchanged at 106 files / 123 reviewed legacy errors / 7 warnings
  • SPA navigation: 11/11
  • workflow, release, Firebase-readback, and artifact safety: 42/42
  • diagnostic production build: passed
  • git diff --check: passed
  • exact three-path diff SHA-256: 9ad38d66778169e150264eebce0a9934912b2f3e8c58b987bbeb2662a277f035
  • independent security, frontend/accessibility, and officer/scope reviews: final PASS

Review-driven correction

Initial independent review found a race in which a pending stats rejection could overwrite the ambiguous-disconnect warning. The issue claim was amended before that area was edited. The final source uses a dedicated disconnect-error state and explicit precedence while leaving the #250 stats catch byte-for-byte unchanged. A deferred-stats regression test proves the correction.

Scope

Only:

Open commerce #249/#246 paths are disjoint and untouched.

Officer impact: Members and officers see one plain refresh-before-retry instruction when a disconnect result cannot be confirmed; the page does not expose technical/provider detail or guess the result.
Officer documentation: docs/officers/EVENTS_SHOP_MEMBERS.md, section Strava disconnect failure privacy — SOURCE ONLY, NOT LIVE.
Deployment evidence: None yet. This PR changes source/tests/docs only. No release workflow, website, runmprc.com, Firebase, Strava/provider, production-data, migration, revoke, or live-behavior action occurred.

Residual risk

This slice does not make revoke/delete retry-safe, add durable lifecycle audit, confirm provider revocation, deploy Firebase or the website, or prove live behavior. Those remain under canonical #88.

@netlify

netlify Bot commented Jul 14, 2026

Copy link
Copy Markdown

Deploy Preview for luminous-fox-7c393f ready!

Name Link
🔨 Latest commit 45c4d6b
🔍 Latest deploy log https://app.netlify.com/projects/luminous-fox-7c393f/deploys/6a55ec4a8c24e000086da430
😎 Deploy Preview https://deploy-preview-253--luminous-fox-7c393f.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@daliu daliu merged commit 81093e0 into main Jul 14, 2026
9 checks passed
@daliu daliu deleted the codex/issue-252-strava-disconnect-ui-redaction branch July 14, 2026 08:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OAUTH-001B2 — Redact ambiguous Strava disconnect browser failures

1 participant