Cycles by week
Week of Aug 24

2 started, 41 carried live.

Busiest record: c79 Finding Lifecycle (22 entries) · 18 carried cycles have gone quiet · layer v0.9.11 → v0.9.11

Started
2
Still open
59
Closed
0
Record entries
27
Commits
73
Captures
5
Releases · deploys
1
Control row expanded — policy header with severity box and deadlines over the findings worklist
c79Finding Lifecycle3 captures · 22 log entries — the week's busiest recordSee all 3 shots ↓

The c79 findings-regroup-v2 design live in qdash on real backend data

Commits

73 commits across 5 repos, on each repo's checked-out branch.

Cycles

Started 2

c80brotli-stream-termination

qproxy MITM truncates streamed brotli response bodies — client apps show Decompression error: BrotliDecompressionError

started Aug 27
c79Finding Lifecycle

Mock the finding-lifecycle state machine and the mechanics/UI of turning findings into SLA data — the design answer to c78's open resolution-workflow gap.

started Aug 2522 in the log

Still open 41

c78fleet-overview-reports

Design the four product reports (Compliance, SLA Insights, Inventory, Board) and the fleet overview landing page as a summary of them.

started Aug 202 wks · moved this week3 in the log
c68index-overview

Design the qdash landing page — what the user is greeted with on login, resolving the Fleet Overview / Agent Inventory overlap.

started Aug 143 wks · moved this week2 in the log
c77Session View

Session viewer / replay mode for qcontrol AI agent sessions — mocks-first on the design site

started Aug 202 wks · quiet 1
c8Agent PivotMarket Analyst

Reorient pipeline and app around AI-agent-security pivot: archive phase 1, use-case-centric extraction, multi-source feedback, architecture debt paydown.

started Aug 202 wks · quiet 1
c72Integrations Create & Manage

Create/configure modal for 11 connectors with per-integration custom UI and step-by-step operator guidance

started Aug 153 wks · quiet 2
c67Teams

Refine the qdash /teams design — composition from c61 concepts, mapping workspace as the pre-SCIM write path, slim spend overview, credentials relocated

started Aug 143 wks · quiet 2
c66cost-center

Add unit-of-measurement toggle to qdash /cost page — switch display between currency ($) and tokens

started Aug 143 wks · quiet 2
c65control-center-v2

Shift the control center from infinitely-configurable controls to a compliance-driven system of pre-defined Policies — research the framework↔policy connection, then mock the policy catalog and per-policy config pages

started Aug 123 wks · quiet 2
c64control-center-consolidation

Consolidate the overlapping Control Center / Policy & Enforcement / Compliance work — current-state evaluation, ranked consolidation plan, initial-ideas mock

started Aug 103 wks · quiet 2
c19AI Asset InventoryBob-Wire

Precedent research for an AI asset inventory page — how existing products present inventories of agents, MCP servers, files, models, and related AI assets

started Jul 315 wks · quiet 2
c12qcontrol-live-viewQflow

Live qflow visualization of qcontrol agent events — agents pulsing to event-type nodes, fed by qdash SSE, with a growing timeline scrubber

started Jul 295 wks · quiet 2
c18Post-Mortem MapBob-Wire

Post-mortem incident map — visualizing an incident that already occurred: the actors involved (user, agent, MCP servers, files, repos) and their state, on an incident page alongside traditional detail sections

started Jul 246 wks · quiet 2
c27mcp-server-fleetQmap

Deterministic synthetic MCP server fleet views for screenshot capture

started May 417 wks · quiet 2
c26flatland-viewQmap

Add a flatland view (topdown camera + pitched 3D models) for VOX/OBJ-backed actors

started Apr 2818 wks · quiet 2
c25ai-ecosystem-inventory-mapQmap

Build a qmap inventory/index view of the company-wide AI ecosystem using deterministic synthetic data first

started Apr 2119 wks · quiet 2
c23custom-obj-modelsQmap

Validate import, normalization, and rendering of custom .obj actor models in qmap

started Apr 1720 wks · quiet 2
c22runtime-session-mapQmap

Visualize a single qcontrol runtime session as a qmap entity-type topology

started Apr 1520 wks · quiet 2
c21ai-session-mapQmap

