QA-source: #20674 · studio-authoring.packaged-display-class-direct-edit · c3
What happens
ADR-0126 Regime O promises that packaged views and dashboards are "yours to edit directly". For the built-in System Overview dashboard (system_overview) the edit is accepted and published, the layered read reports it as effective, but nothing that serves or renders the dashboard ever shows it.
Measured on main at 6bff748b (showcase, objectstack dev), objectui console at the pinned dd3f7e1be356.
Reproduction
- Sign in as the seeded admin; open
/_console/apps/com.objectstack.setup/metadata/dashboard/system_overview (it opens with a "writable" badge, no installed-package banner).
- Select the "Total Users" widget and change its title to "Total Users (edited)"; Publish.
- Network:
PUT /api/v1/meta/dashboard/system_overview?mode=draft → 200 "Saved customization overlay (org=…)"; POST /api/v1/meta/dashboard/system_overview/publish → 200 "Published draft".
GET /api/v1/meta/dashboard/system_overview?layers=true → overlay and effective both carry the new title; overlayScope: "org".
GET /api/v1/meta/dashboard/system_overview and GET /api/v1/meta/dashboard → the widget title is still "Total Users" — for the admin and for a member, with a cache-busting query parameter, after waiting. Setup → System Overview renders "Total Users" on fresh loads.
- Control, same boot: the identical PUT + publish on the showcase-packaged
showcase_ops_dashboard → the plain read serves the edited title. So the overlay path works for a showcase dashboard and fails for the built-in.
- Clean-up: "Reset overlay" (
DELETE /api/v1/meta/dashboard/system_overview → reset: true).
Observations for the fix
- The served
_packageId of system_overview is com.objectstack.plugin-auth, while the dashboard is declared in packages/platform-objects/src/apps/dashboards/system_overview.dashboard.ts — the plain read may resolve the item through a different registration than the one the overlay was keyed against.
- The plain read bypasses the meta cache for dashboards (
isDashboardType in packages/rest/src/rest-server.ts) and runs the ADR-0057 D10 widget gate (packages/rest/src/meta-item-read-gate.ts), so a stale cache is unlikely to explain it.
- Not re-tested across a restart.
Expected
After publish, the plain item and list reads and the rendered board serve the overlay for the built-in dashboard as they do for a package-shipped one; or the designer refuses the edit instead of reporting a publish that never takes effect.
Full evidence chain: #20674 (F-6).
Generated by Claude Code
QA-source: #20674 · studio-authoring.packaged-display-class-direct-edit · c3
What happens
ADR-0126 Regime O promises that packaged views and dashboards are "yours to edit directly". For the built-in System Overview dashboard (
system_overview) the edit is accepted and published, the layered read reports it as effective, but nothing that serves or renders the dashboard ever shows it.Measured on
mainat6bff748b(showcase,objectstack dev), objectui console at the pinneddd3f7e1be356.Reproduction
/_console/apps/com.objectstack.setup/metadata/dashboard/system_overview(it opens with a "writable" badge, no installed-package banner).PUT /api/v1/meta/dashboard/system_overview?mode=draft→ 200 "Saved customization overlay (org=…)";POST /api/v1/meta/dashboard/system_overview/publish→ 200 "Published draft".GET /api/v1/meta/dashboard/system_overview?layers=true→overlayandeffectiveboth carry the new title;overlayScope: "org".GET /api/v1/meta/dashboard/system_overviewandGET /api/v1/meta/dashboard→ the widget title is still "Total Users" — for the admin and for a member, with a cache-busting query parameter, after waiting. Setup → System Overview renders "Total Users" on fresh loads.showcase_ops_dashboard→ the plain read serves the edited title. So the overlay path works for a showcase dashboard and fails for the built-in.DELETE /api/v1/meta/dashboard/system_overview→reset: true).Observations for the fix
_packageIdofsystem_overviewiscom.objectstack.plugin-auth, while the dashboard is declared inpackages/platform-objects/src/apps/dashboards/system_overview.dashboard.ts— the plain read may resolve the item through a different registration than the one the overlay was keyed against.isDashboardTypeinpackages/rest/src/rest-server.ts) and runs the ADR-0057 D10 widget gate (packages/rest/src/meta-item-read-gate.ts), so a stale cache is unlikely to explain it.Expected
After publish, the plain item and list reads and the rendered board serve the overlay for the built-in dashboard as they do for a package-shipped one; or the designer refuses the edit instead of reporting a publish that never takes effect.
Full evidence chain: #20674 (F-6).
Generated by Claude Code