Conversation
Co-authored-by: Will Schenk <wschenk@gmail.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- /api/health reports database, object storage, Clerk, gateway, queue, and push with secret-free details and a degraded overall status - Private Vercel Blob adapter (access: private, per-user pathnames) replaces the in-memory fallback whenever BLOB_READ_WRITE_TOKEN is configured - /privacy discloses provider processing via Vercel AI Gateway, TLS-only transport, no end-to-end encryption claim, foreground-vs-background sync, and offline durability; linked from the shell footer and cached offline - Strict-Transport-Security header on every response - Cross-user boundary tests for sync records, media, Enrichment, and push - Skip-gated preview smoke tests for Neon, Blob, gateway, search, and push Co-authored-by: Will Schenk <wschenk@gmail.com>
- Blob adapter implements existsForOtherUser so the media route's cross-user 403 branch works against real storage; simpler stream reading - Clerk smoke test against the backend API; Neon smoke adds a real-repository cross-user check; push smoke requires the service to accept VAPID auth - mise run smoke:preview wires the smoke suite to the preview vault Co-authored-by: Will Schenk <wschenk@gmail.com>
cursor Bot
pushed a commit
that referenced
this pull request
Jul 19, 2026
Co-authored-by: Will Schenk <wschenk@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket
Closes #18 — Harden production integrations and disclose data handling (parent #1)
Claim note: this PR claimed #18 (label applied 02:34 UTC). PR #46 was opened ten minutes later against the already-claimed ticket; both claim-checks now flag the collision. This PR holds the earlier claim.
What this PR does
Makes the deployed application operable and honest about its external dependencies, security boundaries, offline limits, and provider processing.
GET /api/healthnow reports all six services — database (real Neon round-trip), object storage, Clerk, gateway (with the selected model), queue (open durable Enrichment jobs), and push (VAPID pair) — each asok | degraded | error | not_configuredwith secret-free details. Overall status isconfiguration_required(503) until Clerk is configured,degradedon any service error. Verified live on this PR's Preview.@vercel/blobadapter:access: "private", per-usermedia/<userId>/…pathnames, no permanent public URLs,existsForOtherUserso the authenticated media route's cross-user 403 branch works against real storage./privacy(linked from the shell footer, cached for offline reading) states: local-first Capture durability, dependable foreground vs best-effort background sync, private cloud storage with separate preview/production resources, complete Thread content is sent through Vercel AI Gateway to the selected provider with the exact model recorded, TLS transport, and explicitly no end-to-end encryption claim.Strict-Transport-Securityon every response.tests/production-boundaries.spec.tslocks identifier scoping for sync records, media objects, Enrichment history/jobs, and push subscriptions despite single-user v1.tests/preview-smoke.spec.tsexercises real isolated preview instances at low volume — Clerk backend API, Neon round-trip plus a real-repository cross-user check, private Blob put/get/delete, one tiny gateway completion, one web search, and a push send whose VAPID auth must be accepted. Each skips without its credential;mise run smoke:previewruns them against the preview vault. No secrets in fixtures or logs (health test asserts no secret values serialize).Environment separation (Neon/Blob/Clerk/gateway/push/queue per environment, fnox-backed vaults) is documented in
docs/operations/README.md.Verification
/api/healthreturns the new report (Clerk, gateway, pushok; database/blob honestlynot_configuredon this preview) and/privacyreturns 200.existsForOtherUser, stronger push smoke assertion, Clerk smoke,smoke:previewtask).