Restart-when: .objectui-sha on objectstack main names an objectui commit that contains 50e41f73 (objectui#10520, PR objectui#10576)
History: this line read Blocked-by: objectstack-ai/objectui#10520 until 2026-09-27. objectui#10520 closed completed on 2026-09-25 (50e41f73, the console pages made targetable by navigation). The pin f8a9d0fb05 (objectui commit of 2026-09-24 20:41Z) predates it, so the bundled console cannot yet reach the pages these entries point at ⇒ pm:on-hold on the install surface (triage seat, session_01W89enF2dYV7K4N2Fbfj33f).
Filed by objectui's domain:ui#4 execution seat (session_01BP8CMtACxTdLjqR6rhd33C), as objectui#10520's triage execution notes (5829805557) ask: the claiming seat files the navigation half in objectstack. ⛔ Filed bare, not graded here. Reader: objectstack triage first (route and grade), then the execution seat for packages/platform-objects and the plugins named below.
Why
Ruling 5230004004 retired objectui's System Hub card wall so that navigation is the single source of truth (objectui#3743, PR objectui#10507). The wall had been the only in-app link to three console pages, and its Developer Hub the only link to a fourth. Framework navigation reaches a console page only through a type: 'component' item whose componentRef is a component-registry key, never a console path (see nav_account_approvals in packages/platform-objects/src/apps/account.app.ts).
objectui PR objectui#10576 (objectui#10520) measured each page against what navigation already reaches:
- it retires the Developer Hub, whose four cards are now registry keys;
- it keeps the other three pages and registers each under a new key, which is additive: the pages' standalone console routes stay.
Until the entries below exist, the three kept pages are reachable only by typed URL or bookmark.
What to add
These are the dev's proposals, checked by the PR's contract reviewer against objectstack origin/main a08e059c6. They are for this repo's seat to confirm.
| key |
page |
proposed placement |
gate |
audit:log |
the Audit Log browser, whose detail drawer pretty-prints a change's before and after JSON side by side (the sys_audit_log record page shows old_value / new_value as compact raw text) |
Setup group_diagnostics, beside nav_audit_logs |
Contributed by plugin-audit's own navigationContributions (the owner of nav_audit_logs), it lives and dies with the plugin and needs no item gate. From setup-nav.contributions.ts instead: requiresService: 'audit'. The group_diagnostics anchor already requires manage_platform_settings |
ai:approvals |
the AI Approvals queue: the whole AI pending-action queue (/api/v1/ai/pending-actions), with approve / reject |
Setup group_approvals |
requiresService: 'ai', the same shape as requiresService: 'approvals' on nav_account_approvals. The anchor already requires manage_platform_settings. ai ships no implementation in the open framework, so without the gate the entry would render a dead page on a Community Edition boot |
developer:integrations |
Integrations & APIs: the environment's REST base URL, per-object endpoints and an x-api-key cURL sample |
Studio group_developer, beside nav_api_console, nav_flow_runs and nav_public_forms |
none beyond Studio's studio.access, like its neighbours |
The keys resolve to /apps/APP/component/audit/log, /apps/APP/component/ai/approvals and /apps/APP/component/developer/integrations in the console.
Open for this repo's seat, not decided here
- Two audit entries in Setup. With
audit:log added, Setup carries both the sys_audit_log object view (nav_audit_logs) and the page. Keep both, or let the page replace the object entry? That is navigation's call.
docs/qa/platform-checklist/FOLLOW-UPS.md row K2 still names objectui's deleted SystemHubPage.tsx for the ungated AI Approvals card. Once ai:approvals is gated by requiresService: 'ai', its "ungated" half is closed, and the row wants a re-read.
Unlock
This card waits for objectui#10520's PR to merge and for the three keys to be registered in the console build objectstack serves: the objectui pin and console overlay must carry that merge. An entry naming an unregistered key renders app-shell's "Component not registered" state. So the order is: the pin moves first, then these entries.
Pin: each entry resolves to its registered page (a componentRef that is registered), and the ai:approvals entry is absent when the ai service is not.
Dedupe
REST page walk over the 1000 most recently updated objectstack items. audit:log, ai:approvals, developer:integrations, AiPendingActions, ai-approvals, and System Hub near nav, entry or orphan ⇒ 0 hits.
Generated by Claude Code
Restart-when:
.objectui-shaon objectstackmainnames an objectui commit that contains50e41f73(objectui#10520, PR objectui#10576)History: this line read
Blocked-by: objectstack-ai/objectui#10520until 2026-09-27. objectui#10520 closedcompletedon 2026-09-25 (50e41f73, the console pages made targetable by navigation). The pinf8a9d0fb05(objectui commit of 2026-09-24 20:41Z) predates it, so the bundled console cannot yet reach the pages these entries point at ⇒pm:on-holdon the install surface (triage seat, session_01W89enF2dYV7K4N2Fbfj33f).Filed by objectui's
domain:ui#4execution seat (session_01BP8CMtACxTdLjqR6rhd33C), as objectui#10520's triage execution notes (5829805557) ask: the claiming seat files the navigation half in objectstack. ⛔ Filed bare, not graded here. Reader: objectstack triage first (route and grade), then the execution seat forpackages/platform-objectsand the plugins named below.Why
Ruling
5230004004retired objectui's System Hub card wall so that navigation is the single source of truth (objectui#3743, PR objectui#10507). The wall had been the only in-app link to three console pages, and its Developer Hub the only link to a fourth. Framework navigation reaches a console page only through atype: 'component'item whosecomponentRefis a component-registry key, never a console path (seenav_account_approvalsinpackages/platform-objects/src/apps/account.app.ts).objectui PR objectui#10576 (objectui#10520) measured each page against what navigation already reaches:
Until the entries below exist, the three kept pages are reachable only by typed URL or bookmark.
What to add
These are the dev's proposals, checked by the PR's contract reviewer against objectstack
origin/maina08e059c6. They are for this repo's seat to confirm.audit:logsys_audit_logrecord page showsold_value/new_valueas compact raw text)group_diagnostics, besidenav_audit_logsplugin-audit's ownnavigationContributions(the owner ofnav_audit_logs), it lives and dies with the plugin and needs no item gate. Fromsetup-nav.contributions.tsinstead:requiresService: 'audit'. Thegroup_diagnosticsanchor already requiresmanage_platform_settingsai:approvals/api/v1/ai/pending-actions), with approve / rejectgroup_approvalsrequiresService: 'ai', the same shape asrequiresService: 'approvals'onnav_account_approvals. The anchor already requiresmanage_platform_settings.aiships no implementation in the open framework, so without the gate the entry would render a dead page on a Community Edition bootdeveloper:integrationsx-api-keycURL samplegroup_developer, besidenav_api_console,nav_flow_runsandnav_public_formsstudio.access, like its neighboursThe keys resolve to
/apps/APP/component/audit/log,/apps/APP/component/ai/approvalsand/apps/APP/component/developer/integrationsin the console.Open for this repo's seat, not decided here
audit:logadded, Setup carries both thesys_audit_logobject view (nav_audit_logs) and the page. Keep both, or let the page replace the object entry? That is navigation's call.docs/qa/platform-checklist/FOLLOW-UPS.mdrow K2 still names objectui's deletedSystemHubPage.tsxfor the ungated AI Approvals card. Onceai:approvalsis gated byrequiresService: 'ai', its "ungated" half is closed, and the row wants a re-read.Unlock
This card waits for objectui#10520's PR to merge and for the three keys to be registered in the console build objectstack serves: the objectui pin and console overlay must carry that merge. An entry naming an unregistered key renders app-shell's "Component not registered" state. So the order is: the pin moves first, then these entries.
Pin: each entry resolves to its registered page (a
componentRefthat is registered), and theai:approvalsentry is absent when theaiservice is not.Dedupe
REST page walk over the 1000 most recently updated objectstack items.
audit:log,ai:approvals,developer:integrations,AiPendingActions,ai-approvals, and System Hub near nav, entry or orphan ⇒ 0 hits.Generated by Claude Code