Sentry was wired up in #17: @sentry/browser dynamic-imported in Layout.astro behind the production-hostname gate, environment: 'production', and source maps uploaded via @sentry/vite-plugin (daniel-workmsn / danielworkmandev) with sourcemap: 'hidden'.
That covers sending errors. Everything after "errors are arriving" is still missing. Timebox: half a day.
P0 — Fix the org slug first
The org slug is daniel-workmsn; it should be daniel-workman. Decision made: rename it. This goes first because the MCP task below bakes the slug into a path-constrained URL, and Sentry doesn't reserve released slugs — the old one becomes claimable by anyone once it's freed.
DSNs are not derived from the org slug, so ingestion keeps working throughout and Layout.astro needs no change.
P0 — No alert rules exist
Errors are accumulating with nothing to surface them. This is the gap Sentry's own onboarding leads with, and it's the cheapest thing on this list.
P1 — Server-side errors are not captured at all
output: 'server' with the Cloudflare adapter, plus src/middleware.ts. Anything thrown in the Worker never reaches Sentry, because only the browser SDK is installed. Right now a 500 on SSR is invisible.
P1 — Source map upload fails silently
disable: !process.env.SENTRY_AUTH_TOKEN means a deploy from a machine without the token produces a green build, no upload, and no warning. Deploys are local (pnpm deploy); CI only runs wrangler deploy --dry-run. With two machines in play this will bite eventually — and it bites later, when a stack trace turns out to be minified.
P2 — No release set
Sentry.init() sets environment but no release. Debug IDs mean source maps still resolve, so traces stay readable — what's lost is regression detection and "first seen in release".
P2 — Sentry MCP, scoped to the personal machine
Personal and work Sentry accounts need to stay apart. The remote MCP supports path constraints (/mcp/:org, /mcp/:org/:project) and mints a token that only works for that scoped URL — it can't be replayed against a broader path, and refresh doesn't widen access. That's the mechanism doing the work here, not the machine boundary.
Blocked on the slug rename above — authorising against the old slug means redoing the OAuth flow.
Docs: https://mcp.sentry.dev/ · https://github.com/getsentry/sentry-mcp
Sentry was wired up in #17:
@sentry/browserdynamic-imported inLayout.astrobehind the production-hostname gate,environment: 'production', and source maps uploaded via@sentry/vite-plugin(daniel-workmsn/danielworkmandev) withsourcemap: 'hidden'.That covers sending errors. Everything after "errors are arriving" is still missing. Timebox: half a day.
P0 — Fix the org slug first
The org slug is
daniel-workmsn; it should bedaniel-workman. Decision made: rename it. This goes first because the MCP task below bakes the slug into a path-constrained URL, and Sentry doesn't reserve released slugs — the old one becomes claimable by anyone once it's freed.daniel-workmanorg:insentryVitePlugin(astro.config.mjs)SENTRY_AUTH_TOKENis an org auth token, regenerate it — org tokens embed the old slug, are not auto-revoked, and fail with a misleadingA release slug is requirederror rather than an auth error. A user auth token is unaffected.DSNs are not derived from the org slug, so ingestion keeps working throughout and
Layout.astroneeds no change.P0 — No alert rules exist
Errors are accumulating with nothing to surface them. This is the gap Sentry's own onboarding leads with, and it's the cheapest thing on this list.
danielworkmandev: new issue → emailP1 — Server-side errors are not captured at all
output: 'server'with the Cloudflare adapter, plussrc/middleware.ts. Anything thrown in the Worker never reaches Sentry, because only the browser SDK is installed. Right now a 500 on SSR is invisible.@sentry/cloudflarefor the Worker sideP1 — Source map upload fails silently
disable: !process.env.SENTRY_AUTH_TOKENmeans a deploy from a machine without the token produces a green build, no upload, and no warning. Deploys are local (pnpm deploy); CI only runswrangler deploy --dry-run. With two machines in play this will bite eventually — and it bites later, when a stack trace turns out to be minified.SENTRY_AUTH_TOKENlivesP2 — No release set
Sentry.init()setsenvironmentbut norelease. Debug IDs mean source maps still resolve, so traces stay readable — what's lost is regression detection and "first seen in release".sentryVitePluginandinit()P2 — Sentry MCP, scoped to the personal machine
Personal and work Sentry accounts need to stay apart. The remote MCP supports path constraints (
/mcp/:org,/mcp/:org/:project) and mints a token that only works for that scoped URL — it can't be replayed against a broader path, and refresh doesn't widen access. That's the mechanism doing the work here, not the machine boundary.Blocked on the slug rename above — authorising against the old slug means redoing the OAuth flow.
https://mcp.sentry.dev/mcp/daniel-workmanat--scope user, namedsentry-personalsentry-work/mcplists onlysentry-personal; it can readdanielworkmandevissues and cannot see the work orgDocs: https://mcp.sentry.dev/ · https://github.com/getsentry/sentry-mcp