Repository navigation
OAUTH-001A2J — Safely admit Strava HTTP success markers - #605
Conversation
✅ Deploy Preview for luminous-fox-7c393f ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
SELF-REVIEW — GO, no findings on exact head 604e51c. I re-read the complete remote diff and all five status call sites. The shared helper admits only an ordinary own-data Boolean true or a genuine exact-prototype native Response through the captured native getter. It rejects accessors, inherited values, custom wrappers, live/revoked Proxies, coercion, and malformed markers before body access. Path mappings remain distinct and compatible: authorization invalid-argument, refresh failed-precondition, activities internal, optional statistics null totals, and disconnect fixed unavailable with local records preserved. The two revocation timing tests correctly separate pre-assimilation transport failure from post-fulfillment status rejection. No raw error/status/body/token is exposed or logged, and no extra writes, deletes, timestamps, or provider calls are introduced. Exact base remains dff1a40. Remote patch SHA-256 remains 6d740feb8f55d9ce2afc2db56f1ddfeabf7fdc8a193e7be54127dbf5a837881f. The file list is exactly the two claimed Strava files. There is no base drift, no late reviewer finding, and all five required CI jobs are green. Preview 6a6ed7dab8a874000894d193 is ready from the exact head, HTTP 200, x-robots-tag noindex, and unpublished. GitHub deployments are empty. This is preview/source evidence only; it does not prove a Firebase deployment, provider change, production-data action, or live Function behavior. Officer impact: no current visible change; the fixed containment becomes relevant only after a future protected Firebase Functions release. Officer documentation: None — existing SOURCE ONLY / NOT LIVE Strava guidance remains accurate. Deployment evidence: exact-head CI and unpublished preview only. No website publication, runmprc.com change, Firebase deployment, Strava/provider configuration or contact, production-data change, or live verification. |
|
MERGED / FINAL — exact reviewed head 604e51c is now exact main a62c147 with identical tree 77715f25ff475a572fa4a8ad3bd676d6f8ec1333 and patch SHA-256 6d740feb8f55d9ce2afc2db56f1ddfeabf7fdc8a193e7be54127dbf5a837881f. PR CI 30734480554 and post-main CI 30734583158 passed all five required jobs. Preview 6a6ed7dab8a874000894d193 was exact-head, ready, HTTP 200, noindex, and unpublished. Officer impact: no current visible change; the containment applies only after a future protected Firebase Functions release. Officer documentation: None — existing Strava SOURCE ONLY / NOT LIVE guidance remains accurate. Deployment evidence: exact-main GitHub deployments are empty. Exact-main Netlify production attempt 6a6ed8aafd3a8300085bf55c errored with published_at null. The live runmprc.com release marker remains #473 control/source, and no Firebase deployment, Strava/provider action, production-data change, or live verification occurred. No green CI result is represented as deployment evidence. No review finding remains; #604 is complete and every claim is released. |
Closes #604
Officer impact: After a future protected Firebase Functions release, an unexpected internal result while the website talks to Strava will remain behind the existing fixed authorization, refresh, or activity-loading outcome. There is no current officer-visible change and no new officer action.
Officer documentation: None — this is a server-only transport-object admission boundary. It changes no public page, officer duty, collected field, permission, account, deployment step, or recovery procedure. Existing Strava SOURCE ONLY / NOT LIVE failure guidance remains accurate.
Deployment evidence: Source and local-test evidence only at PR creation. Nothing is merged or live. No website publication, runmprc.com change, Firebase deployment, Strava/provider configuration or contact, production-data change, or live-behavior verification occurred. A green workflow will not prove that a Function is deployed.
Outcome
Generalizes the existing safe disconnect response-success helper and routes all five Strava HTTP status decisions through it:
Only an ordinary plain record with an own data ok exactly equal to Boolean true, or a genuine exact-prototype native Response whose captured native getter reports success, is admitted.
Failure behavior
Ordinary provider wire bytes cannot create an accessor or Proxy. This is defense-in-depth containment for malformed or instrumented resolved transport objects.
Trustworthy RED
Exact base: dff1a40
Test-only diff SHA-256: c4c73b8cbfc4d6f3b65e066e271c91e1678f365852d6f463eaf24a54907d660f
Pinned Node 20 result on old runtime: 692 total / 691 passed / exactly the new activities-accessor test failed because the direct status read invoked and returned the hostile error by identity.
Verification
Exact reviewed head: 604e51c
Exact patch SHA-256: 6d740feb8f55d9ce2afc2db56f1ddfeabf7fdc8a193e7be54127dbf5a837881f
Migration and residual risk
No schema, dependency, client contract, data migration, or production fallback change. Existing plain test transports and genuine native fetch responses retain behavior. Exotic response wrappers now fail closed.
Response-byte streaming limits, JSON projection, lossless ID transport, refresh concurrency, provider policy/configuration, Firebase deployment, production data, and live verification remain explicitly outside this PR.