Pages
Findings Regroup v2
Source: c79 finding-lifecycle — findings-regroup thread, rebuild on the qdash components · 2026-08-25
The regrained revision rebuilt with the real /findings chassis — UxTableList group rows, ribbon + policy expansion, stat cards, filter pills. Same structure as the live page; what changes is the grain: Control → Finding → Occurrence. A finding is the remediable thing that owns the SLA clock and disposition; qdash's current per-signal rows were occurrences all along.
7 of 10 findings · 5 controls
now: 2026-08-17
Severity | Findings | Agents | Relevant Frameworks | |
|---|---|---|---|---|
| high | Unapproved tool use Action & Autonomy | 1 High 1 Med | ||
| high | Sensitive file access Data Protection | 1 High 1 Med | ||
| medium | Non-allowlisted egress Data Protection | 1 Med | ||
| medium | Sandbox required Action & Autonomy | 0 Open | ||
| medium | Agent registration Identity & Access | 1 Med | — | |
Composition notes
- Same chassis, new grain. Everything visual is quoted from qdash pages/findings.vue: UxTableList + Sorter/ColumnHeader header (with the working Policy-column search), 3px content rules, ExpandRow's purple-ruled expansion, SecurityPolicyRibbon states, ComplianceTag, AgentAvatar, _shadow-box stat cards, filter-pill bar, _darken-me open-row brightening. What changed is only the member row: a finding (scope + ×N unit + SLA clock + status), not a raw signal row.
- Terminology ruled: Control → Finding → Occurrence. "Condition" was thread scaffolding to avoid colliding with qdash's per-signal-row "findings" — but the clocked, dispositioned unit is what the SLA report, Mark M, and the F-#### ids already call a finding. The term moves up a grain; qdash's old rows get the honest name, occurrences. ("Issue" is the Wiz-style fallback if the port needs to disambiguate mid-migration.)
- The findings section is a real table — UxTableList with the same ColumnHeader + 3px-rule header treatment as the outer table (the inventory-agent-expand-v2 idiom), columns Severity · Finding · Occurrences · Last Seen · Agent · SLA · Adjudicate; the adjudication panel opens as a full-width colspan row beneath its finding. Both grains now wear the same table chrome — the control table contains a finding table, and the chrome itself restates the hierarchy.
- The expansion splits into two stacked sections (the inventory-agent-expand-v2 pattern, ExpandRow bare + two ExpandSection cards with the well tint between): section 1 is the policy — context, remediation, meta; section 2 is the findings — the work, with its own "Findings : N · open · past SLA" header line. Context and worklist stop sharing one card.
- "Manage" became "Adjudicate." qdash's Manage either opened the egress modal or jumped to the agent — a dead-end for every other control. The verb row (acknowledge / ignore / exception / escalate / enforce + evidence resolve) replaces it. Vocabulary ruled in two registers: adjudicate is the act (the term of art in clearance adjudication and vuln tooling — a human renders a recorded judgment), disposition is the stored outcome (the auditor's word), and resolve stays reserved for evidence — no human closes a finding by fiat. Filter tabs are Open / Closed / All: excepted findings stay under Open (still on the report's "tell me why" list); only resolved and ignored are honestly Closed.
- Findings is the summary table's only numeral; Total Occurrences left the table. Occurrences are a sub-item of a finding — evidence and magnitude — so a control-level sum (200 + 14 = 214 across different agents) is a semantically weak number that stole big-numeral attention from the strong one. The rollup now lives where it's context: the expansion's Findings header ("· ×214 tool calls") and the ×N on each finding row, always with its per-control unit. Accepted trade: the control-level noise sort is gone — if noisy-but-contained ever needs ranking, that's a control-detail question. The old "N violations" sub-line stays gone: every count lives in exactly one place.
- Same rule, different agents = different findings: the approval group carries both Claude Code · sofia (×200, reclassified high) and Codex · ravi (×14, medium) — separate clocks, separate dispositions, both avatars on the group row. Scope choice stays per-rule: a fleet-level remediation (like qdash's egress) would legitimately collapse agents into one finding.
- The fourth stat card is past SLA (qdash's info card had no members) — severity answers "how bad", the fourth card answers "how late."
- Meta row gains "Nearest SLA" — the group's most urgent due date, in error ink when breached. First/Last Seen stay.
- Interactive as v1: simulated clock (+7d/+30d), dispositions append events, "simulate: new occurrence" on a resolved finding re-opens it past SLA. Structure siblings: v1 (house treatment) · state machine · findings → SLA.