16 started, 32 closed, 30 carried live.
Busiest record: c67 Teams (20 entries) · 14 carried cycles have gone quiet · layer v0.9.7 → v0.9.10
Commits
95 commits across 10 repos, on each repo's checked-out branch.
Cycles
Started 16
Create/configure modal for 11 connectors with per-integration custom UI and step-by-step operator guidance
Cycle detail pages across all projects — a /cycles listing + full-documentation detail pages joining every repo's cycle records with a backfilled cross-project screengrab archive
Convert "Looking In" thesis to Kindle-compatible formats (EPUB + print-replica PDF) while preserving images and foundational status
Methods & tooling retro — evaluate how we work against the design methodology, restore order, modernize the skill/agent tooling, and make the philosophy load-bearing
Design the qdash landing page — what the user is greeted with on login, resolving the Fleet Overview / Agent Inventory overlap.
Refine the qdash /teams design — composition from c61 concepts, mapping workspace as the pre-SCIM write path, slim spend overview, credentials relocated
Add unit-of-measurement toggle to qdash /cost page — switch display between currency ($) and tokens
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
Consolidate the overlapping Control Center / Policy & Enforcement / Compliance work — current-state evaluation, ranked consolidation plan, initial-ideas mock
One-shot status grid of every qcontrol dashboard page — alive / nuxt skin / design pass / manual fine tuning
Still open 30
Precedent research for an AI asset inventory page — how existing products present inventories of agents, MCP servers, files, models, and related AI assets
Live qflow visualization of qcontrol agent events — agents pulsing to event-type nodes, fed by qdash SSE, with a growing timeline scrubber
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
Deterministic synthetic MCP server fleet views for screenshot capture
Add a flatland view (topdown camera + pitched 3D models) for VOX/OBJ-backed actors
Build a qmap inventory/index view of the company-wide AI ecosystem using deterministic synthetic data first
Build a deterministic synthetic replay path for live-feeling qmap sessions
Validate import, normalization, and rendering of custom .obj actor models in qmap
Visualize a single qcontrol runtime session as a qmap entity-type topology
Visualize a single AI agent session as a qmap entity-type topology
Situation Room wireframe — problem-space command center for data governance
Design qdash inventory page to surface agent status and footprint at a glance
Understand the fractured qcontrol app ecosystem and consolidate it into a simple, clean, demoable product on a Nuxt + q-nuxt-layer front-end
Make push to main reliably deploy the design site to Cloudflare Pages *(2026-09-25: reframed as "make the build a manual local step", see PICKUP.md)*
Build-partner portal — research, ideation, and a plan for a page that makes partners insiders
Align the qcontrol agent-monitoring dashboard to specific personas and find market alignment — hypothesis-first, validated against calls later.
Explore and integrate Avoma notes data into extraction pipeline and dashboard visualizations.
Refine how extracted data is displayed in the dashboard and improve extraction quality where gaps exist.
Add Google OAuth to restrict dashboard access to @qpoint.io team members.
Closed 32
Cycle detail pages across all projects — a /cycles listing + full-documentation detail pages joining every repo's cycle records with a backfilled cross-project screengrab archive
One-shot status grid of every qcontrol dashboard page — alive / nuxt skin / design pass / manual fine tuning
Research and design enterprise-SaaS patterns for qdash teams and integrations pages
_To be defined — see [initial-prompt.md](initial-prompt.md)._
AgentMiniCard — compact agent summary card composing the AgentPawn, with mock page
Build the agent pawn state system from the first real Illustrator pawn art
Mock up two compliance framework pages from Figma designs
Design-site mock of the v2 Policy & Enforcement page from Figma — tabbed policy-control table built on UxTableList
Formalize and modernize the Claude workflow tooling across the Qpoint project family
Build a dark-mode color system for the qcontrol app consolidation (qdash, qglass, Nuxt UI), with a design-app-based color picker and theme-file persistence for rapid iteration.
Close the layer gaps so the design site uses only q-nuxt-layer components for everything presentational
Define the qmap implementation path for an inventory/index view of the company-wide AI ecosystem
Horizontal timeline system for artifacts, history, and curated milestones across the design site
Design briefs for the trust, provenance, storytelling, and layered-visibility framing around qcontrol-driven visualizations
Visual experiments expressing the AI agent monitoring dataset for security teams
Live qcontrol event stream → qmap visualization via SSE bridge
Publish four internal projects to Cloudflare Pages
Directional arrow indicators on dataflow lines
QMapDataflow wrapper with config-driven props and tag-based context grouping
Schema-driven configurator for runtime property control
Single dataflow detail view with per-actor context toggling
PixiJS experiments expressing the AI agent monitoring dataset for security teams
Pages & components
What this week's captures picture — 2 pages, 8 components, 3 patterns · 13 first captured this week. Each links to its evolution: every moment it was shot, across cycles.
Pages 2
Components 8
Patterns 3
Log
Key Changes entries dated inside the week, from each cycle's record — newest first within a cycle.
c71 Cycle Atlas
- 2026-08-16 — Close-out: history chips link per-cycle in compound labels; c71 history entry + atlas-listing hero (16 slices); reusable machinery distilled into
/captureand/document-cycleskills;embed-visual-records.pypromoted from scratchpad toscripts/.
- 2026-08-15 — Cycle created; plan in cycle-atlas-plan.md, exploration findings in research.md.
- 2026-08-15 — Capture script:
--slices(sharp 900px bands from full-page renders) +--projectper-repo output with merged manifests.
- 2026-08-15 — Parser + API:
server/data/cycles/tolerant multi-project reader (alias table, header variants, Current Outcome = in-progress, recordless dirs, git-date fallback, honest-skip);/api/cycles+/api/cycles/[project]/[id]. 151 cycles across 8 projects on first run.
- 2026-08-15 — Pages:
/cyclesproject-grouped listing +/cycles/[project]/[id]full-documentation detail (MDCRenderer narrative, gallery + lightbox, artifacts, live-route links). AppNav Cycles link; history cycle chips link into the atlas per project; hub links to the atlas.
- 2026-08-15 — Design early backfill: 23 routes (c1–c57 era) with slices →
public/cycles/design/; 10 honesty-noted archive entries for the strong matches.
- 2026-08-15 — Sister backfills: qmap 13 experiment captures + 24 legacy
c<N>.outcomesimages adopted; qflow 12 experiments (c12 live against qcontrol :7878); bob-wire 31 representative shots (17 cycle indexes + 14 flagship pages, c20 portal 6-slice); qpixel 7 test snapshots as c4 evidence; market-analyst 2 inspected aggregate views (/segmentsrejected — customer names). All dev servers sequential, explicit ports, killed after. Imagery: 92/151 cycles, ~39 MB.
- 2026-08-15 — In-repo visual records. Each sister repo now owns its cycle imagery: qmap's
docs/images/cycle-history/convention extended to all five sisters (heroes + full renders, slices stay design-site-only), 50 CYCLE.md files gained a## Visual recordsection with repo-relative embeds (GitHub-renderable), provenance READMEs added, one commit per repo. The atlas parser skips that section by title (it renders its own gallery; relative paths wouldn't resolve).
- 2026-08-15 — State-atlas thread (state-atlas-prompt.md / -plan.md / -research.md). Capture script gained a declarative program runner (
--program, actions: click/clickSel/clickText/select+optionScan/set/wheel/drag/clickXY/wait/css/reload; auto-hidden chrome, JS-dispatched interactions work on hidden controls). Two shot programs authored from full control inventories: qflow 100 shots (every cycle ≥8 — layout matrices, shape-language survey, presets, cranked-feed time-lapses; c11's blank default fixed: all 7 tabs captured, playback lit at turn 31, the unattributed-API-key risk view) and qmap 110 shots (scenario frames, context toggles, vox asset gallery, c24's deterministic seek ladder at phase boundaries, c28 in Fixture mode; honest ceilings: c16=2, c27=6). Manifests carry per-shot captions + per-cycle newThing → atlas galleries render figcaptions and a "New in this cycle" line, ordered by program sequence. Full sets propagated to qflow/qmap repos with Visual record sections rewritten as hero + collapsible states. ~210 new images, ~70 MB design-side.
- 2026-08-15 — Record backfills + qmap early-cycle atlas. Honest CYCLE.md reconstructions written and committed upstream for the five experiment-only cycles: qflow c11 (whose experiment dir turned out to be untracked since April — now finally committed) and qmap c17–c20 (mined from the contemporaneous
dev/experiments/CYCLES.mdrecord; c17 dir renamed, c19/c20 dirs created; recorded March dates preferred over the April batch-commit date). Atlas pages flipped from recordless to full records automatically. Thenqmap-early.json: 104 shots covering c1–c13 (every cycle ≥8 except c4's honest 4), including all 13 c1 boundary-drawing strategies — after fixing a Family-A grid-hide bug (zeroing tracks while keeping named areas so remounted scenes read a real viewport) and giving c1 per-strategy reloads. qmap manifest now spans c1–c28, 228 entries.
c72 Integrations Create & Manage
- 2026-08-15 — Cycle created; initial-prompt captured, CYCLE.md written.
- 2026-08-15 — Requirements research + recipe catalog: all 11 connectors' real setup requirements researched and encoded as typed setup recipes (
ui/app/lib/integration-setup.ts) — fields (text/url/secret/secret-multiline/select, conditional viashowIf) + tutorial steps (vendor console click-paths, copyable SQL/openssl/IAM-policy snippets, caution notes) + "once connected" expectations. Summary inresearch-connectors.md.
- 2026-08-15 — Guided setup modal:
IntegrationSetupModal.vue— step rail with completion state, per-step instruction content, inline field collection, injected severity-routing step for channel-backed connectors (live local counts, defaults from the Alerts fallback map), generated Review & connect step (masked secrets, expectations, honesty note) gated on required fields. Saves via new/api/integrations+ existing/api/channelsin one action.
- 2026-08-15 — Reuse on detail pages:
IntegrationSetupFields.vueshared renderer;[id].vuereplaces the disabled stub with the live form (Save / Disconnect / Reopen setup guide), unsaved-edit protection against the 3s poll re-seed. Channel-backed connectors keep the routing panel and gain the config form.
- 2026-08-15 — Persistence:
integration_configsSQLite register mirroringchannels;GET/POST/DELETE /api/integrations(web.rs/db.rs). Configured connectors flip to active stat cards on the overview (✓ configuredfor non-channel connectors).
- 2026-08-15 — Verified: cargo check clean; API round-trip on a scratch db; Playwright walk-throughs of Splunk (4 steps), Slack (routing), Okta→Entra conditional branch, and Jira detail reuse — screenshots in
shots/.
- 2026-08-15 — Thread: message-preview (
message-preview-prompt.md/message-preview-plan.md) — "shape the message" previews for the three notification connectors, each speaking its integration's native language: a Slack window (channel header, APP-badged bot, Block Kit severity bars; knobs for channel, bot name, pixel-pawn vs initials avatar, message detail, and throttling where "per day" visibly collapses the sample stream into one rollup), a PagerDuty incident card (urgency mapping, dedup key that rewrites live, auto-resolve toggle whose off-state shows the incident staying open), and an email digest in a mail frame (From/subject-prefix/delivery-time, live re-grouping by severity/framework/agent, headlines vs full detail). Canned sample narrative shared viamessage-samples.ts(high credential-leak / medium egress / resolution + digest counts). Architecture: knobs arepreview: trueSetupFields (seed/persist/review/dirty-tracking ride the c72 machinery free),SetupStep.component+integration-preview.tsregistry render the previews in the modal's shape step and as a "Message shape" panel on detail pages. Verified with Playwright knob-permutation shots inshots/.
c69 Operating System
- 2026-08-15 — Cycle created from Mark's retro prompt; c53 absorbed and closed. Full audit findings in evaluation.md; execution plan in operating-system-plan.md.
- 2026-08-15 — Order restored. Backlog committed in five coherent commits (c62 visibility stream, c67 teams, c68 index, c66 cost, registry catch-up). Archive sweep: 22 cycles closed into HISTORY.md with Outcomes written where missing (c17, c33, c37, c40, c48, c54, c60) and c63's CYCLE.md backfilled; HISTORY.md duplicate c25/c12 entries removed; CYCLES.md drained 31 → 16 entries with status parentheticals. Six cycles flagged for Mark's call: c41, c42, c44, c51, c55, c59. c49 kept (blocked on Cloudflare secrets).
- 2026-08-15 — Conventions codified. cycle-manager gained Park/Resume ops with the PICKUP.md spec (generalized from c62), the real CYCLES.md entry format, and an optional
Mode:template line; canonical synced to all 6 sister projects (extensions preserved) and committed in each repo.
- 2026-08-15 — Tooling modernized. All 9 commands converted to
skills/<name>/SKILL.mdwith frontmatter (market-analyst pattern),commands/removed. figma collision resolved: command →figma-to-component(layer components), skill staysfigma-to-vue(page mocks). release-layer rewritten to verified reality (GitHub Packages, tag-driven publish.yml,update-consumers.sh— tarball flow fully retired); document-pattern/scan-patterns updated to the pattern-registry structure; archive's MCP rebuild step verified REAL (mcp/src/resources.ts imports archive-meta) and kept with justification. New skills:/pickup,/retro.
- 2026-08-15 — Literacy layer. CLAUDE.md gained a Design Methodology section (wicked problems, assemblage, modularity, edge of chaos + stage rule, 7 modes, 5-question framework, replicate-first, demo-is-the-test) and the missing Tour Guide Sync section; building skills carry a one-line methodology pointer.
- 2026-08-15 — Content-shots thread (content-shots-prompt.md / -plan.md). Capture script gained content mode (default): hides nav/footer + the page's title/preamble block via a structural rule ("Source:" paragraph anchors the preamble; fallback: first child + trailing
<p>s), so heroes open on the visual work;--chromekeeps site chrome;--with-fullsaves a-full.pngwhen content runs past the 1100px fold. Sweep + curated set recaptured in place (same filenames — no history-page edits); 17 full-page variants; archive entries gained two-image galleries (hero + full; detail view shows gallery instead of image, thumbnails keep the hero). Manifest now carries contentHeight/hasFull for the cycle viewer. Total 2026-q3 imagery: 18 MB. (history-refresh-prompt.md / -plan.md). Builtscripts/capture.mts(npm run shots— Playwright against the running dev server, page-registry as manifest, ThemeEditor/devtools hidden): 90/90-route sweep + manifest.json intopublic/archive/2026-q3/sweep/(11 MB), 20 curated cycle-named shots. Archive revived with 20content/archive/2026-q3/screengrab entries (cycle tags, feeds /timeline). All six /history pages backfilled — design +18 entries (c39→c69, 44 total), qmap +4, qflow +3, bob-wire +4, market-analyst +3, qpixel +1 (sister pages via parallel subagents from their own cycle records) — and hub cards corrected. Cycle-viewer architecture prepped: header parsing contract, cycle-prefixed filenames, manifest, archive cycle tags. Deferred:cycle?field on page-registry (file carries another session's uncommitted work); the reserved 'history' timeline source kind (c39 backlog).
c67 Teams
- teams-strip-ideas (2026-08-15):
/pages/teams-strip-ideas— the Teams strip gains a metric lens. Full catalog brainstormed (spend/adoption/risk/identity families × ranked jobs; per-team trends impossible — daily series is fleet-wide). Five lenses picked for a UxTabGroup switcher (c66 idiom, mode semantics — FilterGroup and dropdown rejected on the page): Spend (default, reconciles with Cost Center), $/person (honest cross-team comparison), Active now (only near-real-time signal), Risk (triage heatmap), Agents/person (adoption depth). Excluded with reasons: Tokens (Cost Center owns the unit toggle), Sessions, People (permanent sub-line anchor), riskScore (sort-only). Four bar semantics, one chip geometry: share-of-total (grey, sums to 100%), per-person scaled-to-max (% dropped from sub-line), fraction-of-self meter (success hue announces the switch), counts-with-severity (no bar — severity never encodes length; "1 Crit · 2 Elev" in words, "clear" quietly). Sort follows the lens desc, Unassigned pins last (amber value in every mode; per-identity denominators; "3 of 61 running" as mapping prompt). Two live strips — Meridian + scale, where the top-5 cap re-ranks per lens (Research/$-per-person, Support-Ops/Active, Core-Banking/Risk surface; none are top spenders). Ship notes: ?teamsBy= URL sync, tooltip = full stat sheet, per-chip estimated asterisk, teamRollups() as the fleet-rollups.ts sibling, by_team-vs-rollup unassigned seam handled by union.
- teams-strip-axis (2026-08-15):
/pages/teams-strip-axis— nine live treatments of the Teams strip on a simplicity ↔ expressiveness axis, lensed baseline at 0, shared lens switcher where treatments can listen. Simplicity: −1 quiet chips (name+value pills, stat sheet on hover — the responsive collapse), −2 ticker (one prose line — the export/digest form), −3 one bar (single stacked proportional object — share-only, the first casualty of abstraction is lens flexibility), −4 headline (one verdict fact per lens). Expressiveness: +1 stat chips (all five metrics per chip — kills cross-team scanning, the tooltip does this job better), +2 fingerprints (normalized column shapes — interesting failure, demands expertise), +3 people cards (one state-colored dot per person — composition instead of aggregate; felix IS the red dot), +4 matrix (scoreboard table, every column keeps its own bar semantic — DataTable, nearly free, but it's the Cost Center table upgrade, not a strip). Axis punchline: the lens switcher exists exactly at the midpoint — simpler loses lenses one by one, richer stops needing them. Verdict: baseline holds the working state; the headline (−4) becomes the all-clear Teams voice (and the c68 landing candidate); people cards (+3) are the challenger to test at checkpoint, with a density question above ~12 people/team.
- teams-strip-portals (2026-08-15):
/pages/teams-strip-portals+ thread docs (strip-portals-prompt.md/-plan.md, plus same-day retro backfillsstrip-metrics-prompt.md,strip-axis-prompt.md). Thesis: a visual means the data it summarizes; a portal proves it — the honesty stance made interactive. Six-law portal grammar (a mark opens what it depicts · hover previews, click commits + writes URL · every aggregate carries its receipt, discrepancies printed not smoothed · negative space is data · descent stops at real data · Esc ascends one level). One composed interactive strip at 26-team scale: Auto lens (data picks each chip's metric; small-caps lens tags; named comparators, no z-scores — "2.7× fleet median", never σ; Risk precedence absolute; sticky selection; degenerates to baseline when nothing is notable; membership = the briefing + residual archive), focus gesture (chip → people card with all five stats + stateful dots + "+N idle" door, siblings → quiet chips, focus = roster filter; per-team lens tabs cut), receipts (addends re-add to the headline; the by_team-vs-rollup seam printed in amber — "$4.02k attributed · $80 unresolved"; estimated-formula popover; descent floor = sessions), return door (bidirectional chip-dot ↔ roster-row hover highlight — /document-pattern candidate), residual chip ("21 teams · nothing notable · $5.4k" — opens the tail, where the matrix belongs), whisper line (fixed-height hover preview — the demoted hover-panel). Lab rejects on-page: hover peephole, per-chip lens tabs, recursive in-chip decomposition, z-scores. Checkpoint strip question now three-way: lensed baseline vs people-cards vs composed portal.
- teams-strip-overdrive (2026-08-15):
/pages/teams-strip-overdrive+ thread docs (strip-overdrive-{prompt,plan}.md). Deliberate overshoot study — "how can we err too far in visual communication?" Six graph-heavy treatments of the scale world in the c62 house grammar (dependency-free viewBox SVG, hash jitter,<title>on every mark, halo labels; palette = the c62-validated categorical order + attribution amber, re-run through the dataviz validator this session — ALL PASS), each with a filed crime report: helix wall (metaphor debt — c62's own verdict — + unreadable amplitude), colony (misjudged organic area, aesthetic scatter, decorative cilia), growth rings (fabricated age + radial distortion), loom (hairball — the beauty is the crossings, the crossings are the noise), barcode (the designed survivor: DNA as texture — 214 real fixture bars, length=spend/color=state, every bar a portal; tamed with min bar width), cockpit (the anti-page: 6 FABRICATED-stamped sparklines, rainbow gauge, dual-axis panel, 18 pulses, red-as-frame). Autopsy: six-error taxonomy (metaphor debt · unreadable channels · fabricated levels · aesthetic sorting · ink without a question · motion/status as decoration), each pinned to its guilty treatments. The line, located: expressiveness errs the moment a channel stops answering a question and starts decorating one. Survivor graduates: barcode row as the focus-card interior above ~12 people + a fleet-texture band candidate for the 214-person roster header.
- teams-strip-swarm (2026-08-15):
/pages/teams-strip-swarm+ thread docs (strip-swarm-{prompt,plan}.md). Course correction from overdrive per Mark — no metaphors, the data-swarm-ideas grammar applied verbatim to the teams world: every mark maps to one datum, axes chosen so the swarm's shape is the answer, selective ring+halo annotations, legends above,<title>everywhere (973 dots / 971 tooltips). Four plots: attribution swarm (x=team, y=log spend/person, color=state — Unassigned becomes an amber cloud of 61 people-shaped reasons), spend × presence audit field (x=log spend, y=time-since-active with quadrant guides "burning & present"/"spent & gone" — the amber mass drifting stale IS the mapping queue sorted by urgency; j.okafor ringed), shift swarm (one dot = one session, x=hour, y=team, r=tokens, color=model — the ci-pool's overnight band drawn as "pipeline hours — the alibi": the mapping suggestion's evidence made visible; honest because sessions are the descent floor), leverage field (x=sessions, y=tokens/session, total-consumption isoquants — sprinters vs grinders, same bill, opposite styles; Core-Banking + tail folded to grey per the fixed-order rule). Coda: the swarm chip — the strip chip's bar slot replaced by a one-row micro-swarm of its people; at 61 identities the overlap converges to the barcode's texture — the two survivors are one idea at two densities. Checkpoint strip-interior candidates now: share bar / barcode / swarm row.
- teams-strip-bites (2026-08-15):
/pages/teams-strip-bites+ thread docs (strip-bites-{prompt,plan}.md). The swarm chip generalized: the metric switcher is the cognitive axis and each lens gets the micro-visualization that best answers its question, decided by live bake-offs (2–3 candidate chip rows per lens, winner pilled, verdict grounded in the dataviz form heuristics). Winners: Spend = micro-swarm (donut is the skill's literal anti-example; bar repeats the sub-line; only the swarm adds shape + outliers), $/person = dot-on-fleet-range (the "progress slider" made honest — position-in-distribution with min/median/max ticks, "2.4× median" drawn), Active = unit dots ≤12 with meter fallback (people are countable; continuous fill fakes continuity at n=9; same density threshold as the focus card — one rule system-wide), Risk = severity glyphs (findings are units not magnitudes; three squares answer one-person-or-systemic; heat cell re-introduces magnitude-by-color for a count), Agents = micro-histogram (the ratio hides its own question — same 2.3 mean, opposite cultures). Composed strip: UxTabGroup lens switcher, winning form follows the lens, every mark keeps<title>; portals' Auto composes on top. Principles table (lens → question → form → what it reveals that the bar hid) + the law: a micro-viz earns the slot only if it answers the lens's question better than the number beside it. The pie's obituary published.
- teams-strip-levers (2026-08-15):
/pages/teams-strip-levers+ thread docs (strip-levers-{prompt,plan}.md). The cognitive pass — states → levers. Lens test: (a) unambiguous good direction, (b) attribution to a real action, (c) sub-quarter feedback loop. Audit of the current five: Spend keeps (the one honest state — accountability ledger); $/person → tooltip; Active-now → Auto lens + focus card (weather, but the only real-time signal); Agents/person → focus card (diagnostic, no good direction); Risk upgraded to Open, aged (danger_level is already conditions-based and findings subsume those conditions with workflow + timestamps — age of oldest adds the missing lever: an SLA). Revised set, one per cognitive job: Spend (micro-swarm) · Waste — idle->14d spend, hollow unit dots, ✓ today · Retention — 7d cohort return, filled/hollow dots with meter fallback, ◐ via /api/agents first_seen/last_active (NOT sessions — 200-row cap), explicitly not a dumbbell (one ratio isn't a trend) · Coverage — instrumented % of known machines, gap-emphasized meter, denominator honestly "machines we can see" (no MDM join) · Open, aged — glyphs + oldest-age words, terminal statuses per the backend's own projection. Mapping coverage (the page's most movable lever) headlines the verdict line, not a lens. Candidate ledger with receipts: cache leverage + premium share → Cost Center (harness/workload confounds; cost composition); Exposure-as-composed killed (2/3 of its data doesn't exist; consumer keys are /identity's per decision 3); egress surface → controls (per-agent counts double-count shared hosts; admin lever); guardrail posture → focus card (real lever via tool_calls decision_source). Thresholds anchored to data-max and printed in the whisper line. Follow-up (same day, per Mark): Tokens added as a sixth lens — Spend's native-unit twin (c66 principle: token counts are measured, dollars are estimated; same by_team rows, micro-swarm on a token scale; unit-toggle depth stays on Cost Center). Principle amended: one accountability job, two units.
- teams-strip-horizons (2026-08-15):
/pages/teams-strip-horizons+ thread docs (strip-horizons-{prompt,plan}.md). The expansion round — additional data, additional windows, less-defensible territory explored with every danger named. Five schema discoveries (amend the levers ledger):file_accesswith sensitivity categories is live; quota posture captured (quota_5h/7d,overage_rejected);campaignshas target/direction/window/baseline (runway ✓, was ◐);attestations+controls.packsare literal maturity receipts; session shape rich (tool_kind, durations, exit codes, TLS flags,proc:<pid>uninstrumented-process markers). 21-window catalog tiered ✓◐▲✗ with dangers (Goodhart/privacy/counterfactual/composite/fabrication) and personas — nine new windows incl. friction tax, sensitive-touch surface, shadow-process delta, secret dwell, blowout ledger, unattended autonomy (agent-framed), quota headroom, posture regression. The drawn line: prompt-topic mining — technically small (DLP already reads content), socially a cliff (protect-the-author vs characterize-them); declined; defensible cousin = practice profiles at repo grain. Structural finding: growth is depth, not width — the strip is full at six lenses; the windows pour into the focus card / verdict line / other pages, exactly as the portal grammar predicted. Four graduates (mocked): policy dividend + friction tax as one build (the pair is receipts, either alone is propaganda); spend runway vs campaign (labeled projection, verdict-line breach); fleet-hygiene block as Coverage's descent floor; new-joiner ramp (the positive-direction counterweight). Behavioral drift held for daily aggregates (200-row sessions cap would break the descent-floor law). Capture roadmap (6): daily per-identity aggregates (highest leverage), posture-change events, repo identity from cwd, read-only IdP pull (un-gates offboarding risk from SCIM — roadmap reorder), latest-version feed, session outcome reason.
- teams-strip-windows (2026-08-15):
/pages/teams-strip-windows+ thread docs (strip-windows-{prompt,plan}.md). The horizons graduates built at full fidelity, each in its assigned home — depth behind existing marks, not new dashboards: governance ledger (dividend + friction as one two-sided block; 38 enforced / 41 denied with the un-allowlisted MCP offender promoted to its one closing action; pair rule — neither panel renders alone; "enforced," never "prevented"); runway board (per-campaign teams, solid spent / dashed labeled projection / ceiling tick, breach verdict line); fleet-hygiene block (Coverage's descent floor — named laptops, aproc:shadow process, version-lag and zombie rows each with a closing action; receipt re-adds to the chip's gap of 3, with non-counting hygiene rows explicitly separated); ramp panel (three joiner small-multiples vs team p25–p75 bands incl. the stalled case with "check in →"; days-to-band as the enablement number); unattended autonomy (verdict line + six overnight sessions, agent-framed with the 22:00–06:00 threshold printed); secret-dwell and blowout receipt rows (dwell-not-counterfactual; receipt-not-target). All ✓-tier windows only.
- CORRECTION (2026-08-15): The teams-strip-ideas/swarm-era claim "per-team trends impossible — the daily series is fleet-wide" is wrong as stated.
/api/costsapplies?team=scoping before its accumulation loop (web.rs ~2431–2625), so team-scoped totals (incl. cache_read_pct), by_model, and a per-team daily series are all reachable via N scoped fetches with zero backend work. The claim holds only for a single unscoped fetch. Design implications: per-team sparklines become buildable (portal law 5 no longer forbids them — the data exists); Cost Center's team table inherits cache/model split opportunities (c66 follow-on).
- Cycle split (2026-08-14): Created from c61's teams stream — see
initial-prompt.mdandteams-refinement-plan.md.
- teams-ideas-v2 (2026-08-14):
/pages/teams-ideas-v2— composition bake-off. Coda Stacks A ("accountable roster") and B ("teams first") each rendered as a full composed page with the four decisions applied: one merged caveat, mapping coverage % in the summary strip, risk-story roster with per-person identity-gist chip (→ /identity), unmapped band (A) vs mapping drawer (B), slim team cost overview with share bars + "Cost Center →" handoff, adoption strip (fleet-level in A, per-team in B). Verdict: Stack A with B's card language — J1 is the top job, IA doc calls the page a Fleet lens, and 4 free-text teams don't earn cards as the organizing unit pre-SCIM. v3 opens: mapping form factor (band/drawer/sub-route), identity-gist depth, adoption slot, Cost Center EXP gate. Type floor corrected to text-11 (v1 used text-10, which silently renders 16px).
- teams-ideas-v3 (2026-08-14):
/pages/teams-ideas-v3— the write path designed. Three mapping form factors on A's spine: inline band (expands in place, cheapest interruption), slide-over drawer (full evidence one-at-a-time, but modal and fights bulk), sub-route/teams/mapping(queue/dormant/history tabs, org rail, Okta-remapped lifecycle new→mapped→dormant→archived with disable-don't-delete). Identity gist at three depths (chip only / chip + method / icon + posture summary strip). Verdict: band primary with "open workspace →" escalation to the sub-route; drawer cut; gist = chip + conditional posture strip (appears only while consumer keys > 0).
- teams-ideas-v4 (2026-08-14):
/pages/teams-ideas-v4— single composed ship candidate in the shipped-integrations idiom (heavy-rule sections: text-18 bold + 3px grey-300 rule + text-11 why-line). Stack A spine with v3 verdicts folded in. Remaining calls made and annotated: adoption folds into deltas (people stat + team-chip pills, no separate strip at 14 people), team drill-down is filter-in-place (team detail page deferred to SCIM day), mapping band ships collapsed. Ends with the 5-item checkpoint agenda (composition, mapping model, gist depth, adoption/drill-down calls, Cost Center EXP gate).
- Verification (2026-08-14): All three pages SSR 200 on the live dev server, Tailwind rescan via nuxt.config touch after each new file.
- Registry section split (2026-08-14): New
teamspage group ("Teams & Users — People, teams, and identity attribution pages") between Security and Admin; all four teams-ideas pages moved into it. Admin group description trimmed to "Org and connector administration pages".
- teams-ideas-v5 (2026-08-14):
/pages/teams-ideas-v5— states & scale pass on the v4 composition. Four states: first-run (mapping workspace as onboarding hero, teams created in the act of assigning, no roster yet), all-clear (verdict "Nothing needs you", roster falls back to spend order as the attribution ledger, every conditional gone), attention·14 (v4 corrected — verdict line names the work, level-1 expand row designed with top_context chips, level 2 stays AgentExpandDetail), attention·214 (search primary, band drops "map here" above ~8 queue items and becomes pure escalation, team chips cap at top-5-by-spend + unassigned with the tail behind Cost Center). Corrections: verdict line above the strip in every state; amber grammar tightened to attribution debt only (alias, unassigned, band) — credential gist and spend outliers go neutral, severity lives on /identity and Cost Center. Fixtures mirror userRollups() keys + /api/costs by_team rows so the ship rewrite is transcription. New checkpoint item 6: period control (?period= on /teams vs pinning /cost?period=30d on handoff).
- teams-ideas-v6 (2026-08-14):
/pages/teams-ideas-v6— state machine + component mapping. The four v5 states rendered from one template with a live UxTabGroup switcher (proof the design is conditionals over a single composition, not four designs); section × state matrix as the rewrite spec; onboarding progress line added to first-run ("3 of 8 assigned · $12 of $41 attributed"); vocabulary locked — assign (act) / mapped (state) / attributed (money), "map here ▾" corrected to "assign here ▾". Component audit against component-registry.ts (151 components) + qdash locals: table/chips/bars/search map cleanly (DataTable #details, UxTag, UxCode, UxPercentBar, UxTabGroup, UxAvatar — the last two used live in the mock); qdash PageHeader and StatTile are promotion candidates; three confirmed gaps — verdict line (shared need with c68 index), toned stat sub-line, dashed amber band (hand-rolled 3× in v5). Extraction shortlist ranked with one prerequisite: amber enters the layer tone vocabulary (UxPill stops at warn). Note: layer CLAUDE.md/catalog-skill are stale (~35 components) — component-registry.ts is authoritative.
- teams-ideas-v7 (2026-08-14):
/pages/teams-ideas-v7— the four states rebuilt on real components, iterating from v5. Roster = layer DataTable: per-column #slots, #details expand in the house ExpandRow card (agents with UxCode context chips + UxPill danger), column search at scale (search: true on Person replaces the hand-rolled search bar), limit + #footer for the collapsed tails, numeric spend so column sort works. UxAvatar in every person cell (incl. first-run queue), UxTag for the scale filter chip. Teams section = v6's chip row cherry-picked whole, kept as one local functional component (TeamChipRow) so the ShareChip extraction boundary is pre-drawn. Findings from the swap: the column config IS the state machine (all-clear/attention/scale are one component + different column arrays and slot presence); DataTable seams — footer is bottom-right not a full-width tail row, and sort is header-label-based so risk-rank relies on row order until a riskScore column exists. Verdict line, toned stat subs, amber band, share chip stay hand-rolled — the four confirmed v6 gaps.
- teams-ideas-v8 (2026-08-14):
/pages/teams-ideas-v8+app/components/teams/PersonExpandCard.vue— the person expand card designed. Avatar fix: v7 (and v1) crushed UxAvatar initials with a text override; the component's real sizes are small w-9/text-18, reg w-11/text-21 — override removed. Every person row in every state now expands (DataTable bareDetails + the c59 UxTableListExpandSection stack) into TeamsPersonExpandCard: (1) identity & attribution — reg avatar, mono email, source pill → /identity, alias explained (felix's @duck.com merge note), OS user/machines/first-last seen, team with change/assign write path; (2) open work — conditional, the risk story exploded into severity + description + verb rows; (3) agents & usage — agent rows with UxCode top_context chips + a usage line (tokens/% fleet, spend, model chips, tools/MCP). Card replaces the interim AgentExpandDetail at level 1; per-agent "detail →" stays level 2. Deliberate omissions: credential math (/identity), spend history (Cost Center), session logs (agent detail). Could-adds parked for checkpoint: activity sparkline, per-model spend, recent sessions, inline egress decisions.
c68 index-overview
- Phase 0 (2026-08-14):
current-state.md— full qdash audit of the/landing (Fleet Overview) and/inventory, with a five-point overlap table (coverage, at-risk w/ mismatched thresholds, fleet counts, shadow AI, trend sparks) and the seam: Overview owns judgment, Inventory owns nouns.plan.md— five ranked landing questions, health taxonomy (security/monitoring/cost/operational/governance), four-phase plan, six pattern candidates with a starting recommendation (verdict → attention → gateway cards).
- Decisions (2026-08-14, Mark): daily driver (exec summary parked as a separate future page) · scorecard demoted to a card · canonical coverage band lives on the landing · cycle ends at the mock (qdash port is a follow-on).
- Phase 1 (2026-08-14):
design-brief.md— discovered two prior concept rounds for this exact surface (/pages/fleet-overview-ideas, 8 concepts 2026-08-03;/pages/fleet-overview-ideas-2, 4 analogue mechanisms 2026-08-04), so Phase 2 pivoted from re-ideation to synthesis. Brief locks the five-band hierarchy: verdict sentence → exception queue (empty when healthy, by design) → relocated c59 7b trust & presence band → gateway cards incl. the demoted "Vs. goals" card → quiet footer with install funnel.
- Phase 2/3 merged — v1 (2026-08-14):
/pages/index-overview-v1built and registered (overview group) — the composed daily-driver landing with both designed states behind a render toggle (Meridian Monday attention day / all clear), consistent c59 numbers (34 · 39 · 87% · 5 shadow · at-risk 4), unified at-risk definition, and a composition-sources note on the page. Smoke-checked: 200, clean dev log.
- Overlap-analysis thread (2026-08-14):
posture-findings-overlap-analysis.md— landing vs/posturevs/findingsfriction named (three verdicts no master, three at-risk definitions, coverage told 4×, config risk has no action surface). Recommendation: dissolve/posture— factors become triageable configuration findings in a unified Security worklist with a posture-analytics band, installs table → Inventory, score judgment → landing. Plus the Estate-strip proposal (asset deltas as judgment).
- v2 (2026-08-14):
/pages/index-overview-v2built and registered — v1 + the analysis applied: estate strip with deltas in the trust band (footer keeps only the funnel), "Sandbox disabled on marcus's Claude Code" configuration finding in the queue (verdict counts 5), Findings + Posture gateway cards consolidated into one wide Security card (worklist counts + score as registers of one surface), at-risk tile links "→ Security". v1 untouched for side-by-side. Smoke-checked: 200, clean log.
- Verdict-ideas thread (2026-08-14, Mark: "don't love the 5 things needing attention"):
/pages/index-verdict-ideas— five verdict+queue treatments against the same Monday story: (1) grouped-count family chips replacing the enumerating sentence, (2) worst-thing-first hero with "and 4 more" expander, (3) queue-as-greeting with slim status line and no verdict layer, (4) Act·Decide·Review verb grouping matching the triage workflow, (5) since-Friday delta verdict with NEW/AGING row badges. Shared parameterized QueueRow; comparison notes on-page. Registered, smoke-checked 200 with all five sections rendering.
- Queue-ideas thread (2026-08-14, Mark's screenshot critique — the row layer-cake): diagnosis: each queue row spent four attention devices (left border + family tag + NEW badge + toned link) inside its own bordered card.
/pages/index-queue-ideas— five compact treatments, one device per row: (1) hairline list (no cards, severity dot only, ~half height), (2) one-card dot rail (queue as a single object, rail as severity map), (3) mini table (aligned sev/item/age/action columns), (4) hero + ticker (worst item is the only card, rest are expandable chips — two lines total), (5) briefing lines (glyph-led prose, no containers). Registered, smoke-checked 200.
- Glance-ideas thread (2026-08-14, Mark: broader, more visual, more abstraction — details behind a click):
/pages/index-glance-ideas— five visual-first attention abstractions of the Monday story: (1) annunciator panel (fixed domain cells, lit vs dim ✓, cockpit language), (2) fleet pixel grid (34 cells + 5 dashed shadow ghosts — attention as where, scales past lists), (3) domain health meters (equalizer skyline as the verdict), (4) week strip (events positioned in time, the aging config item as a 3-week amber tail — age is length), (5) pixel-pawn lineup (brand-native: sofia errored, felix needs-input, kai asleep, chen as dashed ghost — attention as who needs help). Each with hover identity + click-to-item; summary owns the surface. Registered, smoke-checked 200 clean.
c66 cost-center
- Exploration & verdict (2026-08-14): Token data already exists in breakdown rows (
by_model/by_agent/by_user/by_team) and daily series; onlytotalslacks token counts. Filling it properly on the backend is cheap and clean — verdict: feasible + high-value first slice.
- Backend (implemented 2026-08-14): Added accumulators
token_totandoutput_totto thecosts()loop; extended/api/coststotals JSON withtotal_tokens,input_tokens,output_tokens.
- Frontend (implemented 2026-08-14):
- State:
const { period, unit } = useUrlState({ period: 'all', unit: 'cost' }) - Control: Added
UxTabGroupwith units[{ value: 'cost', label: '$' }, { value: 'tokens', label: 'Tokens' }]beside period switcher - StatTiles: Computed array swapping between cost-mode tiles (total/provider/estimated/cache%) and token-mode tiles (total/input/output/cache%)
- BarLists:
byAgent/byUserpickr.costvsr.tokens; titles and formatters follow unit - Chart:
spendSeriesmapsn: unit === 'cost' ? s.cost : s.tokens; series key auto-labels the legend - Caveat line: Hidden in token mode (currency-only)
- Known nit:
fmtN(0)renders"0"vsfmtC(0)renders"—"— acceptable for v1
- State:
- Cycle docs (design repo, 2026-08-14): Created
c66.cost-center/withinitial-prompt.md,CYCLE.md, andcost-unit-toggle-plan.md; updatedCYCLES.mdto index c66
- Pivot to mock-first (2026-08-14, same day): Mark reverted the qcontrol implementation (backend + frontend + dist, all restored to committed state) in favor of working out the details on the design site first. Built
/pages/cost-center-unit-toggle— a faithful/costreplica seeded with a live data snapshot (period=all, 2026-08-14) with the toggle fully wired: unit-driven tile remap, flipped Last-24h emphasis, unit-following table sort (remount trick forinitialSort), mixed-unit targets exempt, plus a design-notes panel. The qcontrol implementation above stands as the validated port path once the mock settles the design.
- Data findings baked into the mock: the 2026-08-13 batch day (29.9M tokens, $143) flattens the token-mode chart — log-scale/dual-axis question; leaders flip between modes (gpt-5.6-sol #1 by tokens, #3 by cost) — possibly better told as a $/M-token unit-price column; token totals exclude cache reads (~96% cache rate), needs an "excl. cache" sub-label to read honestly.
c62 build-partner
- Visibility-stream thread (2026-08-13): executed
visibility-stream-prompt.md(nédata-sources.md) — how to open an automated visibility/progress/recognition stream to partners with minimal team strain. Three artifacts:visibility-stream-plan.md(investigation plan),visibility-stream.md(the ideation: source audit, digest-agent design, Slack mechanics, recognition push, founding artifacts, sequenced v1), andsample-digest.md(proof-of-concept weekly digest generated from real repo data). Key finds: HISTORY.md is a dead source (zero completions archived in 30 days across 9 repos — the mock's "generated, never hand-edited" claim is currently unkeepable); the live sources are CYCLE.md Key Changes, the layer tag stream (14 tags/30d, subjects carry cycle numbers — free join key), qcontrol's git log (46 commits/30d, PR-numbered), and the qevents CHANGELOG (partner-gradeCompatibility:lines, but 8 of 12 entries undated "Pending"); two Slack webhooks already run in CI (qtap image notify — likely the known "release channel" — and a stars bot; qcontrol has zero Slack config); the design-site timeline model has'history'/'git'source slots declared but never implemented; zero scheduled automation exists anywhere in the workspace. Outside research (cited in doc): generate from structured records not raw diffs (94k-release-note study), reviewer-gatekeeper + fixed template + quiet-week doctrine (nobody ships this — white space), per-partner Slack Connect channels with broadcast fan-out + human-shadow rule, earned-vs-given artifact split (Twilio jacket / Arc card / Stripe milestone gifts). Adds decisions 11–16 to the queue; takes positions on #6 (sharp-edges own page + data file) and #7 (declinedis canon). Follow-up same day:digest-archive.md— three consecutive weekly issues (Jul 24 – Aug 13) backfilled from real repo data, newest-first, with a stakeholder preamble; seed content for the portal ship-log and the internal pitch. Execution started same day (v1 items 1–2):/partner-digestskill (.claude/commands/partner-digest.md— window detection, gather/filter/draft/voice-check/save loop, never-skip + cite-everything rules),digests/stream directory seeded with the three backfill issues as dated files (the portal's intended data source), andslack-playbook.md(channel architecture, cadence promise, posting rules, human-shadow rule, emoji vocabulary, welcome template)
- Partner sell-page concepts (2026-08-13):
/pages/partner-ideas(registered, partners group) — four concepts for the/partnerpage demos land on, all fed by the live digest stream via newserver/api/digests/index.get.ts(parsesdigests/*.mdinto structured issues + computed meta): (1) the receipts — cadence-promise hero, render-time momentum band (first surface where "never hand-edited" is literally true), latest issue as proof object; (2) the epilogue with receipts — demo recap → the real three-week stream → the tracks fork; (3) said honestly — the stream's slippage quotes as a dated honesty wall + sharp-edges tally; (4) the channel —#qpoint-yourcoon an ordinary Thursday, digest bot post from the API, human-shadow reply, 🎫-to-ledger capture. Coda: demo-day composition (recap → receipts → tracks-A doors → honesty → channel, contract one click deep); open review question: honesty wall on-page vs one click deep. Verified SSR against the live dev server
- Partner Board (2026-08-13):
/pages/partner-board(registered) — the partner-facing weekly home, show-not-tell pass on the pitch-heavy ideas page. Glance layer: week-selector chips with activity bars (shipped/in-flight/honest counts as bar heights), DataMetric pulse band with week-over-week delta, shipped cards as bold leads + auto-extracted evidence chips (PRs/versions/cycles/SHAs regexed from digest text), amber "Watch out" flags, pulsing "Moving" lane, "Coming" chips, single ask card with Slack CTA. Detail layer: digest story bodies verbatim behind per-card expand; expand state resets on week switch. All from /api/digests — no hand-written content beyond labels. Open design question: link Watch-out entries to sharp-edge registry entries when referenced
- Partner Board — Maximal (2026-08-13):
/pages/partner-board-max(registered) — deliberate-overreach pass, eight boards of the same /api/digests stream. Solid four: mission-control cockpit (arc gauge, status lamps, sparklines, evidence ticker), heat wall (workstream×week intensity grid, story dot field, cumulative area), river sankey (weeks→lanes ribbons, chips adrift), radar+orbit (shape-of-week polygon with week ghosting, sharp edges as pulsing satellites). Wild four: seismograph (ships as up-spikes, honest notes as dips, live needle), arcade (streak=HP, ships=XP, honest notes=truth tokens, stories as pixel sprites, asks as quests), constellation (stars sized by depth, auto-linked by shared citations), metro map (workstream transit lines, stories as stations, Coming queue as ghost stations on dashed track). Workstream classification + story depth + chips derived from digest text. Coda verdicts — keep: metro, sparkbars/gauges, seismo needle · maybe: heat wall, river · cut: radar, constellation · easter egg: arcade (launch moments / wrapped artifacts, not Thursdays)
- Arcade & Organism (2026-08-13): the arcade thread iterated wide (prompt/plan:
arcade-organism-prompt.md/arcade-organism-plan.md). Newserver/api/commits/index.get.ts— real raw pulse: git log across 5 repos, 152 commits/45 days, per-day counts (qtap's 0 included honestly)./pages/arcade-organism-ideas(registered) — six living-system concepts: the lobby (cohort as 8-player select, PRESS START reserved seats), strata (curated stories over real commit texture — the Aug 6 batch-commit tower visible), heartbeat (two-chamber EKG, product + design-system traces, Thursday strong beats, BPM readout), double helix (product/design strands rung by the real 14-tag release list, labeled join keys v0.9.10⇄c61), growth rings (ring per week, workstream segments, honest-note scars, Coming buds), world map (90-day wrapped preview, fog-of-war future). Coda homes: strata+heartbeat → the board · rings → monthly recap poster · lobby → cohort page · world map → per-partner wrapped · helix → the deck
- Data Swarm (2026-08-13): real-data pairing pass (prompt/plan:
data-swarm-prompt.md/data-swarm-plan.md) — every mark a real event, AI stats promoted to a first-class progress metric (the dogfood thesis: visibility → controls → safe/efficient AI). Two new APIs:server/api/ai-usage/index.get.ts(parses this machine's Claude Code transcripts for qpoint projects — 91 sessions, 18.0M output / 84.6M input / 3.3B cache-read tokens over 45 days, per-session + per-day + per-hour aggregates, module-cached; labeled "one seat — team-wide is llm.usage on the stream") andserver/api/commits/detail.get.ts(per-commit--numstat: 152 commits, +195k/−56k lines)./pages/data-swarm-ideas(registered): AI stat hero band (incl. tokens-per-commit ≈118k, tokens-per-story ≈1.6M) + four plots — (1) expenditure swarm: dot per session, time × log output tokens, size = messages, color = project; (2) tokens-in→code-out: dot per day, log tokens × log lines, tokens/line isoquants, sequential recency hue; (3) commit swarm: dot per commit, time × log lines (the #639 ~52k-line cutover towers correctly); (4) punchcard of attention: day × hour, size = tokens, weekend bands. Dataviz-skill procedure followed: categorical palette machine-validated (first attempt FAILED — slate low-chroma + pink↔emerald deutan-adjacent; fixed order violet/emerald/sky/pink ALL PASS, sky↔pink floor-band covered by legend + labels); 397 marks SSR-verified, all with hover tooltips. Meaning-layer addendum (same day): selective ✓-callouts overlaying the raw signal — derived, not hand-written: digest stories anchor to the commit swarm wherever their own evidence chips (#PR / vX.Y.Z) match a commit subject (6 callouts render: agent coverage, installation identity, dashboard-onto-layer, pixel identity, unified event schema, Dashboard MVP — with ring highlight, leader line, surface-halo labels, side-placement near the plot top); one ⌾ peak-session callout on the expenditure swarm; leverage + punchcard deliberately unannotated with the rule stated on the page
- Data Swarm II (2026-08-13): pairs iteration (prompt/plan:
data-swarm-2-prompt.md/data-swarm-2-plan.md) — no new APIs; amplifies metrics already in the data: session duration, cache-read context depth (3.3B, never previously charted), model mix, adds-vs-deletes./pages/data-swarm-2-ideas(registered), 8 plots. Solid: metabolism (add×del per commit, churn diagonal, derived ✓-callout lands on #639 — the cutover pruned more than it added), call & response (mirrored tokens/LOC per day, labeled separate scales), context depth (cacheRead×out per session — up-right drift = context is leverage), shift log (session span bars, hour×day, color=model). Out-there: iceberg (output above waterline, 185× cache-context below, one shared log scale), breath (net lines diverging around zero, release breath-marks), orchestra (stacked tokens by model — the fable-5 August entrance reads as a keychange), exchange rate (tok/line daily + 7-day rolling median, ticker framing, ✓ best-day callout). Approximations disclosed on-page (cache/model attributed to session start day). Coda: pairs catalog for iteration III (governance PR-ratio, verbosity, citation density, in-flight age, commit shape, tokens×edge-closures as north star). SSR-verified: 262 dots / 205 bars / 6 areas
- Data Swarm III (2026-08-13): accountability iteration (prompt/plan:
data-swarm-3-prompt.md/data-swarm-3-plan.md) — executes II's pairs-catalog backlog. API extensions: commits/detail gainsfiles+hour; ai-usage gainsmicroscope(busiest day at session-minute grain)./pages/data-swarm-3-ideas(registered), 8 plots. Solid: governance ratio (PR-merged vs direct-push per week — 45% overall, sharply split by repo: product reviews, design pushes direct; the thesis metric applied to ourselves), verbosity (msgs×tokens per session by model, tok/msg guides), commit shape (files×lines, wide-shallow vs narrow-deep), claims vs evidence (words×citations per digest story, avg line — honesty discipline measured). Out-there: promise tracker (every in-flight item auto-arced to its fate via word-overlap against later issues — landed/still-moving/went-quiet, status-colored; "quiet is a debt the next digest owes"), two clocks (radial 24h dials: AI generation vs code landing), the microscope (Jul 27 at message grain — 333 session-minute marks across 21 sessions, granularity's far end), the north star (deliberately empty: cumulative tokens × edges closed, 0 closures — ghost mark "the first closed edge draws here" as commitment device). Coda lesson: progress metrics impress, accountability metrics convert. SSR-verified: 598 marks
- Thread documentation convention (2026-08-13): each ad-hoc thread now persists
<thread>-prompt.md(verbatim) +<thread>-plan.mdalongside its artifacts — added to the canonical cycle-manager agent (sister-project sync pending); retro-applied across c62 (data-sources.md→visibility-stream-prompt.md; prompt files added for partner-ideas, partner-board, partner-board-max, arcade-organism)
- Two-track expansion (2026-08-10): program forked into Track 1 — Qkit, the unified event stream as a product for solution providers (in talks: Cisco, F5, Vanta; no dashboard, they build their offerings on the stream) — and Track 2, the qcontrol dashboard as product for operating companies (itself built on Qkit). Demo strategy: one dashboard demo serves both audiences, then lands on a tracks page outlining the differences + arrangement. Names are working names. Decisions: explore page options c61-ideas-style; mock-first (qdash wiring is follow-on).
- Precedents-research pass (2026-08-10):
precedents-research/— ~40 real programs across four categories (design-partner, insider/early-access, platform/ISV, founding-customer deal mechanics), all source-linked + spot-verified, with a cross-category feature matrix and implications mapped to program-structures + two-track docs. Headlines: nobody ships a partner portal (function = toggle + chat + changelog — portal must be additive to the human channel); free-vs-paid is the only live disagreement, everything else near-consensus; platform programs launch with small named cohorts; the attribution ledger is the best-precedented portal section. Anchor artifacts: Common Paper DPA (benchmark data), EchelonGraph's public program spec (eBPF-adjacent), Sierra's 100%-conversion retro, Connect with Confluent (closest Qkit analog)
c61 Integrations & Teams
- integrations-ideas-v2 through v9 (2026-08-13): Five successive refinement iterations exploring JTBD-first reframing, capability-first middle grounds, compact and scalable catalog layouts, and affordance matrices. v2 (operator truth table + ledger framing), v3 (operating outcomes lead), v4 (affordance pass), v5 (simplified four-intent setup), v6 (capability-first), v8 (compact with modal), v9 (scalable catalog with sources/enrichment separated, five-to-six vendor categories, search modal, request path, local SVG marks for branded connectors). v7 discarded (responsive rail collapse at intermediate widths).
- Layer extractions (2026-08-13): Published
@qpoint-io/q-nuxt-layerv0.9.10 with IntegrationCard (components/integration/Card.vue) and IntegrationLogo (components/integration/Logo.vue — id-resolved brand logos rendered as, immune to gradient-id collisions and recoloring). 20 third-party logo SVGs migrated into layer assets/svgs/third-party-logos/. New semantic tokens: surface-logo (white chip background for brand logos, both modes) and surface-sunken-deeper realigned (grey-200 light / grey-800 dark). Gear icon added to layer. Both components documented in design site component registry (new Integration group) with interactive demos.
- Shipped to product (2026-08-13): Replaced "Projected outbound connectors" section of qcontrol qdash
/integrations(branch feat/control-center) with v10 treatment. Typed connector catalog (app/lib/integrations.ts, 11 connectors incl. new generic Custom webhook + S3-compatible storage). Per-connector detail/config pages at /integrations/with live severity routing for channel-backed connectors via /api/channels. Channel-backed connectors flip to active stat cards only when a routing row is genuinely authored.
- integrations-ideas-v10 (2026-08-13):
/pages/integrations-ideas-v10— visual treatment refinement applied to v9 catalog. Heavy-rule category sections (title + 3px rule). Active connectors promoted to primary-bordered stat cards (logo cell / name + "active" / value-label stats / gear config rail). Available connectors as recessed add-rows with dashed borders + buttons. View-all expands in place (browse modal removed). Collapsed sections show fixed count (COLLAPSED_ITEM_COUNT=3) with actives always shown, inactives filling remaining slots. Request link always visible.
- integrations-ideas-v11 (2026-08-13):
/pages/integrations-ideas-v11— same visual treatment as v10 with each category contained in a bordered bg-surface card instead of heavy-rule headings. Tested for alternative container framing.
- Taxonomy convergence (2026-08-13): Both qdash and design-site catalogs now share five capability headers replacing outbound routing: Sources & enrichment (inbound; Okta/Entra reframed from outbound "map to IdP" to inbound enrichment), Security & observability, Notifications & response, Remediation tracking, Evidence & compliance. Practitioner keywords (SIEM, GRC) moved into why-lines for each capability.
c65 control-center-v2
- Kick-off + decisions (2026-08-12): vocabulary = Policies above Controls; framework catalog = union of 12 (rules.rs PACKS ∪ frontend catalog — adds HIPAA/GDPR and NIST CSF/ISO 27001 to one list); config pages = one page per policy leaning on ~5 shared shape templates; custom-control engine kept as a de-emphasized escape hatch.
research-frameworks.md(2026-08-12): per-framework runtime-addressability analysis for all 12 (provable/attestation/out-of-scope per IA doc §7.5,ok/partial/outfits following the OWASP LLM01–10 exemplar), a reverse view ranking policies by compliance weight (P8 Credential Protection carries 9 frameworks; P10/P1/P2/P9 next), findings R1–R6 (framework-list drift, hipaa/gdpr missing fromvalid_pack(), casing drift, crosswalk too coarse, only OWASP LLM has a requirements mapping, framework kind should shape the UI).
policy-definitions.md(2026-08-12): the canonical roster — 17 policies (P1–P17) in 5 categories (adds Cost & Consumption to /policy's 4), each with purpose, executable underlying rule (rules.rs vocabulary), config shape + fields, defaults (seeded-backed → on), severity, remediation, 12-framework matrix, provenance. Config-shape taxonomy: list editor (P5/P6/P10/P14), threshold (P15/P16/P17), level select (P7/P11), detector list (P8/P9/P12/P13), toggle + exceptions (P1–P4). Exceptions replace enforcement modes — scoped, reasoned, expiring carve-outs instead of the Audit/Enforce cascade. Capability gaps fed back to qcontrol: G1 no negated set operator (allow-lists need the egressallowlistedderived-flag pattern), G2 no injection/PII detector families oncontent, G3 hipaa/gdpr unrecognized packs. Not carried forward: targets/campaigns, the /policy cascade, per-framework control toggles.
/pages/policy-catalog(2026-08-12): the main mock (app/pages/pages/policy-catalog.vue, registered) — 12-framework toggle grid (kind icon, live completeness bar, per-framework "N gaps — enable" bulk close), 4-tile posture rollup (posture % = active ÷ required across active frameworks), categorized policy table in the /policy toggle idiom with Enforcement/Alerting columns replaced by compliance chips (active-framework requirements, red when the policy is off = gap), mono underlying-rule line per row, Configure→ links to the config pages, quiet custom-controls footer. One shared reactive model — framework toggles, policy toggles, gaps, and posture all recompute live.
- Config shell + 5 shape components (2026-08-12):
app/components/policy-config/(site-local; layer extraction deferred) —Shell(back-link, name + activation toggle, meta strip with SecuritySeverity + satisfies chips,<details>underlying-control disclosure, body dims when inactive, remediation footer),Exceptions(shared section on every policy — scope/value/reason/expiry with add/remove),ListEditor(mutates the passed reactive array so page-level flows can push into it),Threshold(ceiling/floor viadir, observed-value breach state),LevelSelect(ordered floor, below-floor blast-radius preview),DetectorList(families, per-detector toggle + severity + 24h hits, enable-all).
- 17 config pages (2026-08-12):
policy-config-<slug>.vuefor P1–P17, all registered — thin shell+shape instantiations from the P-id specs. Deep exemplar =policy-config-egress-allowlist(the prompt's named case): pending non-allowlisted destinations (83-match c64 snapshot framing) with a live approve→list flow, scoped entries (global/host/agent per EgressDecisionModal). Toggle-shaped pages carry a live status band (shadow installs, static-key runs, root runs, never-ask runs). Verified: all 18 routes 200 on the running dev server, SSR content present, no stale classes. Two vocabulary fixes along the way:error-surface/warning-surfacedon't exist in the layer tokens (swapped forerror/10-style tints) and there is noarrow-lefticon (back-link uses the precedent's‹character).
- Catalog iteration (2026-08-12): "Show inactive (N)" toggle on the framework strip header — hides non-activated framework cards, live count, defaults to showing all. Later same-day passes: description into its own column (4-col table), shrink-to-fit Policy/Config columns (width:1% + nowrap), align-middle rows, bare-dash empty state replaced with "N mapped frameworks — none active" text, Compliance column header renamed by Mark.
/pages/compliance-frameworks(2026-08-12): visual-semantics iteration page (compliance-frameworks.vue, registered) — the policy-catalog framework grid duplicated as baseline with the kind label dropped and ComplianceFrameworkIcon replaced by the new compliance-shield art (via<img>, own brand purples). Inactive state got its own grey-variant svg (compliance-shield-grey.svg, light half #d4d4d4 — a filter can't split the two halves). Iteration same-day: V2 "surface semantics" set added (shared state with V1) — active = white card + grape-400 border, inactive = dashed stroke-strong border onsurface-sunken-subtle(one step lighter than the page'ssurface-sunken); gaps tag → "Enable Required Policies" outline button; progress bar de-semanticized (grey-400 fill via inline style — arbitrary Tailwind classes aren't generated on this page — grape-500 only at 100%); toggle micro→tiny with-mr-3flush-right fix (UxToggle keeps its label wrapper's pl-2 + root gap-1 even with an empty label slot — layer nit worth fixing upstream).
- Layer fix — UxToggle empty-label gap (2026-08-12):
q-nuxt-layer/components/ux/Toggle.vue— the label wrapper div rendered unconditionally, so a label-less toggle carried a 12px phantom on the right (wrapperpl-2+ rootgap-1as an empty flex item). Root cause of the V2-card alignment issue; the root'sinline-flexis load-bearing (track/label row, items-center, gap, reverse mode) and must stay. Fix:v-if="$slots.label"on the wrapper. The-mr-3page hack removed; labeled toggles verified unaffected. Rides along with ComplianceTag in the next layer release.
/pages/policy-catalog-v2(2026-08-12): expand-row variation (policy-catalog-v2.vue, registered, non-destructive) — Config column dropped to a 3-column table; each policy row is aUxTableListExpandRowwhose card carries the underlying rule (mono, sunken box + custom-control escape hatch), the FULL framework mapping as small ComplianceTags (inactive frameworks dimmed at 40%, error state only when an active framework is unmet), severity + P-id + maturity + remediation, and the "Open config page →" link. Activation toggle wrapped in@click.stopso it doesn't fight the row expand. Framework strip/posture rollup identical to v1.
/pages/policy-catalog-v3(2026-08-12): inline-config variation (policy-catalog-v3.vue, registered) — direct duplicate of v2 with the expand row hosting the policy's ACTUAL config controls: shape components (<component :is>over a shape→component map — explicit imports, since resolveComponent can't see auto-imports) + the shared Exceptions section, fed by the same config snapshots the policy-config-* pages carry (CONFIGS/EXCEPTIONS keyed by P-id). Identity strip (rule · severity · P-id · maturity · escape hatch) above the config; config dims at 50% when the policy is off (the config-shell idiom). Poses the open question: do the standalone config pages survive, or is the catalog the config surface?
- Gap-cluster + pill polish (2026-08-12): exclaim circle sized up to h-5 with an italic muted "Required" label after it (gap rows only); Beta pill iterated warning-amber → grey → light blue → grey body with a
#318bc4/60% blue border (Roadmap = full grey) — blue applied via style binding since one-off arbitrary color classes don't generate on pages;#318bc4is a token candidate if a layer blue ramp ever lands.
- ComplianceTag gap variant (2026-08-12): third state on the tag —
gap: muted grey pill + grey shield for required-but-off, with ONE page-side exclaim circle (UxIconexclaimin a red-tinted rounded-full span) placed inline after the tag cluster rather than marking every tag. All three catalog pages swapped from:errorto:gap+ cluster exclaim; the rederrorvariant remains for loud failure contexts. Demo + registry docs updated.
- ComplianceToggleCard extraction + component docs (2026-08-12): the settled framework card extracted to the layer as
compliance/ToggleCard.vue(props name/active/percent/satisfied/required/gaps/gapTitle, emits toggle + enable-gaps; shield art from layer assets, grey bar fill inline to dodge consumer-scan issues); both grids (policy-catalog,compliance-frameworksV2) now consume it — V1 stays inline as the baseline artifact. ComplianceTag gainederror(red two-tone shieldcompliance-shield-error.svg+ error border/text) andsize('small' | 'medium', UxToggle convention); small got a py bump; catalog table gap chips →<ComplianceTag size="small" error>. Both components documented: newcompliancegroup in component-registry (also fixes ComplianceFrameworkIcon's dangling group id), registry entries with coverage, interactive demos (_demos/ComplianceTag.vue,_demos/ComplianceToggleCard.vue), and a Compliance section on the /components visual index.
- Layer component — ComplianceTag (2026-08-12):
q-nuxt-layer/components/compliance/Tag.vue— small reusable compliance tag: shield mark + framework name in a grape-50 pill (grape-400 border, grape-600 bold label), optionalremovable✕ emitting@remove, label via default slot. Shield asset resolved from the layer's own assets at build (?urlimport, AgentPawn pattern). Demo strip added to/pages/compliance-frameworks(static, removable, and live-wired tags that deactivate frameworks on remove). Confirmed the design dev server runs NUXT_LOCAL_LAYER (picked the component up without a release). Not yet in a layer release — run /release-layer (→ v0.9.8) before tarball consumers can use it; component not yet added to the design-site component docs.
- qcontrol application (2026-08-12):
qcontrol-application.mdwritten (reuse model, hybrid persistence map, backend backlog B1–B8, supersession map). The six policy-config components extracted to the layer as controlled components (emit contracts: add/remove/change/toggle/toggle-all/floor; arbitrary classes → inline styles; Shell gained the white bg-surface content box + backTo/backLabel props + ComplianceTag satisfies chips) — design locals deleted, all 17 config pages + v3 rewired to the new contracts (v3 imports via#components), registrypolicy-configgroup + 6 entries + 6 demos added. Layer v0.9.8 released (commit 4708cf2, tag-driven CI publish, all 5 consumer lockfiles re-resolved — qcontrol's git#main ref included). qdash c13 executed:/controlsreplaced by the policy catalog (framework strip + 17-policy expand-row table + custom-controls escape section),/policydeleted, onecontrols/detail.vue(?policyId=) serving all policies, hybrid persistence (egress via/api/egress-decisions, P15/P17 thresholds via real control rule rewrites with dry-run, rest viausePolicyStatelocalStorage). Verified: 11/11 headless DOM checks, live API round-trips, 137 vitest, dist regenerated. Seeqcontrol crates/qdash/ui/cycles/c13.control-policies/CYCLE.md.
c64 control-center-consolidation
- V5 (2026-08-11, based on V4): three sections — V4's read header · condition (one-line, UxAddBtn) + clickable severity chips + Category selector (all 8 GovernSheet categories, .ctl-style select with helper caption, forms-plugin chevron) · third section with the GovernSheet's FULL option sets (all 7 decisions with hints, remediation input, all 5 when-it-happens actions incl. require-approval/route with proj marks, all 10 Satisfies packs editable), save beneath. Edit state extended (sev/remediation/approval/route/packs) — shared across variations
- Condition adding wired (2026-08-11): edit model refactored to a clause array; V4 + V5's UxAddBtn appends an AND clause (signal-appropriate default field via a FIELDS-per-signal map, per-clause ✕ remove, 4-clause cap mirroring GovernSheet); first-clause field select upgraded from single-option to the signal's full field list
- V5 refinements (2026-08-11): Category moved from section 2 to section 3 left column (above Remediation, GovernSheet order); Save control right-aligned
- Idea 3 shipped to qdash (2026-08-11):
qcontrol/crates/qdash/ui/app/pages/controls.vue— the packs card grid replaced with the managed-list picker (enabled-only removable chips in qdash's primary tint + SentenceSelect add-pill over the not-yet-enabled remainder). Panel title/count/intro/localStorage persistence unchanged; add flows through togglePack so persistence stays in one place. Uncommitted in the qcontrol working tree. First qdash code change of c64 (scope extended by Mark). Note: still the 6-pack list — expanding to the full 10-pack rules.rs vocabulary is consolidation-plan item 2, deliberately not smuggled into this UI change/pages/framework-picker-ideas(framework-picker-ideas.vue, registered) — four compact alternatives to the /controls pack-card grid, rendered against the current grid as baseline at the TRUE 10-pack catalog size (the shipped panel shows 6 — an F2 drift). One shared enabled-set across all variations. Idea 1 toggle chips (all options visible, ~6× less vertical), Idea 2 popover picker (one-line closed state, enable-all), Idea 3 enabled-only + SentenceSelect add-pill (managed-list steady-state), Idea 4 GovernSheet-style checkbox wrap (panel and sheet would read identically)
- Layer change — ExpandSection wraps text (2026-08-11):
UxTableListsetswhitespace-nowrapon the whole table (cell behavior), which expand-card content inherits — long captions then set the column's min-content and overflow the card padding (seen on V5's Satisfies caption). Fix:ExpandSectionroot now carrieswhitespace-normal— expand cards are prose-shaped, not cells. Benefits every ExpandSection consumer
- Layer change — SentenceSelect sizes to current selection (2026-08-11): rebuilt
q-nuxt-layer/components/sentence/Select.vueon the mirror-span technique — an invisible in-flow span carrying the selected option's label (same font/padding/border metrics) sets the pill width, with the select overlaidabsolute inset-0 w-full h-full. First attempt used inline-grid +min-w-0and did NOT work: an auto grid track still sizes to the select's max-content (its widest option) — the select must be out of flow entirely. Selected label read fromselectedOptions[0].text(mount/update/change sync; SSR seeds from modelValue). Side-find: the ⌄ chevron on these pills comes from the layer's@tailwindcss/forms(base strategy) background-image, not the component —appearance-nonenever affected it, so the component's appearance-suppression was dead code (removed). Chevron reserve slimmed pr-12 → pr-8 (~8px gap between content and the forms-plugin chevron at right 0.5rem)
- Layer change — SentenceText de-greedied (2026-08-11): removed the hardcoded
flex-1 min-w-[200px]fromq-nuxt-layer/components/sentence/Text.vue; the pill now sizes to content via the nativesizeattribute (content length, falling back to placeholder length, floor 4) so it sits inline in a sentence like the other pills. Call sites wanting fill passclass="flex-1". Affects all consumers at next layer release — check NotificationRuleCard-style URL fields when bumping
- V5 shipped to qdash (2026-08-11):
qcontrolcommit376baabbonfeat/control-center—/controlsexpand row is now the three-section V5 card (ControlExpandCard.vue), replacing the link-list details and the edit-via-modal path for existing controls. Faithful to the mock with reality corrections: vocabulary-backed fields/signals/ops/decisions instead of the mock's hardcoded lists, staticand(backend rules are AND-only — the mock's and/or pill was aspirational), GovernSheet's dry-run preview kept under the sentence, section-1 header shows saved values not the draft. Table gains the category column (5 cols, actions kept per Mark). Hygiene rode along: GovernSheet's authoring engine extracted touseControlDraft(modal + card share it; props/emits contract unchanged so policy.vue promote is untouched), shareduseControlVocabcache, realControlinterface + testedsevNorm/hasAlertinlib/control.ts,.projdeduplicated intoProjMark.vue, and the mock's denserowRefscallback-ref pattern dropped entirely (DataTable'sbareDetails+ slot-scopedclosecovers it). Two latent bugs fixed in passing: the dry-run timer now clears on unmount, and the follow-the-rule watchers areimmediate(the shared vocab cache is usually warm before a card mounts, so vocab-change triggers alone never fired — caught via headless-browser verification: New-control category select rendered empty). Layer released as v0.9.7 (the three sentence/ExpandSection changes above); all consumer lockfiles refreshed. Verified end-to-end in headless Chromium against the live backend: expand/dry-run/severity/add-remove clause/close-X/save-as-copy round trip + New-control modal, zero console errors;dist/regenerated via the isolated build.
- Iteration direction chosen (2026-08-10): start from the existing controls table and iterate.
/pages/control-center(app/pages/pages/control-center.vue) — 1:1 replica of qdash /controls: template + helper logic copied verbatim (same layer DataTable), Panel/PageHeader chrome inlined, live-data snapshot from /api/controls + /api/security (12 seeded controls, 107 findings, match counts egress 83 · quota 19 · shadow 4 · budget 1), pack enablement as a ref standing in for localStorage; GovernSheet/downloads/cross-links stubbed with titled affordances
c63 qdash Page Status Grid
- 2026-08-10 —
page-status.csv: 22-row grid (6 non-experimental pages + all Inventory sub-pages/details) scored across alive / nuxt skin / design pass / manual fine tuning. Page list from qdashAppSidebar.vueNAV, experimental (EXP) entries excluded, ACT section dropped.
Captures
398 screengrabs taken this week, 2 of a subject with an evolution history.
The company-wide AI ecosystem inventory map — agents, repos, files, MCP, tools








MagicaVoxel .obj actor models — palette-aware import and lighting studies








Deterministic 10-second session replay — actors and flows arrive on a phased timeline








AI-agent visual language — session graphs, infra map, capability surface, inventory








Thirteen competing strategies for drawing zone boundaries in 3D
Virtual-grid layout engine — recursive bin packing decoupled from rendering
Composable flow decorators — ArrowIndicator and PulseIndicator
Organic shape language — noise blobs, squircles, breathing animation








Live qcontrol events — agents pulsing to typed event nodes, growing timeline








Screenshot staging — visibility toggles and grid spacing for clean plates








AI Agents and Users as first-class actor types (icosahedron agents, sphere+cone users)








Single-dataflow detail with per-actor context toggling








Schema-driven DevConfigurator — the control panel renders itself from a typed config








QMapDataflow wrapper — tag-driven context grouping with exportable props
One agent session as an entity-type topology (QMapAgentSession)
qcontrol runtime telemetry reduced into a session map (reducer + live bridge)
Live qcontrol stream — SSE bridge, MCP actors, tool-call flows from the extended reducer








Post-transplant baseline — the visualization renders and plays
Scroll-to-zoom and click-drag panning on a responsive canvas








Layout strategies compared — packed grid, pyramid, circular, grid, arc for both ends
Node identity — labels, shapes, favicons for network entities
Live traffic — dynamic node discovery, activity-based sizing








Trail-based pulses — gradient directionality via MeshRope rendering








Layout system — arc packing, radial destinations, growth relayout








Label system — position, color, and background controls (first DevControls build)
Actor-based scenarios — typed actors with rich metadata, type-colored nodes








Four distinguishable actor mesh archetypes with states and labels
Curved bezier traffic flows — thickness is volume, color is protocol
Runtime tag-based regrouping with animated boundary morphs








Click-to-focus camera framing + isometric↔top-down angle control
Flat-overview → 3D-detail camera morph as the focus signal
Nested infrastructure — Cloud → Region → Cluster → Namespace → Node → Pod
Pluggable layout strategies — grid vs spiral blob packing inside rugs
Incremental scene diffing — actors animate in, out, and to new positions
Three coexisting view modes — topology, group-by-tag, geography
MCP server fleet views — flat, usage-sized, and callers







Google-Maps-style semantic zoom — Company → Teams → Apps by clicking
View contexts — wrapper components that pre-configure QMap (QMapPolicyViolation)


Releases & deploys
Layer releases 4
Design-site deploys 0
No deploys recorded this week.
Note: Deploys come from this checkout's deploy-branch reflog, which starts 2026-10-16.














































































































































































































