Repository navigation
QA run · platform-core.shell-nav-personalization (1/1) · fb82f9b1 · 2026-10-16 · 0 PASS / 0 PARTIAL / 1 FAIL / 0 BLOCKED / 0 NOT-RUN #23998
Description
Run record for the re-run #23950 asks for, after its six stale clauses were re-pointed. Runner: an os-dev subagent dispatched by the domain:devx seat 2 PM (session session_016PVjjuVPte5XEJvaQx1E4t). Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md. Executed sequentially (no subagent tool in this runner).
Environment fingerprint
- framework:
fb82f9b180bcc6af04ce8d36153fd52d2eb6845c, the tip of branchclaude/issue-23950-checklist-stale-clausesat run time. Its product tree isorigin/main022c6e799; the branch addsdocs/qa/platform-checklist/areas/*.jsononly. Built withpnpm install --frozen-lockfile && pnpm build(75/75 tasks green). .objectui-sha:daeb77fc84dd824e74c95b87cdede85afdb248e7./_consolewas served frompackages/console/dist, built withvite buildfrom an objectui checkout at exactly that commit.os devmounted it, so its stamp matched the pin.mainhas since moved the pin tof8267df9(chore(objectui): move the console pin to f8267df93aba, past the spec deletion of checkPageComponentViewData #23973); see the clause 5 and clause 0 notes for what that changes.- boot:
OS_PORT=47314 objectstack dev --ui --seed-admin -p 47314 -d file:(run dir)/nav/data.dbfromexamples/app-showcase. - browser: playwright-core 1.63 on
/opt/pw-browsers/chromium, a fresh context per script restored from the state saved after a form sign-in, desktop viewport 1400x900, phone 390x844. - persona: the seeded admin (
admin@objectos.ai). - timestamps: 2026-10-16, 16:40Z to 16:47Z.
Scope
Selector platform-core.shell-nav-personalization resolves to 1 runnable item: platform-core.shell-nav-personalization at revision 3, P2, surface browser. The item text was read at branch head c4bf2ba4e. No pin is declared, so every clause was driven by hand.
Per-clause verdicts
| item | # | clause (short) | verdict | evidence |
|---|---|---|---|---|
| platform-core.shell-nav-personalization | 0 | icon mode still navigates; collapse persists | fail | collapse works: wrapper data-state collapsed, cookie sidebar_state=false, still collapsed after reload. In icon mode only two icons show. Capability Map's icon routes. The Page Authoring icon does NOT: the invisible Workspace group label covers its lower half. A ref-targeted click is refused by Playwright, which names the intercepting element (the data-sidebar="group-label" button, opacity 0). A click at the icon's centre lands on that button and leaves the URL unchanged. Reproduced on two fresh loads (rule below) |
| platform-core.shell-nav-personalization | 1 | pin/unpin persists | pass | the row menu's Add to favorites on Projects, Tasks and Accounts gives a Favorites section of [Projects, Tasks, Accounts], identical after reload; Remove from favorites on Accounts, then reload, gives [Tasks, Projects] |
| platform-core.shell-nav-personalization | 2 | pinned order: drag, keyboard, Escape, reload | pass | 0 grips or sortable elements at rest. Pointer drag of Accounts above Projects (12 intermediate moves; drop indicator seen) gives [Accounts, Projects, Tasks]. Keyboard on Tasks (Space, ArrowUp, Space) gives [Accounts, Tasks, Projects]. Space, ArrowUp, Escape on Projects leaves it unchanged. After reload the order equals the pre-reload order. Control: each pinned link carries cursor-grab and aria-describedby="nav-pinned" |
| platform-core.shell-nav-personalization | 3 | favorite star/unstar persists | pass | a showcase_account record's More actions, Add to favorites: Favorites shows Fabrikam, still there after reload; Remove from favorites, then reload: gone |
| platform-core.shell-nav-personalization | 4 | Recents rail survives reload | pass | after visiting Contacts, Invoices, the Delivery Operations dashboard and Accounts, then reloading, the opened Recent section lists Accounts, Delivery Operations, Invoices, Contacts, Fabrikam (top 5) |
| platform-core.shell-nav-personalization | 5 | header crumbs follow the route (re-pointed by #23950) | pass | after the app pill (Showcase) and its PREVIEW chip, at 1400px. Report …/report/showcase_hours_by_status: one crumb, Hours by Status (Summary), which is the report's metadata label and its page heading; no Reports type crumb. …/system/settings: System, Settings. A showcase_account record (Fabrikam): no separator and no crumb, while the page heading reads Fabrikam. 0 links after the chip on all three. Each reload reads identically |
| platform-core.shell-nav-personalization | 6 | authored menu not user-reorderable | pass | desktop with all groups expanded: 0 aria-roledescription="sortable"; of 49 menu links outside Favorites, 0 carry aria-describedby="nav-pinned" and 0 carry cursor-grab (control: the pinned links carry both); every level's order equals the app's authored order (by order, ties in array order); with objectui-nav-order-showcase_app planted with every level reversed and the page reloaded, the order is unchanged; phone 390px: 0 sortable, 0 describedby, 0 grab, and no Favorites section |
Reproduction rule: clause 0 fail
- Boot the stock showcase (any port), sign in at
/_console/loginas the seeded admin with a desktop viewport (1400x900), and open/_console/apps/com.example.showcase/page/showcase_capability_map. - Collapse the sidebar with the header's
Toggle sidebarbutton. The sidebar wrapper readsdata-state="collapsed"anddata-collapsible="icon". - Read the two visible icons with the sidebar's link selector. The Page Authoring link (
a[href$="/page/showcase_start_here"]) spans y 108 to 140. The Workspace group label (button[data-sidebar="group-label"], opacity 0, pointer-events auto) spans y 124 to 156: icon mode gives it a negative top margin, so it sits over the preceding item. document.elementFromPointat the Page Authoring link's centre returns the Workspace label button. Down the icon's vertical axis, 2 of 5 sampled points hit the link and 3 hit the label.- Click the Page Authoring icon at its centre. Expected: the route changes to
…/page/showcase_start_here. Actual: the URL stays on…/page/showcase_capability_map. A ref-targeted Playwrightclick()on the link is refused, because the group-label button intercepts pointer events. - Control: the Capability Map icon, which no label covers, routes on a centre click.
Mechanism: objectui packages/components/src/ui/sidebar.tsx SidebarGroupLabel takes group-data-[state=collapsed]:group-data-[collapsible=icon]:-mt-8 and …:opacity-0, with no pointer-events-none. The navigation renders a collapsible group's label as a button through asChild, so the transparent label stays clickable over the last item above it. The same class string is at the run's pin daeb77fc, at the new pin f8267df9, and at objectui main 9d857c998.
Automation self-check (RUNNER rule 2), against the item's traps:
- hydration-race: two fresh loads gave identical rectangles after a settle.
- shared-browser-tab: own port, DB and browser context.
- stale-console-bundle: the console was built at the pin, and the class is unchanged at the new pin and at objectui
main. - automation-input: the ref-targeted click was refused by the actionability check, which names the interceptor, and
elementFromPointagrees.
Derived item verdict
platform-core.shell-nav-personalization r3: fail (6 pass, 1 fail of 7 clauses). The fail is clause 0, a product defect in the console. It is not one of the six clauses #23950 re-points; clause 5, the one #23950 re-points, passes. The extraction (RUNNER extraction obligation) is handed to the dispatching seat. This runner files no card.
Clause 5 against the moved pin: objectui AppHeader.tsx at f8267df9 adds the product mark and a rule before the app pill (objectui#12605). It draws the same crumbs after the PREVIEW chip (extraSegments for report and system/*, none for an object route, plain text). Revision 3 cites both pins.
Harness note, not scored: these scripts restore a saved browser state per script. A context restored with a stale objectui-favorites localStorage cache wrote favorites back, and Accounts reappeared among the pins after clause 1 had unpinned it. That is this harness replaying an old cache. Clause 1 was scored in the sequence that did not replay one.
Timing: about 7 minutes of legs. The console bundle was already built; a cold vite build at the pin measured 1m44s.
Checklist-accuracy findings, if any, close out on the wave anchor #23878.
Activity
objectstack-fleet commentedon Oct 17, 2026
Close-out (
domain:devxseat 2): the one FAIL is clause 0, a product defect (the icon-mode sidebar label takes the icon's click), extracted below. The clause #23950 re-pointed (clause 5) PASSes and landed with #24000 (e18b23fac5).Extracted: objectstack-ai/objectui#12744 · platform-core.shell-nav-personalization · clause 0
Generated by Claude Code