Visualize a single AI agent session as a qmap entity-type topology

started Apr 322 wks · quiet 2
c1Situation RoomBob-Wire

Situation Room wireframe — problem-space command center for data governance

started Mar 326 wks · quiet 2
c7avoma-notesMarket Analyst

Explore and integrate Avoma notes data into extraction pipeline and dashboard visualizations.

started Feb 25parked
c4refinementMarket Analyst

Refine how extracted data is displayed in the dashboard and improve extraction quality where gaps exist.

started Feb 24parked
c3oauthMarket Analyst

Add Google OAuth to restrict dashboard access to @qpoint.io team members.

started Feb 20parked
c69Operating System

Methods & tooling retro — evaluate how we work against the design methodology, restore order, modernize the skill/agent tooling, and make the philosophy load-bearing

started Aug 15parked
c62build-partner

Build-partner portal — research, ideation, and a plan for a page that makes partners insiders

started Aug 8parked
c55agent-market-definition

Align the qcontrol agent-monitoring dashboard to specific personas and find market alignment — hypothesis-first, validated against calls later.

started Jul 24parked

Closed 0

Nothing closed

Pages & components

What this week's captures picture — 1 page · 1 first captured this week. Each links to its evolution: every moment it was shot, across cycles.

Log

Key Changes entries dated inside the week, from each cycle's record — newest first within a cycle.

c79 Finding Lifecycle

Aug 27
  • Thread — the qdash port (2026-08-27): findings-regroup-v2 shipped into the live product — qcontrol's qdash /findings rewritten in place on feat/SLA-findings (qdash cycle c14.finding-lifecycle-port). Layer released as v0.9.11 to carry AgentPill, SecuritySeverityTag, and the grape/quiet ExpandSection registers; all five consumer lockfiles refreshed. The two-axis model derives from the backend's single workflow row (lib/findings-status.ts, id-and-label-tolerant); SLA is the Mark M rubric client-side (lib/findings-sla.ts) until the backend writes sla_due; the adjudication card became the first frontend consumer of /api/finding-decision / /api/finding-state (Ignore rides finding-state as a resolved + ignore sentinel — no registry id yet). Honest degradations, each wearing a ProjMark: Evidence = first/last seen only, Audit = latest state only (no occurrence event log server-side). Divergence accepted for now: the backend's block decisions Resolve, so enforce renders terminal — c79's clock-neutral enforcement is a recorded backend follow-up. Simulated clock, composition notes, and fixtures stayed here; port verified on real seed data (screenshots in public/cycles/c79/c79-qdash-port-*.png), 37 lib tests, published-layer build clean. Full plan: qcontrol-port-plan.md.
