Studio · mockup · row 11h · Draft

System health

What broke, what ran, what expires.

System health is its own page in the sidebar, Owner and Admin only, with a count badge while anything is Critical. Needs attention lists failures with their severity, fix note and Claude diagnosis; System activity pins each scheduled job's last run above one filterable feed; then expiry dates, Workers spend and the last backup. No client's personal data anywhere — IDs and short labels, and the session link.

MapSystem health (own page, badge, Needs attention, System activity with each job's last run pinned, severity, Claude diagnosis, expiry dates, Workers spend)
A2 specmodule 5 items 5, 6, 8–12; Flows 5.4 (count and time update, no new email), 5.5 (Clear), 5.9 (can't load → “?”)
GlossaryCritical, Warning, Claude diagnosis
Usesadmin-shell.html P1, P4; §6 status label, table, select, alert, empty state; §8 email layout for the Critical email
Decided — Earl, 12 Oct 2026
  1. Severity is a status label — Critical and Warning in --n700, Info in --n400; the word carries it. No color.
  2. Each line's fix is an action link (Reconnect Google, Resend from the session…), not a button: a page of several failures would otherwise break one button per block.
  3. The Claude diagnosis sits under its line behind a thin --n200 rule, always open. Alternative: collapsed behind “Show diagnosis”.

System health

two Critical, two Warning

System health

Last backup Mon 12 Oct 2026 03:00 · ok
Needs attention
CriticalPayment recorded by the cross-check
Clear

Mon 12 Oct 2026 11:00 · Aisha 2026/11

Stripe cs_test_… RM [amount] had no record; recorded on EK-INV-261012-001 through the webhook's path. Check the webhook endpoint in Stripe. Open in Stripe

CriticalEmail to a client bounced
Clear

Mon 12 Oct 2026 09:14 · 3 times since · [Session name]

Check the address on the contact card, then resend. Resend from the session

Claude diagnosis

Resend reports a hard bounce for the recipient domain. The address on the contact card likely has a typo; nothing in Studio is broken. Fix the address and resend from the session.

Start prompt · GitHub issue #41

WarningHourly job didn't run
Clear

Expected 10:00, last ran 08:00

Retrying. Becomes Critical after 24 hours (Rules). Start a builder session

WarningGoogle Calendar mirror failed
Clear

Sun 11 Oct 2026 22:10

Google refused the service account. Reconnect Google

System activity
JobLast runStatusTookNext
Approval mail11:55ok0.4s12:00
Hourly10:00Didn't run—11:00
Backup03:00ok41sTue 03:00
Holidays and Drive sizes06:00ok3sTue 06:00
Severity
All
Job
All
Session type
All
Date
Last 7 days
WhenWhatSession
11:55InfoApproval mail · 0 sent
11:00CriticalPayment recorded by the cross-checkAisha 2026/11
10:41InfoEmail sent · Booking confirmed[Session name]
09:14CriticalEmail bounced[Session name]
03:00InfoBackup · ok · 126 tables

Load more

Expiry dates
WhatExpiresFromRenewal note
Builder's Supabase tokenWed 6 Jan 2027Entered[note]Edit
Cloudflare API token[date]Read automatically
Google sign-in clientLast used todayRead automaticallyDeleted by Google after 6 months unused

Add a date

Workers spend · this month
Estimated overage

USD [n]

≈ RM [n]

Monthly limit

Not set

Set in Rules

Read

Mon 12 Oct 2026 06:00

Nothing needs attention

empty state

System health

Last backup Mon 12 Oct 2026 03:00 · ok
Needs attention

Nothing needs attention.

Couldn't load

5.9

System health

Couldn't load events

System health can't read its records right now. The badge shows “?” until it can.

Try again

Critical email

to every active Owner, once per failure
EKStudio

Critical

Email to a client bounced

[Session name] · Mon 12 Oct 2026 09:14

Claude diagnosis: Resend reports a hard bounce for the recipient domain …

Sent by Studio · internal

Fixed wording in code. No client details: the session link leads to them. The “EK” mark and the foot are session-pieces.html → Studio marks.