{"ok":true,"requestId":"4a55629e-1c07-4d7c-82f4-d87e5adb986c","summary":{"statusPageUrl":"https://portfolio.wrxstack.com/status","generatedAt":"2026-07-10T10:28:45.819Z","overallState":"monitor-ready","overallLabel":"Monitor-ready","componentCount":10,"operationalCount":9,"monitorCount":10,"components":[{"id":"app-liveness","name":"Application liveness","summary":"The Next.js application process is running and serving the repo-owned live identity.","state":"operational","userImpact":"Portfolios, auth screens, admin routes, and public APIs can receive traffic.","monitor":{"type":"http","target":"/api/internal/health/live","cadence":"60 seconds","expected":"HTTP 200 with service=wrxstack and check=live","owner":"platform"},"sourceRefs":["app/api/internal/health/live/route.ts","lib/health/live.ts","render.yaml"]},{"id":"dependency-health","name":"Dependency health","summary":"Database, R2, Anthropic, and SES dependency probes report platform readiness.","state":"operational","userImpact":"Generation, uploads, email, and publishing stay observable before users notice drift.","monitor":{"type":"http","target":"/api/internal/health","cadence":"2 minutes","expected":"HTTP 200 or explicit degraded JSON with named dependency states","owner":"platform"},"sourceRefs":["app/api/internal/health/route.ts","lib/health/checks.ts"]},{"id":"public-portfolio","name":"Public portfolios","summary":"The public portfolio renderer serves tenant pages and route states.","state":"operational","userImpact":"Visitor-facing home, about, case study, and contact pages continue loading.","monitor":{"type":"keyword","target":"/public-site","cadence":"2 minutes","expected":"HTTP 200 and visible Folio public content","owner":"growth"},"sourceRefs":["app/(public)/public-site/[[...slug]]/page.tsx","tests/e2e/landing.spec.ts"]},{"id":"authentication","name":"Authentication","summary":"Signup, login, verification, reset, and settings entry points stay reachable.","state":"operational","userImpact":"Users can create accounts, sign in, recover access, and manage security settings.","monitor":{"type":"keyword","target":"/login","cadence":"2 minutes","expected":"HTTP 200 with login form content and no framework overlay","owner":"platform"},"sourceRefs":["app/login/page.tsx","app/signup/page.tsx","tests/e2e/auth-verification.spec.ts"]},{"id":"tenant-admin","name":"Tenant admin","summary":"Authenticated tenant admin entry points redirect or render safely.","state":"operational","userImpact":"Owners and editors can manage content after authentication.","monitor":{"type":"http","target":"/admin/demo-founder","cadence":"5 minutes","expected":"HTTP 200/302 guarded response with no 5xx","owner":"platform"},"sourceRefs":["app/(platform)/admin/[tenantSlug]/page.tsx","tests/e2e/admin-responsive.spec.ts"]},{"id":"custom-domains","name":"Custom domains","summary":"Caddy routes verified domains and the ASK endpoint fails closed for unknown hosts.","state":"external","userImpact":"Connected domains resolve only after ownership, routing, and TLS checks pass.","monitor":{"type":"http","target":"/api/internal/caddy/ask?domain=example.invalid","cadence":"5 minutes","expected":"HTTP 404 JSON denial for unknown domains; allow only active verified domains","owner":"platform"},"sourceRefs":["caddy/Caddyfile","app/api/internal/caddy/ask/route.ts","render.yaml"]},{"id":"media-processing","name":"Media processing jobs","summary":"Media cleanup and processing jobs keep uploads moving and remove stale assets.","state":"operational","userImpact":"Images, audio, video, and document thumbnails complete processing or retry safely.","monitor":{"type":"cron","target":"portfolio-process-media-assets","cadence":"10 minutes","expected":"Render cron succeeds and records source-safe counters","owner":"platform"},"sourceRefs":["scripts/process-media-assets.ts","scripts/cleanup-orphan-assets.ts","render.yaml"]},{"id":"security-alerting","name":"Security alerting","summary":"Super-admin anomaly detection, alert delivery, audit checksums, and exports run on schedule.","state":"operational","userImpact":"Critical admin activity, audit integrity, and offsite evidence remain monitored.","monitor":{"type":"cron","target":"portfolio-super-admin-alert-delivery","cadence":"2 minutes plus daily/weekly audit jobs","expected":"Render cron succeeds; alerts remain source-safe and auditable","owner":"security"},"sourceRefs":["scripts/deliver-super-admin-alerts.ts","scripts/detect-super-admin-anomalies.ts","scripts/audit-checksum.ts","scripts/audit-export.ts","render.yaml"]},{"id":"error-tracking","name":"Error tracking","summary":"GlitchTip receives unexpected server failures while remaining admin-access gated.","state":"operational","userImpact":"Unexpected errors are captured for triage without exposing the error console publicly.","monitor":{"type":"http","target":"https://errors.portfolio.wrxstack.com","cadence":"5 minutes","expected":"HTTP 403 for public clients, allowed only from configured admin sources","owner":"security"},"sourceRefs":["caddy/Caddyfile","lib/observability/glitchtip.ts","render.yaml"]},{"id":"status-page","name":"Status page","summary":"The public status page renders live dependency probes and component health from inside the platform.","state":"operational","userImpact":"Users can see real-time component status, response times, and incident phases.","monitor":{"type":"http","target":"/api/status/live","cadence":"Polled every 20 seconds by the page","expected":"HTTP 200 JSON snapshot with an overall state and per-component health","owner":"ops"},"sourceRefs":["app/status/page.tsx","lib/status/live.ts","app/api/status/live/route.ts"]}],"incidentStates":[{"id":"investigating","label":"Investigating","responseTarget":"within 5 minutes for SEV-1","publicCopy":"We are investigating an issue affecting wrxstack. We will share the next update as soon as the affected component is confirmed.","internalAction":"Assign incident owner, capture request IDs, check Render, GlitchTip, Uptime Kuma, health routes, and recent deploys."},{"id":"identified","label":"Identified","responseTarget":"within 15 minutes for SEV-1","publicCopy":"We have identified the affected component and are applying a fix or rollback. The next update will include verification status.","internalAction":"Start rollback or mitigation, run focused health checks, and keep customer-facing copy source-safe."},{"id":"monitoring","label":"Monitoring","responseTarget":"after mitigation is deployed","publicCopy":"A mitigation is in place and we are monitoring recovery before marking the incident resolved.","internalAction":"Run health, smoke, API, and affected focused gates before resolving."},{"id":"resolved","label":"Resolved","responseTarget":"after verification passes","publicCopy":"The issue is resolved. We will publish follow-up notes if customer action is required.","internalAction":"Close the incident, file the postmortem, assign action items, and archive source-safe evidence."}]}}