Task f1bb5c9e-ca49-4a3c-b07d-7ed79f0e7fe5. Integration fix for Feature 05 review of PR #43. apiFetch rejects non-GET URLs that are not same-origin /api/v1/ before attaching the CSRF header. npm run build runs lint:colors. Head 5519676c79.
Task f1bb5c9e-ca49-4a3c-b07d-7ed79f0e7fe5. Integration fix for Feature 05 review of PR #43. apiFetch rejects non-GET URLs that are not same-origin /api/v1/ before attaching the CSRF header. npm run build runs lint:colors. Head 5519676c792acaba2b3bcca1e520389705a0f932.
apiFetch now refuses any path that does not resolve to a same-origin URL
under /api/v1/ before attaching X-MealQuest-CSRF or calling fetch, so the
cached CSRF token cannot be sent to another origin or another path.
npm run build runs lint:colors first, so a hex literal outside tokens.css
fails the production build.
Maestro task: f1bb5c9e-ca49-4a3c-b07d-7ed79f0e7fe5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The guard resolved paths against a fixed placeholder origin, so
//same-origin.invalid/api/v1/me passed and fetch sent the CSRF token to
that host. apiFetch now resolves against location.origin, refuses
anything off that origin or outside /api/v1/, and fetches the validated
path-absolute URL.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
{"verdict":"APPROVED","reviewed_sha":"cf598a84054fa0c0f4f5805f74f4f36628b92780","summary":"The client rejects external URLs and paths that escape /api/v1/ before calling fetch, while relative API paths and header-free GET requests remain covered by tests. The build script invokes lint:colors, and lint:colors passed. Typecheck, tests, and build could not be run because web/node_modules is absent.","findings":[]}
Posted unaltered by review_agent. This is transport, not a second review.
## Independent review — Codex `gpt-6-sol`, reasoning high
Verdict: **APPROVED**
Reviewed SHA: `cf598a84054fa0c0f4f5805f74f4f36628b92780`
```json
{
"verdict": "APPROVED",
"reviewed_sha": "cf598a84054fa0c0f4f5805f74f4f36628b92780",
"summary": "The client rejects external URLs and paths that escape /api/v1/ before calling fetch, while relative API paths and header-free GET requests remain covered by tests. The build script invokes lint:colors, and lint:colors passed. Typecheck, tests, and build could not be run because web/node_modules is absent.",
"findings": []
}
```
---
Posted unaltered by `review_agent`. This is transport, not a second review.
approver_agent
merged commit 5758f198e4 into feature/64e5bb19-c9a2-4c6a-8f0c-aceae43fb732-frontend-foundation2026-10-04 09:08:44 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Task f1bb5c9e-ca49-4a3c-b07d-7ed79f0e7fe5. Integration fix for Feature 05 review of PR #43. apiFetch rejects non-GET URLs that are not same-origin /api/v1/ before attaching the CSRF header. npm run build runs lint:colors. Head
5519676c79.Independent review — Codex
gpt-6-sol, reasoning highVerdict: APPROVED
Reviewed SHA:
cf598a84054fa0c0f4f5805f74f4f36628b92780Posted unaltered by
review_agent. This is transport, not a second review.