Phase 1
Accounts

Source: c81 phase1-pages — Accounts (PRO-27); inventory-companies-v1 accounts & licensing panel + bob-wire c12 api-keys grammar (trust posture, lifecycle per seat), re-derived from the phase1 world

fixture state

5 accounts: 3 enterprise, 1 personal, 1 unknown — Dana's ChatGPT on a personal account.

user-dw72hfqb (dwhitfield.72@gmail.com), personal · team-7cc19f3e, no agreement · Hermes, no account

1
no account
Hermes — nothing referenced on any call
observation mode — this page reports; the block is the obvious next step and lives with the Org-Backed Identity policy →

Accounts

the id as seen on inference calls · ranked personal first, then unknown, then enterprise by users
Account id
Licensing
Users
Installs
Sessions · 7d
Tokens · 7d
Last seen
OpenAI
ChatGPT
user-dw72hfqb (dwhitfield.72@gmail.com)personal1 / 11 2780k20h ago
xAI
Grok
team-7cc19f3eunknown2 / 22 1420k23h ago
Anthropic
Claude Code · Claude Desktop
org-qpoint-2ab41enterprise12 / 15
1 seat, no telemetry
12 2830M2h ago
OpenAI
ChatGPT · Codex CLI
org-qpoint-8xk22enterprise8 / 109
+1 unattributed
1511M1h ago
Google
Gemini CLI
qpoint.io-ws-C03kf9enterprise3 / 33 4900k6h ago

5 accounts from 4 providers · 16 of 18 people hold a seat (Miguel Torres and Omar Haddad hold none). Users = people observed calling with the account over licensed seats where the agreement is on file, else over the people listed on it. Sessions and tokens are the 7-day sample on record; 4-week tokens are per provider, not per account, and live on Providers.

Composition notes

  • Question: whose accounts is our AI running on? Enterprise vs personal is the standout (c21 §2.6, §5 — "none of our IP is ever going to a personal ChatGPT account"); an unknown account id is signal on its own; a technology with no account at all is the third exception. Observability story, not an enforcement UI.
  • Verdict line from accountsVerdict(world) (derived/accounts.ts, a sharpened verdicts.accounts): the mix, then every exception class in rank order — personal (with the alongside story), unknown, no account; the sub line is the receipts. Red when a personal account exists, amber for the other two, leaf when all enterprise.
  • Framing band = four filter buttons (accounts resets · enterprise · personal · unknown) plus one linked claim (no account → the technology on Agent Inventory, since technologies are not rows here). Numbers cross-foot with the rows in the table, including under a person filter. One toned sub: personal, in red (the warn class). Unknown and no-account stay neutral — the verdict names them and their rows carry the amber; the cloud review overruled the first pass's three toned subs.
  • Ghost affordance: UxButton disabled "Block personal accounts" with the quiet link to /pages/policy-config-org-backed-identity. Disabled means no grape — the stroke is greyed so it does not read as clickable. It stays ghosted in the all-clear state ("nothing to block") — the control is not this page's job in either state.
  • Table is the raw UxTableList family so ?id= can pre-open a row. Rows from accountRollup(world, person?), ranked personal → unknown → enterprise by observed users. Licensing is the trust-badge column (c19 pattern 8) and the row's one attention device — enterprise is the normal state and reads grey, personal red, unknown amber; Users prints observed over seats (denominator printed; silent seats flagged in amber = attribution debt; the "seat count not on file" caveat lives in the expand, not on the row). Tokens 4w per account is not derivable (the trend is per model/company) — the column is the 7-day sample, labelled.
  • Lifecycle state (c19 pattern 14) is modelled per seat, where the signal lives: active · no sessions on record (Marcus's stale Claude Code — an observed surface, nothing in the 7-day sample) · installed, never run (Wes — no surface at all) · seat, no telemetry (Alexis) · no identity (the org-key Codex). All derived; nothing fabricated. A per-account active/idle word was dropped — every account is active, the column would be mute.
  • Expand = three UxTableListExpandSection cards: header (id, company / technology chips, badge, note, stats, and the story paragraph for the row's exception class — Dana's personal-alongside-enterprise, xAI's unknown id, Anthropic's silent seat), users on this account (person chips filter in place — users are filters here, not rows — with seat state and agent chips → Agent detail), recent sessions (→ Session detail).
  • Derivation: every number traces to accountPosture / accountRollup / sessionsForAccount / recentSessions. sessionsForAccount falls back to the install's account for sessions that carry none (Claude Code), so the Anthropic row counts its sessions honestly.
  • Open: "seats" for Google and xAI are not on file — the denominator falls back to the people listed on the account and says so. Whether a self-hosted registered model (the clear state's acct-nous-local) should read as "enterprise" licensing or a fourth posture is a world question, not a page one.

Qpoint Brand Style Guide