Mechanics coverage
1 app · 25 documented behaviours · 4cf1665
perch
3 areas · 1 manual-only, 8 untested
25 behaviours account for 90% of 42 shipped surfaces. 4 gaps remain. One wave is open at 10/17, with 3 failing.
Surfaces covered
38/42
Behaviours with a linked test
16/25
Wave verified
10/17
Surface coverage
| Kind | Surface | Claimed | Covered (claimed + ignored) | Ignored | Gaps |
|---|---|---|---|---|---|
route |
route | 10/12 | 0 | 2 | |
api-route |
API route | 4/5 | 0 | 1 | |
convex-function |
Convex function | 16/17 | 0 | 1 | |
cron |
cron | 3/3 | 0 | 0 | |
http-endpoint |
HTTP endpoint | 2/2 | 0 | 0 | |
worker |
background worker | 2/3 | 1 | 0 |
2 unclaimed routes
//login
1 unclaimed API route
/api/webhooks/stripe
1 unclaimed Convex function
monitors.exportCsv
Waves
| Wave | Status | Verified | Fail | Pending | |
|---|---|---|---|---|---|
2026-08-redesignDashboard redesign — behaviour parity failing: perch.monitors.list-monitors, perch.monitors.inspect-monitor, perch.status-page.customise-brandingblocked: perch.monitors.delete-monitor |
open | 10/17 | 3 | 3 |
Behaviours
| ID | Behaviour | Area | ACs | Tests |
|---|---|---|---|---|
perch.monitors.create-monitor |
Create a monitor for an endpoint p0 | Monitors | 4 | 1 |
perch.monitors.delete-monitor |
Delete a monitor and its history destructive | Monitors | 3 | 1 |
perch.monitors.edit-monitor |
Change a monitor's URL, interval or name | Monitors | 3 | 1 |
perch.monitors.inspect-monitor |
Inspect one monitor's history and uptime | Monitors | 3 | 1 |
perch.monitors.list-monitors |
See every monitor and its current state p0 | Monitors | 4 | 1 |
perch.monitors.pause-monitor |
Pause and resume a monitor | Monitors | 3 | 1 |
perch.monitors.probe-callback |
Accept results from an out-of-region probe | Monitors | 3 | none |
perch.monitors.prune-check-history |
Prune check results past the retention window destructive | Monitors | 3 | none |
perch.monitors.record-check-result |
Record the outcome of a probe p0 | Monitors | 4 | none |
perch.monitors.run-due-checks |
Run every check that has come due p0 | Monitors | 4 | none |
perch.incidents.acknowledge-incident |
Acknowledge an open incident p0 | Incidents | 3 | 1 |
perch.incidents.daily-digest |
Send a daily digest of yesterday | Incidents | 3 | none |
perch.incidents.inspect-incident |
Read one incident's timeline | Incidents | 3 | 1 |
perch.incidents.list-incidents |
See open and recent incidents p0 | Incidents | 3 | 1 |
perch.incidents.notify-on-incident |
Notify the configured channels when an incident opens p0 | Incidents | 3 | 1 |
perch.incidents.post-incident-update |
Post an update to an incident | Incidents | 3 | 1 |
perch.incidents.resolve-incident |
Resolve an incident by hand | Incidents | 3 | manual |
perch.status-page.configure-notifications |
Choose where alerts are delivered | Status page | 3 | none |
perch.status-page.confirm-subscription |
Confirm an email subscription | Status page | 3 | 1 |
perch.status-page.custom-domain |
Serve the status page from a customer domain draft | Status page | 3 | none |
perch.status-page.customise-branding |
Customise the status page's branding | Status page | 3 | 1 |
perch.status-page.rss-feed |
Follow a status page by RSS deprecated | Status page | 2 | none |
perch.status-page.subscribe-to-updates |
Subscribe by email to a status page | Status page | 3 | 1 |
perch.status-page.unsubscribe |
Unsubscribe from a status page destructive | Status page | 3 | 1 |
perch.status-page.view-public-status |
View a workspace's public status page p0 | Status page | 4 | 1 |