Aug 26
  • Thread — status-column bake-off (2026-08-26): /pages/findings-status-column-v1, registered — from Mark's ask for a clearly visible (possibly dropdown) status in the findings worklist. Four treatments of the same world, each with its own event-log clone: A static chip · B dropdown-everywhere (the honest failure on display — half the menu permanently grey, since adjudication values need reasons and resolved is the system's) · C hybrid (handling dropdown while open, chip when terminal — recommended) · C2 hybrid quiet-until-hover. All four share the slimmed pure-clock SLA column (11d/30d · due 09-04 / paused · exp / in 2d / —) so the status word lives in one column and the treatment is the only variable. Unacknowledged wears warning tone throughout. The axis rule decides selectability: clock-neutral handling verbs are one-click safe; adjudication stays behind the card. Verified: 4 live tables, isolated worlds, C's select acts, C2's quiet border transparent, zero console errors. Verdict (Mark, 2026-08-26): C — status as a dropdown. Graduated into findings-regroup-v2: 8-column inner table (Status between Agent and SLA — handling dropdown while open with click.stop so it doesn't toggle the expand row, terminal chip otherwise), SLA slimmed to pure clock (11d/30d · due 09-04 / paused · exp / in 2d / —). Verified in browser: row-level escalate via the dropdown without expanding the row.
Aug 26
  • Thread — StretchBox measurement bug (2026-08-26): Mark spotted the top expand row animating open ~an inch short, then snapping after a beat. Root cause found by instrumented measurement: UxStretchBox measures a cloneNode appended to document.body (absolute, off-screen), where the clone lays out at body width (1440px) instead of the well's real width (1310px) — text wraps differently, so the clone measured 405px vs the real 464px; the box animates to the short height (300ms) and sits clipped until the height:initial override lands (~1200ms) and snaps. Only the first row showed it because only the approval card's content is width-sensitive (wrapping remediation line + full meta cluster). Layer fix: when stretchWidth is false (width externally determined — the ExpandRow case), the clone is pinned to the live content width before measuring; width-stretching consumers unchanged. Verified: mid-animation height now exactly matches content (464/464), no snap.
Aug 26
  • Thread — topline bake-off (2026-08-26): /pages/findings-topline-v1, registered — from Mark's read that the severity 4-up misses the opportunity (his seeds: handling-state counts, clocks running low). Analysis ranked the topline's job as triage: unseen (unack + oldest age — the adjudication-lag signal's only home) · about-to-breach (early warning beats breach count, per c78's card audit) · already late · severity mix (context) · throughput + within-SLA % (report tie) · expiring exceptions · worst control. Eight live-derived treatments: extended cards · handling funnel · remediation runway (findings as ticks on a 45d axis — time as position) · two-axis grid · verdict + worst lines (c78 idiom) · Your move (three action cards each naming their top item; severity demoted to a footer line) · scoreboard (throughput debt + worst control) · compact strip. Provisional verdict: 6 (Your move) — every element an action with a name; 8 as the minimal alternative; 3's runway the idea worth stealing into any winner. Verified: 8 sections, 6 runway ticks, your-move names the oldest unack (2d · Codex · ravi), zero console errors. Mark's pick pending.
Aug 26
  • Thread — topline bake-off, iteration 2 (2026-08-26): /pages/findings-topline-v2 — Mark's critique of v1: anemic, wants meaning at a glance, punchy and clear. Iteration rule applied: every element is a claim — labels are sentences, top items are named, consequences stated ("returns to the queue Sep 15"), and zeros speak ("Nothing is past SLA" beats a mute 0). Six treatments (briefing lines · your-move-spoken cards · annotated runway with named tick list · claim cards · the paragraph · worded strip) + a today/+30d stress toggle — a topline must communicate on both kinds of day (stressed world crosses sofia's deadline and surfaces marcus's lapsed exception automatically). Within-SLA % dropped from the topline: at 1-judged it's a dishonest hero number; it belongs on the report. v1's explainer variants (funnel, grid) dropped — they taught the model without triaging the day. Provisional read: 2 (your-move-spoken); 1 if vertical space is cheap; 3's named runway list under either. Verified in both worlds, zero console errors.
Aug 26
  • Thread — AgentPill + finding-first column (2026-08-26): from Mark's design pair (inline and stacked pill mocks). New layer component agent/Pill.vue (AgentPill): pixel-pawn face in its own bordered cell + name / user in grape; stacked for the two-line layout; art via <img> per the pawn rule. Documented (registry + full demo). In findings-regroup-v2: the Finding column drops the redundant agent: Claude Code · sofia scope line — the finding title leads in the primary style, reason as the sub-line — and the Agent column's text chip becomes the AgentPill. Identity now lives in exactly one column, as a face. Verified: pill renders "Claude Code / sofia" with the pawn loaded, no scope prefixes remain, zero console errors.
Aug 26
  • Thread — policy header rework (2026-08-26, Mark's design): section 1 of the group expansion rebuilt: identity left (ribbon · 24px name · remediation as plain grey sub-text), Findings severity box (big toned numerals in a bordered cell strip, only non-zero severities render), and Upcoming Remediation Deadlines (soonest three open findings: bold day + month · "N days from now" toned by nearness — error ≤7d or overdue, warning ≤30d — · "view" linking to the finding's detail page). The old meta cluster (Policy: label, first/last seen, nearest-SLA, framework tag stack) removed — frameworks live on the collapsed row, recency on the finding rows. Verified calm (1 High 1 Med · 18/87 days out) and stressed (+30d flips to "days overdue" in error ink), zero console errors.
Aug 26
  • Thread — worklist polish sweep (2026-08-26): batch of Mark-directed refinements on findings-regroup-v2. AgentPill hardening: tighter padding + dot separator; then two real clipping bugs fixed in the layer — shrink-0 (overflow-hidden zeroes a flex item's automatic min-width) and w-max (inline-flex width:auto is shrink-to-fit, so starved table cells compressed the pill) — a chip never compresses. Column mechanics ruled: in table auto-layout, no-slack + inline pills + wrap-on-squeeze can't all hold; chose no-slack + inline via w-max flex-nowrap containers with the Policy column as the width:100% stretcher and 3-visible + "+N" caps on agents and frameworks (approval seeded with 5 frameworks to prove the cap). AgentPill adopted in the outer Agents column too (person when one finding, ×N when several). Findings column now the severity-box pattern at row scale (toned per-severity numerals, divider cells, past-SLA fragment only when present), placed right of Policy + Conditions after trying left; clean groups render a green 0 · Open — zeros follow the pattern. Deadline "view" opens the finding's row below via the ExpandRow open() ref pattern instead of navigating away. Adjudicate ↔ Close label flips CSS-driven off _open-row, like the chevron. Fonts: font-black was silently clamping to 700 (Google Fonts URL carried only 400–700); fixed, then Inter moved to its official home (rsms.me/inter/inter.css) — all weights + variable font; severity-box numerals font-black at both scales, Inter not mono. Every change browser-verified; gotchas saved to memory.
Aug 25
  • Stage 1 — fixtures (2026-08-25): app/data/lifecycle-fixtures.ts — the rulings as code. FindingEvent (append-only, 9 verbs), RubricTarget with days: number|null (Mark M's 14/30/90/soft), 19 findings as event logs (7 live c78 identities + 12 historical so quarters derive), pure deriveFinding (the state-machine fold: pause credit, mechanical expiry re-open, one due formula) and deriveWorld (open/breaches/excepted/ignored, withinSlaPct with documented denominator, event-derived found/resolved/excepted quarter rows, audit feed). Sanity-checked via tsx: 90% within-SLA (10 judged), F-0951 pause exemplar (79d paused → 16d clock, within 90), F-0918 late, +30d → F-1041 breaches and verdict drops to 82%, +60d → F-1022's lapsed exception mechanically re-opens. report-fixtures.ts untouched.
Aug 25
  • Stage 2 — anatomy (2026-08-25): /pages/findings-lifecycle-v1 + app/components/lifecycle/AuditTrail.vue (the persisted audit record rendered — verb-toned rows, reused by every later page), registered in the reports group. The contract page: state diagram (open + three terminals, return paths incl. mechanical expiry), 9-verb table with clock effects and seam markers, the one clock formula with six numbered rules, FindingEvent in a code block, and two worked examples computed live from deriveFinding() (F-1027 register case; F-0951 pause exemplar) — the on-page proof rulings and code agree. Smoke-checked 200, derived values (paused 79d / clock 16d / within SLA) confirmed in SSR output, clean log.
Aug 25
  • Stage 3 — disposition organ (2026-08-25): app/components/lifecycle/DispositionPanel.vue + /pages/finding-disposition-v1, registered. The panel owns no state machine — renders a DerivedFinding, emits act; the page appends and re-derives. Six scenarios on the house tab-picker (fresh / acknowledged / past-SLA / near-expiry / ignored / escalated), each with its own live event log and reset. Verb availability by status; ignore/reopen gate on reason, exception on reason + expiry (+30d default); escalate/enforce are one line + one stamped ref ("would create tracker:SEC-… — finding stays open here · stub"); resolve is the visually-apart green "simulate: fix detected" (evidence, not judgment). Smoke-checked 200 (needed the nuxt.config touch — new page files added under a running server, per the known gotcha).
Aug 25
  • Stage 4 — rubric config (2026-08-25): /pages/sla-rubric-config-v1, registered. Editable per-severity targets seeded with Mark M's real program; "hard target" checkbox makes advisory (days: null) a first-class value; three program presets (Mark M 14/30/90/adv, superseded c78 placeholder, the 48h-criticals program from the call) demonstrate that the same findings get three different judgments. Live consequence panel re-judges the open world as you type (deriveWorld takes the rubric as an argument — the page is the function). Clock policy rendered as fixed rulings with a link to the anatomy page — deliberately not knobs. New open thread recorded: rubric changes after a quarterly export rewrite submitted history → rubric versioning is a product need. Smoke-checked 200, default verdict (90% · 10 judged) in SSR output.
Aug 25
  • Stage 5 — centerpiece (2026-08-25): /pages/findings-to-sla-v1, registered — the c78 open-thread answer. Two columns: worklist (open nearest-due-first, accepted-risk, recently closed) with rows expanding into the shared DispositionPanel; SLA rail (within-SLA verdict numeral, open/breach/excepted counts, event-derived found/resolved/excepted quarter table, live audit feed). Reset + advance-clock chips (+1d/+7d/+30d); rubric fixed to Mark M's program (the knob lives on the config page). Verified headlessly with Playwright: escalate stamps tracker:SEC-1041 into the feed, exception pauses F-1041's clock, +60d drops the verdict 90%→82% and mechanically re-opens F-1022's lapsed exception with the queue line "re-entered queue mechanically", reset restores 90%, zero console/page errors. All four c79 pages smoke-checked 200 together.
Aug 25
  • Thread — findings-regroup (2026-08-25): revision of qdash /findings at condition grain, from Mark's 200-disallowed-tool-calls question (prompt/plan in findings-regroup-*.md). Additive occur verb in lifecycle-fixtures.ts (count/lastSeen fold; occur-after-terminal = mechanical reopen with recurred flag; c79 base world regression-checked unchanged at 90% · 10 judged). New findings-page-fixtures.ts: qdash control catalog subset with per-control occurrence nouns (the fix for qdash c5's hardcoded-units thread), 9 conditions as event logs including the ×200 case (199 generated tool-call occurs + reclassify medium→high on magnitude) and a resolved egress condition primed for recurrence. New /pages/findings-regroup-v1 (registry group security): control sections → condition rows (severity · scope · ×N unit + lastSeen · agents · SLA clock) → expanded DispositionPanel + evidence list + occur-free audit record + "simulate: new occurrence". Playwright-verified: exception moves stats 5→4 open / 1→2 excepted; simulated occurrence on the resolved condition re-opens it at 35d/30d — instantly past SLA (open 4→5, past target 0→1, verdict 100%→0%); reset restores. All six related pages (c79 four + regroup + report-sla) smoke-checked 200.
Aug 25
  • Thread — findings-regroup v2, qdash-chassis rebuild (2026-08-25): /pages/findings-regroup-v2, registered — the condition-grain revision rebuilt 1:1 on the real /findings components, all already in the layer: UxTableList + Sorter/ColumnHeader (working Policy-column search + group sorts), UxTableListExpandRow purple-ruled expansion, SecurityPolicyRibbon (hot/warm/tepid), ComplianceTag, AgentAvatar, _shadow-box stat cards, filter-pill bar, _darken-me open-row brightening. Grain changes quoted against the original: members are conditions (scope + ×N unit + SLA clock + status) not signal rows; "Manage" → "Disposition" (the c79 verb panel + evidence + audit inset); group sub-line "N conditions · N open · N past SLA" replaces "N violations"; qdash's empty info stat card becomes past SLA; expansion meta gains Nearest SLA. Same interactive world as v1 (shared fixtures, simulated clock). Playwright-verified through the real ExpandRow: expand → disposition → exception drops the high card 2→1, +60d puts 2 conditions past SLA, sorter works, reset restores, zero console errors. (Playwright gotcha logged: getByRole name-matches substrings by default — "Disposition" matched the "Dispositioned" filter pill; use exact: true.)
Aug 25
  • Thread — findings-regroup: Conditions column + two-agent case (2026-08-25): from Mark's "two unapproved tool uses by different agents" question. New fixture C-2010 (Codex · ravi, ×14 tool calls, own detect/clock) — same rule as C-2001, different agent = a second condition under one control; both avatars on the group row, separate clocks and dispositions in the expansion. v2 gains a sortable Conditions column (big-numeral, "N open · N past SLA" breakdown beneath, paired beside Total Occurrences — sorting by conditions ranks workload, by occurrences ranks noise); the old "N violations" sub-line removed so the count lives in one place (policy cell now shows the control category). Ruled in notes: scope choice stays per-rule — fleet-level remediation (qdash's egress) would legitimately collapse agents into one condition. Playwright-verified: approval row reads 2 / 214 tool calls with both avatars, Conditions sort puts it first, both members (×200 high, ×14 medium) expand with independent clocks; zero console errors.
Aug 25
  • Thread — findings-regroup: occurrences leave the summary; findings become a table (2026-08-25): Mark's hierarchy call — occurrences are a sub-item of a finding, so the Total Occurrences column left the summary table (a 200+14 sum across agents is semantically weak; the control-level noise sort is an accepted loss). Rollup moved to the expansion's Findings header ("· ×214 tool calls"); the ×N stays on each finding row. Then the findings section converted from flex rows to UxTable variant="band" — columns Severity · Finding (scope + reason/title sub-line) · Occurrences · Last Seen · Agent · SLA · Adjudicate, with the adjudication panel opening as a full-width colspan row. Verified in browser: band header renders, ×200 row reads columnar, colspan inset opens, acknowledge stamps the audit; zero console errors.
Aug 25
  • Thread — findings-regroup: two-section expansion + terminology (2026-08-25): v2's group expansion split into two stacked UxTableListExpandSection cards via ExpandRow bare (the inventory-agent-expand-v2 pattern, well tint between): section 1 = the policy (ribbon, name, remediation, meta incl. Nearest SLA; close-X wired), section 2 = the findings (its own "Findings : N · open · past SLA" header + the worklist) — context and work stop sharing one card. Terminology ruling applied (see Decisions): "condition" → finding across both regroup pages' UI copy, column header now "Findings", ladder stated as Control → Finding → Occurrence. Both pages 200, sections + disposition verified in browser, zero console errors.
Aug 25
  • Thread — SecuritySeverityTag (2026-08-25): new layer component security/SeverityTag.vue — severity pill on the ComplianceTag chassis, no icon. Rules the layer's severity-ladder split (SecuritySeverity had high on warning; qdash findings had high on error): critical = the only solid error fill (rank by intensity, not a fifth hue) · high = error outline · medium = warning outline · low = muted grey (ComplianceTag's gap register). ink prop = the open-row _darken-me register (content-token border/text + 10% content fill — theme-safe, flips in dark mode), driven from ExpandRow's @detailsOpen/@detailsClose. Documented per house rule: registry entry + _demos/SecuritySeverityTag.vue (full adminProps, ladder both sizes, slot override, overflow, ink-on-tint, in-context finding row). Swapped into findings-regroup-v2 (group rows with ink-on-open, inner table, expansion meta) and the shared DispositionPanel. Dev server now runs NUXT_LOCAL_LAYER=1 (moved to port 3000); layer release needed before CI/prod consumes the component. Ink flip verified in browser: error/60 border → content ink on open → reverts on close.
