Operations
Navigation IA
Generated
This page is generated from qa/operations/specs/navigation-ia.md — the source of truth. Edit the spec, not this page.
Last run: not yet recorded (run the replay suite to populate status).
Overview
The cockpit’s information architecture is a persistent navigation shell: a left rail on every operator surface (brand, command-palette button, global nav with a pending-review count, per-ruleset list, theme toggle + identity), a topbar (breadcrumb + search), and — inside a ruleset — the five workspace tabs (Rules · Sources · Review · Publish · Feedback). The acceptance bar is that an operator can reach every relevant surface without typing a URL. This spec exercises that reachability.
Preconditions
- Signed in as the seeded operator (see OPS-AUTH-GATING scenario 2).
- At least one ruleset exists (created via OPS-WORLDS-CRUD or seeded).
Scenarios
1. The left rail is present on every surface
- From the workbench home, confirm the rail
- Navigate to the rulesets list, then into a ruleset, then to the review queue
- Expected: On each surface the rail shows the brand, the “Workbench”, “Rulesets”, and “Review queue” destinations, a search/jump (command palette) button, and a sign-out control; the topbar shows a breadcrumb and a search affordance.
2. Reach the rulesets list from the rail
- From any surface, activate the “Rulesets” rail destination
- Expected: Rulesets list renders.
3. Reach the review queue from the rail
- From any surface, activate the “Review queue” rail destination
- Expected: The candidate review queue renders.
4. The workspace tabs appear inside a ruleset
- Open a ruleset’s workspace (its Rules hub)
- Expected: The five workspace tabs show — Rules, Sources, Review, Publish, Feedback; the topbar breadcrumb reads “Rulesets › {ruleset}” with the ruleset’s masked handle; the ruleset appears in the rail’s per-ruleset list.
5. Move between workspace surfaces via the tabs
- From the Rules hub, follow each workspace tab in turn (Sources, Review, Publish, Feedback)
- Expected: Each tab navigates to its surface and the tabs remain present (the Review tab keeps the ruleset context via the
world_idsearch param).
6. The active workspace tab is marked
- On a ruleset’s Sources surface
- Expected: The “Sources” tab is marked current; the other tabs are not.
7. Breadcrumb returns to the rulesets list
- From inside a ruleset, activate the “Rulesets” breadcrumb link in the topbar
- Expected: Rulesets list renders.
8. The Workbench home orients to the next action
- Open the Workbench home (the rail’s “Workbench” destination, or
/) - Expected: The stat strip shows four tiles — active rulesets, waiting-for-review, flagged, and decisions served. The decisions-served tile carries the standing claim that decisions are 100% deterministic with 0 LLM in path, and shows the served-decision count from the real /decide volume (an explicit ”—” only when none have been served). The seeded ruleset appears in the Workbench’s ruleset list with its lifecycle state shown as a four-state pill (shape + label, not color alone) and its masked handle; following the list row opens that ruleset. A recent-activity region is present.
9. Open the dedicated Assistant page from the topbar
- Inside a ruleset, activate the topbar “Assistant” button
- Expected: The dedicated Assistant page opens at
/worlds/{id}/assistant, scoped to the current ruleset: the conversation is centered in the page content with the chat composer present, and the proposed-rules list is in a right rail.
9b. Reach the Assistant page from the ⌘K command palette
- Inside a ruleset, open the command palette and select the “Open the Assistant” action
- Expected: The palette navigates to the ruleset’s Assistant page and closes.
- (The ⌘K / Ctrl-K keyboard shortcut to open the palette is verified at the component level in
CommandPalette.dom.test.tsx; headless Chromium intercepts Meta/Ctrl+K as a browser shortcut, so it is not driven through the browser in this e2e. ⌘K is the single command-palette shortcut — the prior ⌘J dock summon was dropped.)
10. Open the command palette and jump
- From any surface, activate the rail’s “Search or jump to…” button (or the topbar search)
- Type a destination name and select a match
- Expected: The command palette opens with a query input; typing filters the list; selecting a navigation item routes to that surface and closes the palette; Escape closes it without navigating.
10b. The command palette carries the Assistant action + ruleset jumps
- Inside a ruleset, open the command palette (rail “Search or jump to…” button) and inspect its items
- Expected: The palette lists the “Open the Assistant” action item (which navigates to the Assistant page) and the current ruleset’s workspace jumps (Rules, Sources, Review, Publish, Feedback); the list filters to the matching items as a query is typed, and firing a ruleset jump routes to that surface and closes the palette.
- (The ⌘K / Ctrl-K keyboard shortcut to open the palette is verified at the component level in
CommandPalette.dom.test.tsx; headless Chromium intercepts Meta/Ctrl+K as a browser shortcut, so it is not driven through the browser in this e2e.)
Test Data
| Label | Value | Notes |
|---|---|---|
| Existing ruleset | (any active ruleset id) | Reuse a created/seeded ruleset |