Skip to content
GitHub
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_id search 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

LabelValueNotes
Existing ruleset(any active ruleset id)Reuse a created/seeded ruleset