Aug 25
  • Thread — finding-detail (2026-08-25): /pages/finding-detail-v1 (+ registry, ?id= picks the finding, default the ×200 case) — the "view all" drill and demoted-flat-view home. Identity header (SeverityTag + displayed-status chip + remediation clock + qdash-italic meta), adjudication panel, the full occurrence stream as a house table (Time · citable ID · Agent · Action chip · Detail(stretch) · Session) with text filter and simulate button, occur-free audit record. Fixture support (additive): action on occur events (observed/held/blocked), displayStatus ladder in deriveFinding — c79 base world regression-clean (90% · 10). Worklist evidence headers now read "last 5 of 200 · view all →" linking through. Verified in browser: chip flips acknowledged → risk accepted on adjudication, deep link lands with the right id, 200 rows render, zero console errors.
Aug 25
  • Thread — adjudication card, Mark's design (2026-08-25): built from Mark's manual mock. Layer: UxTableListExpandSection gains theme="grape" — the CHILD register (grape-50 fill, grape-150 border, no shadow; dark grape-850/30) for a card that belongs to a row of the section above; registry entry updated. v2: each finding row in the inner findings table is now itself a UxTableListExpandRow — whole-row click AND the Adjudicate button (handler-less, bubbles to the row) open the grape adjudication card as the row's own expansion. Card per the design: severity pill + 22px title · meta band (Agent avatar / Machine·User from new seed fields / Remediation Clock as a progress bar — content fill on grape-150 track, error fill on breach) · Ignore + Accept Risk as the only verb buttons (axis 1, capture-gated — the accept-risk label applied) · Evidence and Audit Record as two bold-header columns with 3px rules · handling as the Status dropdown (UxSimpleSelect: Acknowledged/Escalated/Enforced — axis 2 as a status control, exactly the axis alignment ruling; selecting appends the clock-neutral event with its ref). DispositionPanel no longer used on v2 (remains the organ on the other three pages — convergence is an open thread). Verified: row click toggles, button opens, select/capture don't close the row, audit updates live, zero console errors.
Aug 25
  • Thread — quiet expand register (2026-08-25): Mark's ruling: the row and its parent row stay white; only the grape card is tinted. Evaluated (CSS override spike vs prop vs style-props vs new component) and ruled: quiet boolean prop on UxTableListExpandRow — open row and details well stay surface, no purple rules/tint/bordered well/flash; everything else unchanged; default false so existing consumers untouched. quiet + ExpandSection theme="grape" together form the child-register vocabulary: quiet row + grape card = "this content belongs to the row above." Applied and then refined per Mark: the OUTER control rows keep the loud register (qdash's own open treatment — purple rules + grape tint); only the nested finding rows are quiet, with the grape card as their tinted surface. CSS spike reverted; registry updated. Measured: outer open row grape/10 tint with its 2 purple rules, inner open row rgb(255,255,255), card exactly grape-50 (#F9F7FF).

c68 index-overview

Aug 27
  • Inventory-card thread (2026-08-27, Mark's manual three-card design — Compliance · SLA Findings · Inventory with a body-figure estate): inventory-card-possibility-space.md — the health seam answered (findings = adjudicated health per c79's condition model; the durable seam is register not topic: Inventory is the physical exam, Findings the diagnosis; the mock's "Un-allowed Skill Detected" is a condition and belongs to Findings, Inventory lights the body part and links). Exhaustive 15-category taxonomy of inventory-card content, every idea tagged with backing API fields and buildability tier (T1 live / T2 derivable / T3 needs-backend). Body-figure ruling: color = visibility/vetting state, not posture — torso/MCP-arm/legs can light honestly today, head/hips ship calm until an asset_vetting registry exists (the named smallest backend ask). Ranked recommendation: estate register (weight) · coverage hero absolute (31/39) · one unvetted-entry tone line · figure · coverage spark; cuts: denied/posture/fabricated sparks/cost/"Repos" label. Decisions (Mark): doc first, mock later · content explored freely, figure as one treatment.
Aug 27
  • Three-card-mock build (2026-08-27): /pages/index-three-cards-v1 built and registered (overview group) — Mark's two-state manual design at Meridian numbers: derived Full/Partial Visibility verdict (39/39 vs 34/39·87%, toggle flips only what visibility owns — Compliance and SLA read the same world in both states, the seam in action), placeholder InventoryBodyFigure component (per-part tone API, data-part swap contract for Mark's SVG), estate rows with authored 7d deltas (the one authored value, noted on-page), intake-language exceptions footer (5 shadow · unvetted pg-tools, straight from fixtures), derived compliance scores (83%, fixture's two frameworks replacing the design's five), and fully derived SLA deadlines (calendar-day math; nothing near breach in this world, so the design's deadline inks honestly don't fire). Captured both states (c68-three-cards-{partial,full}.png). Smoke: 200, both states verified visually. Round 2 (Mark's four changes): Go ▶ on all three cards · SLA card made consistent with findings-regroup-v2 by extracting LifecycleFindingsDigest (severity box + remediation-deadlines list) from regroup-v2's policy expansion — both surfaces now wear the same organ (regroup-v2 re-verified rendering identically post-extraction) · verdict font-exbold · Compliance % Inter black (mono dropped).

c78 fleet-overview-reports

Aug 24
  • Thread — card-minidocs (2026-08-24): Mark's pick against the stage-4 lean: expand the mini-document, don't shelve it. /pages/report-card-minidocs built and registered — seven versions where typographic hierarchy (weight, size) is the instrument, each promoting a different derived fact to the top of the type scale: headline (score), lede (worst item as a real sentence), stamp (verdict as a rotated audit mark), contents (derived mini-TOC locating the trouble section), marginalia (page opened to the highlighted finding), cover (identity, the stage-4 control condition), ticker (delta + embedded spark figure). Mid-thread ruling: no "Qpoint" masthead — each card leads with its own title (cover uses the audience line). On-paper ink is fixed palette, never themed (white page in both themes); one device per card holds, including exactly one lit TOC row. Provisional verdict on-page: headline spine + lede sentence is the natural merge; stamp is alert-world dressing only; contents/marginalia belong on drill/export surfaces; final pick Mark's. Thread files: card-minidocs-prompt.md, card-minidocs-plan.md. Smoke-checked 200.
Aug 24
  • Thread — card-minidocs, iteration 3 (2026-08-24): Mark's ruling: no greek lines — every piece of the mini report must communicate. /pages/report-card-minidocs-v2 built and registered: a content audit per report (one card-altitude question each; a slot survives only if it serves it — the board headline lost its slot for restating its three source rows) followed by two compositions of the audited content: briefing (hero score + spark, toned alarm lines with owners, quiet register) and ledger (same content as a uniform table, the no-hero control). New slots surfaced by the audit: SLA nearest-to-target finding and Q3 found-vs-resolved throughput debt; inventory personal-account shadow split and newest-shadow named; compliance evidence volume. New emphasis rule: weight marks most-informative, color remains the single genuine-tone device — importance and urgency on separate channels. Cards widened 168 → 200px. Provisional verdict: briefing (hero numeral keeps four-up triage scannable); ledger belongs one level down (hover / snapshot shelf). Smoke-checked 200, derived figures verified in rendered output.
Aug 24
  • Thread — card-minidocs, iteration 4 (2026-08-24): attention-device bake-off on the v2 cards. /pages/report-card-minidocs-v3 built and registered — ten devices for calling out areas of concern, in four families: line-level (ink control, highlighter), object-level (border, spine, pink-slip tint), boundary-breakers (merit-badge seal with count, flag tab, dog-ear, notification chip), and the stamp as labeler (the only device that names the problem class, and the only one with a positive state). Discipline held: one tone carrier per card — under any card-level device the text goes neutral and keeps weight; SLA's clean card is the absence test in every section. Transfer check re-shows the two leaders (badge, highlighter) on the ledger. Real bug found and fixed: the layer's Tailwind config sets red: '#FF0033' flat, which clobbers the default red-* scale — every red-600-style class on iterations 2–3 silently generated no CSS (alert ink rendered neutral); all three mini-doc pages switched to rose-*, gotcha saved to memory. Provisional verdict: merit badge (silhouette + magnitude + absence-is-calm), highlighter as line-level runner-up, and a new thought recorded — devices may be escalation rungs (ink → badge → pink-slip), not rivals. Smoke-checked 200 across all three pages, rose classes verified in generated CSS.

Captures

5 screengrabs taken this week.

The c79 findings-regroup-v2 design live in qdash on real backend data

Control row expanded — policy header with severity box and deadlines over the findings worklist
Control row expanded — policy header with severity box and deadlines over the findings worklist
Aug 27
Accept Risk capture band — reason + expiry gate the exception
Accept Risk capture band — reason + expiry gate the exception
Aug 27
Adjudicate opens the grape card — meta band, verbs, Evidence | Audit Record
Adjudicate opens the grape card — meta band, verbs, Evidence | Audit Record
Aug 27
/pages/index-three-cards-v1
/pages/index-three-cards-v1
Aug 27
/pages/index-three-cards-v1
/pages/index-three-cards-v1
Aug 27

Releases & deploys

Layer releases 1

v0.9.11Aug 27v0.9.11: AgentPill, SecuritySeverityTag, ExpandSection grape theme + quiet register, StretchBox width fix — the c79 finding-lifecycle components

Design-site deploys 0

No deploys recorded this week.

Note: Deploys come from this checkout's deploy-branch reflog, which starts 2026-10-16.

Qpoint Brand Style Guide