Skip to content
GitHub
Customer

Portfolio

Generated

This page is generated from qa/customer/specs/portfolio.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 All-workspaces portfolio is the customer’s landing at / when no domain is selected (gate semantics: memberships-without-a-selection land here, never forbidden). It is the cross-workspace home: aggregate metrics across every member domain (decisions made, domains live, “need a look” = held + blocked), a card per domain (name, live version, decision count, its own four-state outcome bar, and an attention badge with an Enter affordance), and a unified “Needs your attention” list spanning all domains. Entering a domain re-scopes the session and reveals the four section tabs; an attention item jumps to that decision’s deep-dive in its domain. This spec verifies the landing’s aggregate read, the per-domain cards, and the cross-domain attention queue. It reads the org-portfolio endpoint (/646) — no per-domain selection required.

Preconditions

  • Signed in as the seeded QA customer (see CUST-AUTH-GATING scenario 2).
  • The customer’s domain is bound to a deployed world model version (seeded; produced by the operator journey + seed_customer_fixture), so at least one member workspace reports a live version and a decision count.

Scenarios

1. The portfolio landing renders its aggregate read

  • After sign-in, stay on /
  • Expected: The portfolio landing renders the aggregate metrics tiles (Decisions made, Domains live, Need a look) — not a blank page or a bare selector.

2. A card per member workspace

  • On the portfolio landing
  • Expected: The workspace grid renders at least one workspace card carrying the domain name and, for a live domain, its live version and decision count.

3. The cross-workspace attention section renders

  • On the portfolio landing
  • Expected: The “Needs your attention” section renders — either a list of held/blocked decisions spanning domains, or an explicit “nothing needs a look” empty state.

4. Entering a domain from a card reveals the section tabs

  • Click the first workspace card’s Enter affordance
  • Expected: The session re-scopes into that domain and the section tabs (Overview · Decisions · Rules · Trust) become visible.

5. No internal identifiers leak into the portfolio markup

  • On the portfolio landing
  • Expected: No raw UUID-shaped internal id (domain id, decision id) appears as visible text in the portfolio surface — identifiers are masked per the customer convention.
  • On the portfolio landing
  • Expected: The non-dismissible alpha-preview footer is present.

Test Data

LabelValueNotes
Deployed world(bound via seed_customer_fixture)Customer domain → deployed version; drives a live card + decision count