Repository navigation
Conversation
The policy table now names the changes a member can make and an observer cannot. The API refuses them all in one place; these names are for the dashboard, so a page can leave out controls that would only fail. On the dashboards list, a board and the templates gallery, a viewer without dashboards:edit gets no create, import, duplicate, tag, delete, edit mode, rename or version restore, and one without dashboards:share gets no Share or Embed chart. Opening a board with ?mode=edit shows them the read view. Reading stays whole: time range, variables, version history and JSON export.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
This comment has been minimized.
This comment has been minimized.
On the errors list and an issue, a viewer without error_issues:triage reads everything but gets no status or severity picker, claim, release, merge or unmerge, pull request attach or detach, comment box, row selection or bulk bar. The pickers become plain readouts, and the list's x, s and p shortcuts do nothing for them. The Get it fixed panel needs investigations:run: without it, an observer sees an investigation that already ran but is offered neither a new one nor the agent prompt, which tells an agent to claim the issue.
This comment has been minimized.
This comment has been minimized.
A viewer without incidents:respond gets no Acknowledge on an alert incident or an inbox row, and no Resolve, link or unlink on an anomaly. One without status_page_incidents:post gets no Post incident, Post update, Resolve, Edit details or Delete on a status page. One without investigations:run gets no investigate bar on the investigations list and no Investigate on an incident or anomaly. Controls that already need alerts:manage or status_pages:edit are unchanged. The labs take ?role=admin|member|observer.
Maple review🟢 Confidence 10/10 · safe to merge. Every page dispatches its grants read at init and gates both modes; each surface has member and observer scene tests. Gates the dashboards, errors, incident, anomaly, status page and investigation views on the new member-level permissions, so an observer gets read-only pages, and adds a
Still open from earlier reviews
|
Sixth layer of the Observer role, on top of #2550. The API already refuses an observer every change; this layer stops the dashboard from offering the ones that would only fail, on Dashboards, Errors, incidents and status pages.
What changed
dashboards:edit,dashboards:share,error_issues:triage,incidents:respond,investigations:run,status_page_incidents:post,recommendations:triage. The API enforces them in one place (the read-only gate), so these exist for pages to read.dashboards:edit: no Import or Create, no Duplicate, Edit tags or Delete in a row's menu, no "New dashboard" row. Browse templates and Export JSON stay.?mode=editshows the read view. Withoutdashboards:share: no "Share…" and no "Embed chart".error_issues:triage: no row selection or bulk bar, the status and severity pickers are plain readouts, the right-click menu has no status or claim entries, and thex,sandpshortcuts do nothing.investigations:run. Without it, an observer sees an investigation that already ran but is offered neither a new one nor the agent prompt.incidents:respond: no Acknowledge on an alert incident or an inbox row; no Resolve, Link issue or Unlink on an anomaly. Controls that already needalerts:manageare unchanged.status_page_incidents:post: no Post incident, Post update, Resolve, Edit details or Delete. Controls that already needstatus_pages:editare unchanged.investigations:run: no investigate bar on the list, and no Investigate on an incident or anomaly. A finished investigation still opens./lab/alerts,/lab/anomaly-alertsand/lab/status-pagestake?role=admin|member|observer./lab/dashboards?page=list|detail&role=member|observer,/lab/errors?role=and/lab/error-issue?role=render the pages for either viewer.Members, engineers and admins see what they saw before. In Clerk mode a page learns the viewer's grants a moment after it opens, so their write controls appear with that answer, as on the alerts pages.
Screenshots
Errors:
Incidents and status pages:
Verified
apps/web: the dashboards, errors, lab and shell tests pass (540 in the dashboards run; 1,444 across alerts, anomalies, investigations, status pages, errors and the lab). New scene tests pair an observer with a member on each page.packages/domain: policy tests, 16 passed.@maple/webtypecheck, the CI lint config on every changed file, the UI class pattern check and the UI kit baseline (unchanged).Known gaps
alerts:manage.alerts:manage. That predates this work.