Source: qdash /teams — c67 states & scale, 2026-08-14
The v4 composition, unchanged — shown in the states v4 didn't draw. First-run (mapping is the onboarding), all-clear (the resting face), attention at Meridian's 14 people with the expand row finally designed, and attention at 214 people where search, collapsed chips, and the workspace escalation earn their keep. Two corrections ride along: a verdict line that says what the numbers mean, and a tightened color grammar — amber is attribution debt, and nothing else. Fixtures mirror the userRollups() shape so the ship rewrite is transcription.
First run — mapping is the onboarding
Fresh install, day two: telemetry has seen 8 identities, no teams exist, nothing is mapped. The Fleet Overview checklist ("Attribute users to teams") lands here. The mapping workspace opens expanded and teams are created in the act of assigning — there is no separate "create a team" ceremony.
Teams
All clear — the resting face
Everyone mapped, nothing open. Risk ranking is meaningless when every story is "ok" — the roster falls back to spend order and earns its keep as the attribution ledger. Every conditional disappears: no band, no posture strip, no amber anywhere.
| Person | Team | Identity | Activity | Spend · 30d |
|---|---|---|---|---|
| prpriya | Payments | org ✓ | 3 agents · 12m ago | $169 |
| mamarcus | Platform | org ✓ | 3 agents · 48m ago | $121 |
| dadana | Data | org ✓ | 3 agents · 1h ago | $112 |
| + 11 more — show → | $682 | |||
Attention · 14 people — v4, corrected
The v4 composition with the two corrections applied — verdict line on top, credential gist gone neutral — and felix's row expanded: the level-1 expand designed at last. Agent rows carry the top_context chips the API already sends; level 2 stays AgentExpandDetail unchanged.
| Person | Team | Risk story | Identity | Activity | Spend · 30d |
|---|---|---|---|---|---|
| fefelix@duck.com | Data | 1 Critical — undecided egress to metrics.coderelay.io · Sun | consumer key | 2 agents · 31m ago | $70 |
claude-code 1.19felix-mbp~/payments-api~/scratch2.1M41 sessionsCritical31m codex 0.34felix-mbp~/payments-api860k12 sessionsStandard2d context chips = top working directories (top_context) · "detail →" opens AgentExpandDetail (?from=teams) — level 2 unchanged | |||||
| sosofia | Platform | 1 Elevated — secrets.yaml read · Fri · unassigned | org ✓ | 2 agents · 2h ago | $98 |
| prpriya | Payments | ok | org ✓ | 3 agents · 12m ago | $1692.4× median |
| mamarcus | Platform | ok | org ✓ | 3 agents · 48m ago | $121 |
| chchennew today | ok | consumer key | 1 agent · 19m ago | $4 | |
| + 9 more, all ok — show → | $489 | ||||
Attention · 214 people — the scale test
A real org: 214 identities, 26 teams, $18.4k/30d, a 61-identity mapping backlog. Search becomes primary, the band stops offering inline assignment and escalates to the workspace, and team chips collapse to the top five with the tail behind Cost Center — the same correction integrations made in its v9 "scalable catalog" pass.
| r.vance | Payments-EU | 2 Critical — undecided egress · plaintext secret in prompt | $402 |
| j.okaforalias | 1 Critical — sensitive repo read on unmanaged machine | $261 | |
| a.lindqvist | ML-Infra | 1 Elevated — customer-data export · Thu | $1,240 |
| s.moreau | Data-Platform | 1 Elevated — credentials.json read · Mon | $188 |
| k.tanaka | Frontend-Web | 1 Elevated — egress to unlisted domain · 2d | $95 |
| d.adeyemi | SRE | 1 Elevated — session on shared runner · 4h | $310 |
| + 208 more — search above, or sort by spend / tokens / last active ▾ | $14.1k | ||
Teams
Grammar, fixtures, and one new checkpoint item
Amber = attribution debt, nowhere else: alias marks, unassigned cells, the mapping band, the unassigned chip. Red stays findings/risk. Credential signal and spend outliers go neutral — their severity lives on /identity and Cost Center. One color, one fixable problem, one place to fix it.
Roster fixtures carry userRollups() keys (user, cost, active, crit/elev, isAlias, riskScore…) joined with the /api/teams map; team chips carry costs.by_team rows. The teams.vue rewrite transcribes this template against live data — display derivations (story, verb) become small pure functions next to userRollups.
Everything here says ·30d; Cost Center has 24h/7d/30d/All. Either /teams adopts ?period= or every handoff pins /cost?period=30d — otherwise the numbers visibly disagree one click after we made them agree.