Repository navigation
feat(web): show analysts no control the API refuses them - #2552
Merged
Merged
Maple Review Bot / Maple / review
succeeded
Nov 13, 2026 in 3m 30s
Confidence 10/10 · No issues found
🟢 Confidence 10/10 · safe to merge. All 59 files read; gates match the domain permission table and every page that reads grants fetches them, only the brief pre-session window differs from before.
no findings · tests covered · risk medium
Hides the dashboard's write controls wherever the viewer's grants lack the matching permission: errors list and issue, incident and anomaly pages, status page editor, investigations list. The gates read the same domain permission table the API enforces, and the new scene tests pin both the analyst and member views.
- Errors list and issue drop every
error_issues:triagecontrol, withx/s/pinert. - Incident and anomaly pages gate acknowledge, resolve, link and investigate on
incidents:respondandinvestigations:run. - Status page editor hides post, update, resolve and delete behind
status_page_incidents:post. - The policy table gains five member-level permissions the pages now read.
Production impact
Production traffic of the changed files (last 7 days)
| File | Calls/day | Busiest operations |
|---|---|---|
apps/web/src/page/errors/hub/command.ts |
20 | FetchErrorsSummary 20/day, 0.0% err |
What was checked
- Each page that reads grants also fetches them (
FetchHubSession,FetchIssueSession,FetchAnomalySession), so members keep their controls. - The new keys match
packages/domain/src/policy/permissions.ts:17-21, including thePolicy.hasspellings inkit/session-grants.ts:39. canTriageis in the memo row's dependency list, so rows re-render when grants answer late (errors/hub/view-list.ts:118).
ebf5352 · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading