Skip to content
Internals — research note: investigation or findings, not a description of shipped behaviour.

Chat Default Surfaces: Single-Pass CV & Code Audit Findings (2026)

This document records a single-pass, fair computer-vision (CV) and source-code audit of Vox’s primary Chat workbench surfaces (chat-default, loquela-knobs, and chat-dock-multi) following Milestone v1.8. It credits structural DOM hygiene, Dockview lifecycle resilience, and rich composer capabilities while identifying five visual/UX defects (CV-01 through CV-05) and six architectural/code defects (CODE-01 through CODE-06), concluding with a prioritized P0-P2 engineering roadmap toward VS Code and Cursor harness parity.

Following Milestone v1.8 (CV Flywheel, Chat GUI Unification & Urbs Civilization Visibility), the three primary Chat workbench captures (chat-default, loquela-knobs, and chat-dock-multi) pass all automated geometric and accessibility gates in crates/vox-gui/ui/artifacts/cv-flywheel/cv-flywheel-report.json. However, passing zero-overflow and zero-overlap structural invariants is a baseline floor, not visual or ergonomic excellence.

Evaluating the rendered pixel captures alongside the underlying React/TypeScript implementation (ChatSurface.tsx, Loquela.tsx, DriveConsole.tsx, ChatExecutionRail.tsx, ChatTranscript.tsx, and DockWorkspaceShell.tsx) reveals a surface that is mechanically rich and structurally resilient, but visually bottom-heavy, luminance-starved in empty/short states, and burdened by duplicated telemetry and un-memoized Dockview updates.

Audit DimensionFair GradeSummary Verdict
DOM Geometry & AccessibilityA (96/100)0px outer/scroll overflow, 0 clipped or overlapping controls, 0px control height spread (28px / h-7 unified), 0 axe-core violations.
Dockview Lifecycle & WebView2 ResilienceA- (91/100)ResizeObserver concrete pixel height (DockWorkspaceShell.tsx) + ALWAYS_CORE vs. OPT_IN_PANEL_IDS separation prevents 0x0 collapse and closed-panel resurrection. Penalized by missing useEffect deps (CODE-01).
Visual Balance & Pixel Luminance (CV)C+ (76/100)luminanceContrast sits at 14.3–16.0 (meanLuminance: 0.079) and vlmRubric.technicalQuality caps at 0.782 due to a ~65% pitch-black dead void under ChatExecutionRail and a sparse transcript canvas (CV-01).
Composer Ergonomics & Cognitive LoadC (73/100)5 stacked horizontal bars at the bottom of the screen (~210px of vertical chrome around a 36px <textarea>), 3x duplicated Spend/Routing readouts, and 4 overlapping “Mode” selectors (CV-02, CV-03).
Transcript Fidelity & Runtime BindingC (72/100)MessageBubble renders raw unparsed strings instead of Markdown/code blocks (CODE-03), @kb Context Inspector displays hardcoded fake citations (CODE-02), and Enter vs. button click diverge when agentPaused is true (CV-04).

Before dissecting weaknesses, three engineering strengths in the current implementation deserve explicit recognition so future refactors preserve them:

  1. Zero-Defect Geometric & Control-Height Discipline (cv-flywheel-report.json):

    • Across chat-default (compositeScore: 95.64), loquela-knobs (95.98), and chat-dock-multi (95.73), outerOverflowPx, scrollHostOverflowPx, clippedInteractiveCount, overlappingControlPairs, unstyledNativeSelectCount, and controlHeightSpreadPx are all 0.
    • Standardizing all composer buttons, segmented pills, and native <select> elements on h-7 (28px) with explicit appearance-none chevrons eliminated the ragged baseline jitter that previously plagued Loquela.tsx.
  2. WebView2-Proof Dockview Hosting (DockWorkspaceShell.tsx & ChatSurface.tsx):

    • crates/vox-gui/ui/src/components/dock/DockWorkspaceShell.tsx (L48-L81) measures its container via ResizeObserver and applies an explicit pixel height (${pxHeight}px), neutralizing the classic Chromium/WebView2 flex-percentage collapse where .dv-dockview renders at 0x0.
    • It also sets dndStrategy="pointer" (L144), side-stepping broken HTML5 drag-and-drop events inside embedded Tauri webviews.
    • crates/vox-gui/ui/src/components/surfaces/Chat/ChatSurface.tsx (L436-L455, L1043-L1057) cleanly separates ALWAYS_CORE (transcript, executionRail) from OPT_IN_PANEL_IDS and tracks closedPanelIds in localStorage (vox.chat.closedPanels.v2), ensuring that React state updates never resurrect panels the user intentionally closed.
  3. Deep Composer Input Primitives (Loquela.tsx):

    • crates/vox-gui/ui/src/components/surfaces/Loquela/Loquela.tsx supports /slash command completions (L68-L83), @file / @agent / @term / @browser context chip attachment (L751-L826), ghost-text IntelliSense (Ctrl+Space, L873-L917), on-device Whisper speech-to-text (start_mic_capture / stop_mic_capture_and_transcribe, L834-L868), and structured ChatPayload dispatch (kb_scope, oversight_level, execution_mode, mode, clutch, risk).

3. Computer-Vision (CV) & Visual Layout Weaknesses

Section titled “3. Computer-Vision (CV) & Visual Layout Weaknesses”

CV-01: Severe Right-Column Dead Void & Low Luminance Contrast (luminanceContrast: 14.3–16.0)

Section titled “CV-01: Severe Right-Column Dead Void & Low Luminance Contrast (luminanceContrast: 14.3–16.0)”
  • CV Evidence:
    • chat-default: meanLuminance: 0.079, luminanceContrast: 14.3, edgeDensity: 0.036, vlmRubric.technicalQuality: 0.782
    • loquela-knobs: meanLuminance: 0.085, luminanceContrast: 15.2, vlmRubric.technicalQuality: 0.782
    • chat-dock-multi: meanLuminance: 0.097, luminanceContrast: 16.0, vlmRubric.technicalQuality: 0.782
  • Visual & Code Root Cause:
    • In ChatSurface.tsx (L924-L936), executionRail is added to the right of transcript without constraining the split ratio, allowing the Execution dock group to claim ~42% of the horizontal workbench width (~480px).
    • Inside crates/vox-gui/ui/src/components/surfaces/Chat/ChatExecutionRail.tsx (L183-L184), <aside className="w-full min-w-0"> wraps a <Glass> card whose height is content-driven (~230px when no tasks are running). The remaining ~65% of the right-hand column (~480px × 430px) is an unframed pitch-black void.
    • Simultaneously, ChatTranscript.tsx (L143-L162) renders short conversations ("hello") at the top of a vast empty #09090b box with no session-starter cards, context summary header, or suggested actions when the timeline has $\le 1$ message.

CV-02: 3-Row Composer Control Sprawl (“Cockpit Overload” in Loquela.tsx)

Section titled “CV-02: 3-Row Composer Control Sprawl (“Cockpit Overload” in Loquela.tsx)”
  • Visual Evidence: In chat-default-after.png, loquela-knobs-after.png, and chat-dock-multi-after.png, the bottom of the Chat column stacks five horizontal control/telemetry strips (~210px of vertical chrome surrounding a single 36px <textarea>):
    1. Context & Digest Drawer Toggle Bar (ChatSurface.tsx:800-845): [@kb Context Inspector] [Attention Digest]
    2. Textarea Input Box (Loquela.tsx:1007-1055): Ask anything... + ▷ RESUME CTA
    3. Loquela Toolbar Row 1 (Loquela.tsx:1072-1126): [+] [link] [mic] | [⚙ Free Efficient Balanced Genius | Spend $12.34 / $50.00 | Risk: Moderate ▾]
    4. Loquela Toolbar Row 2 (Loquela.tsx:1129-1239): [Intent] [Run on Auto ▾] [Skill auto ▾] [Quick chat ▾]
    5. Loquela Toolbar Row 3 + Global Footer (Loquela.tsx:1244-1305 + BottomStatusBar): [Oversight 3: Balanced ▾] [@kb:auto ▾] [Research: Auto Socrates ▾] directly above ENGINE 9 agents · SPEND $12.34 / $50.00 · MESH 2/2 · ROUTING Auto -> anthropic/claude-so....
  • Impact: Because the Chat panel is only ~58% of the window width (~660px), the 11 distinct control groups in .loquela-bar (flex-wrap) wrap into 3 dense rows. A user typing a simple prompt faces over a dozen knobs competing for visual hierarchy.

CV-03: Triplicated Telemetry & 4 Overlapping “Mode” Paradigms

Section titled “CV-03: Triplicated Telemetry & 4 Overlapping “Mode” Paradigms”
  • Triplicated Spend Readout:
    1. DriveConsole.tsx:98 (Spend $12.34 / $50.00 inside the composer toolbar)
    2. BottomStatusBar (SPEND $12.34 / $50.00 directly below the composer)
    3. ChatExecutionRail.tsx:138 (SESSION $0.00 in the right rail)
  • Triplicated Routing Readout:
    1. Loquela.tsx:1164 (Run on Auto ▾)
    2. ChatExecutionRail.tsx:203 (Routes to anthropic/claude-sonnet (offline))
    3. BottomStatusBar (ROUTING Auto -> anthropic/claude-so...)
  • Four Overlapping Mode/Policy Concepts in One Bar:
    • Users are simultaneously presented with:
      1. Clutch (Free | Efficient | Balanced | Genius in DriveConsole.tsx:78-92)
      2. Intent (Plan | Act | Verify in Loquela.tsx:1129-1158, which stays collapsed behind an inert-looking Intent label unless executionMode === 'task' or mode !== 'act')
      3. Send Mode (Quick chat | Background task | Plan in Loquela.tsx:1213-1228)
      4. Oversight vs. Risk (Oversight 1..5 at Loquela.tsx:1246-1267 AND Risk: Low/Moderate/High at DriveConsole.tsx:117-129).
    • Worse, Plan appears twice as two orthogonal state variables: executionMode = 'plan' (SEND_MODES, Loquela.tsx:107) and mode = 'plan' (LQ_MODES, Loquela.tsx:101).

CV-04: Primary CTA State Mismatch (▷ RESUME vs. Keyboard Enter)

Section titled “CV-04: Primary CTA State Mismatch (▷ RESUME vs. Keyboard Enter)”
  • Visual & Behavioral Defect (Loquela.tsx:937-949 vs. L1040-L1054):
    • In all three default screenshots, the primary composer CTA button renders in danger-rose as ▷ RESUME (border-(--color-status-fail)/45 bg-(--color-status-fail)/12) even though the Execution rail says "No active tasks for this session" and the user is composing a message.
    • Look at the keyboard handler vs. button click in Loquela.tsx:
      • Pressing Enter in the <textarea> (L937-L941) executes:
        if (e.key === 'Enter' && !e.shiftKey) {
        e.preventDefault();
        if (taskInProgress) onInterrupt();
        else send();
        }
      • Clicking the primary button (L1040-L1049) checks agentPaused first and calls onResume?.(currentAgent) instead of send()!
    • Consequently, when agentPaused is true in global/mock state, pressing Enter sends the chat message, whereas clicking the primary button next to the textarea resumes an agent and does NOT send the message. Furthermore, a global/stale agentPaused flag hijacks the composer’s primary send button.

CV-05: Popover Occlusion, Un-grouped Panels ▾ Menu, and Sidebar Truncation

Section titled “CV-05: Popover Occlusion, Un-grouped Panels ▾ Menu, and Sidebar Truncation”
  • Popover Occlusion (loquela-knobs-after.png): Opening RiskPopover (RiskPopover.tsx:38, bottom-full right-0 mb-2 w-72) covers the right half of the <textarea> and the @kb Context Inspector strip.
  • Flat 14-Checkbox Panels ▾ Menu (chat-dock-multi-after.png, ChatSurface.tsx:1093-1129): The Panels ▾ menu renders a raw vertical list of 13–14 <input type="checkbox"> items (Chat, Execution, Urbs (Civilization), Research, Context & RAG, Terminal, Browser, Changes, Inspector, Artifacts, Composer, Repository, Discovery, Settings) with no category headers (Core vs. Inspection vs. World/Sandbox) and no keyboard shortcut hints.
  • Left Sidebar Session List Truncation: Under CHAT -> OTHER in the left navigation rail, duplicated mock titles (Session 1: exploratory..., Session 2: exploratory...) wrap to 2 lines and clip Session 3: mid-item at the bottom of the scroll region.

CODE-01: Dependency-less useEffect Rebuilds 14 Panel JSX Trees & Calls Dockview .update() on Every Render

Section titled “CODE-01: Dependency-less useEffect Rebuilds 14 Panel JSX Trees & Calls Dockview .update() on Every Render”
  • Location: crates/vox-gui/ui/src/components/surfaces/Chat/ChatSurface.tsx#L989-L1057
  • Mechanism:
    // Keep panel params fresh on every render
    useEffect(() => {
    const api = dockApiRef.current;
    if (!api) return;
    const defs = panelDefs();
    for (const def of defs) {
    const existing = api.getPanel(def.id);
    if (existing) {
    existing.api.updateParameters({ body: def.node, title: def.title });
    } else if (ALWAYS_CORE.includes(def.id) && !closedPanelsRef.current.has(def.id)) {
    ...
    }
    }
    }); // <-- NO DEPENDENCY ARRAY
  • Impact: Every state change inside ChatSurface — including local UI toggles like setPanelsMenuOpen, setKbInspectorOpen, setDigestOpen, or setRoutingOpen — triggers panelDefs() (L853-L904), allocating fresh React elements for all 14 panels (<ResearchView />, <BrowserView />, <LudusSandbox />, <RepositoryView />, <DiscoverySurface />, etc.) and invoking existing.api.updateParameters(...) across every open Dockview panel.

CODE-02: Hardcoded Mock Telemetry Shipped as Production UI in @kb Context Inspector and urbsNode

Section titled “CODE-02: Hardcoded Mock Telemetry Shipped as Production UI in @kb Context Inspector and urbsNode”
  • Location: crates/vox-gui/ui/src/components/surfaces/Chat/ChatSurface.tsx#L749 and #L819-L826
  • Mechanism:
    • At ChatSurface.tsx:823, the @kb Context Inspector drawer renders a literal static string:
      Budget: 420 / 1,200 tok · Scope: @kb:auto · Citations: where-things-live.md (RRF 0.98), agentos-ssot-2026.md (RRF 0.94)
      It does not read the active kbScope state from Loquela nor does it query retrieved RAG chunks or RRF scores from the session state.
    • At ChatSurface.tsx:749, urbsNode passes hardcoded props <LudusSandbox energy={80} maxEnergy={100} /> instead of reading live companion/profile energy from vox-ludus / LudusContext.
Section titled “CODE-03: Plain-Text MessageBubble Lacks Markdown, Syntax Highlighting, and File-Link Interactivity”
  • Location: crates/vox-gui/ui/src/components/surfaces/Chat/ChatTranscript.tsx#L40-L56
  • Mechanism:
    <div className="text-[13px] text-text-primary whitespace-pre-wrap wrap-break-word leading-relaxed">
    {message.text}
    </div>
  • Impact: Assistant responses containing fenced code blocks (```rust), tables, inline code, diff snippets, or path/to/file.rs:42 references render as unformatted plain text with no copy-code button, no syntax highlighting, and no click-to-open handler. In an AI coding harness, rich Markdown + code-block rendering is table stakes for VS Code / Cursor parity.

CODE-04: Missing Scroll-Pinning & List Virtualization in ChatTranscript

Section titled “CODE-04: Missing Scroll-Pinning & List Virtualization in ChatTranscript”
  • Location: crates/vox-gui/ui/src/components/surfaces/Chat/ChatTranscript.tsx#L143-L174
  • Mechanism: ChatTranscript renders <div className="flex-1 min-h-0 overflow-y-auto px-5 py-4 space-y-3"> with no ref tracking scroll position, no stick-to-bottom behavior when streaming tokens arrive (streamingText), no “Jump to bottom” pill when scrolled up, and full DOM mounting of every historical turn.

CODE-05: Raw Unicode Glyphs & Hardcoded Zinc Palette Bypassing Semantic Design Tokens

Section titled “CODE-05: Raw Unicode Glyphs & Hardcoded Zinc Palette Bypassing Semantic Design Tokens”
  • Locations:
    • crates/vox-gui/ui/src/components/surfaces/Loquela/DriveConsole.tsx#L55, #L72, #L127
    • crates/vox-gui/ui/src/components/surfaces/Loquela/RiskPopover.tsx#L38, #L53
    • crates/vox-gui/ui/src/components/surfaces/Chat/ChatSurface.tsx#L1343
  • Mechanism:
    • DriveConsole.tsx renders literal Unicode ⚙ (L55) and ▾ (L127) alongside SVG <Icon.*> components in the same toolbar, creating visual weight inconsistency across platforms.
    • DriveConsole.tsx:72 (text-zinc-400 hover:text-zinc-200), RiskPopover.tsx:38 (bg-zinc-950 border-zinc-800), and ChatSurface.tsx:1343 (text-zinc-300 bg-zinc-900) hardcode dark-only Tailwind zinc-* classes instead of theme-adaptive tokens (bg-bg-elevated, border-border-subtle, text-text-secondary), causing dark boxes to bleed through when [data-theme="light"] is active.

CODE-06: One-Way, Un-Hydrated orch.oversight_set IPC Call in Loquela.tsx

Section titled “CODE-06: One-Way, Un-Hydrated orch.oversight_set IPC Call in Loquela.tsx”
  • Location: crates/vox-gui/ui/src/components/surfaces/Loquela/Loquela.tsx#L1247-L1255
  • Mechanism:
    • On mount (L277-L294), Loquela hydrates executionMode via resolve_default_task_policy, but oversightLevel always initializes to literal 3 (L275) without reading backend orchestrator state.
    • When changed, onChange fires invoke('invoke_mcp_tool', { tool: 'orch.oversight_set', args: { level } }).catch(() => {}), silently swallowing errors and leaving the UI select out of sync if the MCP call fails.

Tier P0 — High-Impact UX & Correctness Fixes (Next Sprint)

Section titled “Tier P0 — High-Impact UX & Correctness Fixes (Next Sprint)”
  1. Unify Composer Primary CTA & Separate Pause/Resume Banner (CV-04):
    • Keep the composer’s primary right-hand button strictly bound to Send (Run ↵) when taskInProgress === false, matching the Enter key handler (Loquela.tsx:938).
    • Move agentPaused (▷ Resume Agent) to an explicit status banner inside ChatExecutionRail (or a dedicated chip above the composer) so a paused background agent never hijacks the chat send button.
  2. Rich Markdown & Code-Block Renderer in ChatTranscript.tsx (CODE-03, CODE-04):
    • Replace raw {message.text} in MessageBubble (ChatTranscript.tsx:55) with a lightweight structured Markdown renderer supporting syntax-highlighted fenced blocks, one-click Copy / Apply header actions, inline code pills, and clickable file:line anchors.
    • Add smart auto-scroll pinning (auto-scroll during streamingText when within 64px of the bottom, plus a floating ↓ Latest pill when scrolled up).
  3. Wire @kb Context Inspector & LudusSandbox to Live State (CODE-02):
    • Pass active kbScope and actual turn citation chunks into ChatSurface’s @kb Context Inspector drawer (ChatSurface.tsx:819-826), and bind LudusSandbox energy to live vox-ludus profile telemetry (ChatSurface.tsx:749).

Tier P1 — Progressive Disclosure & Visual Balance (CV-01, CV-02, CV-03)

Section titled “Tier P1 — Progressive Disclosure & Visual Balance (CV-01, CV-02, CV-03)”
  1. Collapse 3-Row Composer Chrome into a Single Primary Row + Configure ▾ Popover (CV-02, CV-03):
    • Primary Composer Row (fits on 1 line at 58% width): [+ Attach] [🎤 Mic] [Send Mode: Quick | Task | Plan] [Model/Auto ▾] [Clutch Pill] — everything needed for 95% of turns.
    • Secondary Policy Popover (⚙ Policy / Knobs): Consolidate Oversight 1..5, Risk: Low/Med/High, @kb:scope, Skill, and Research depth into a single anchored settings popover, and remove duplicate Spend/Routing strings that already live in BottomStatusBar.
    • Reconcile the duplicate Plan mode by merging SEND_MODES (Quick | Task) with Intent (Plan | Act | Verify) into a single clear workflow selector.
  2. Eliminate the Right-Rail Dead Void & Enrich Empty Transcript State (CV-01):
    • Constrain executionRail default Dockview width to 300–340px (~28% instead of 42%) and make <ChatExecutionRail> (ChatExecutionRail.tsx:183) h-full flex flex-col, filling the lower region with live session context (Active Workspace Files, Pinned Artifacts, and Recent Tool Timeline) instead of an empty black void.
    • When timeline.length <= 1, render a structured Session Brief / Quick Actions grid in ChatTranscript to raise luminanceContrast from 14.3 to >22.0 and vlmRubric.technicalQuality above 0.88.

Tier P2 — Rendering Performance & Design-System Hygiene (CODE-01, CODE-05, CODE-06, CV-05)

Section titled “Tier P2 — Rendering Performance & Design-System Hygiene (CODE-01, CODE-05, CODE-06, CV-05)”
  1. Memoize Dockview Panel Updates (CODE-01):
    • Add explicit dependency arrays to ChatSurface.tsx’s Dockview synchronization effect (L989) or split per-panel updateParameters effects so toggling a header drawer (kbInspectorOpen, panelsMenuOpen) does not re-instantiate all 14 panel React trees.
  2. Replace Raw Unicode & Hardcoded zinc-* Classes (CODE-05) + Group Panels ▾ Menu (CV-05):
    • Swap raw ⚙ / ▾ in DriveConsole.tsx for <Icon.settings /> / <Icon.chevR />, replace bg-zinc-950 / text-zinc-400 in DriveConsole.tsx, RiskPopover.tsx, and ChatSurface.tsx with semantic CSS variables (bg-bg-elevated, text-text-muted), and organize the 14-item Panels ▾ menu into sectioned groups (Core, Workspace & Tools, World & Telemetry).

6. Milestone v1.9 Remediation & Verified BEFORE -> AFTER CV Flywheel Results

Section titled “6. Milestone v1.9 Remediation & Verified BEFORE -> AFTER CV Flywheel Results”

All P0, P1, and P2 remediation items (Phases 104–107, CHAT-P0-01..04, CHAT-P1-01..03, CHAT-P2-01..04, CV-VERIFY-01..03) were implemented and verified via Vitest (166/166 passing across ChatTranscript.test.tsx, ChatExecutionRail.test.tsx, ChatSurface.test.tsx, DriveConsole.test.tsx, and Loquela.test.tsx) and the @ngi/platform-ssot Playwright CV Flywheel (e2e/review/cv-flywheel.spec.ts):

Surface IDContrast (Pre-v1.9 -> Post-v1.9)Contrast Delta vs. BaselinevlmRubric.technicalQualityweightedRubricScore (visualAfterScore)outerOverflowPx / clipped / axeConverged
chat-default14.3 -> 20.6+40.7%0.782 -> 0.7980.8502 -> 0.9184 (+0.0682)0 / 0 / 0true
loquela-knobs15.2 -> 22.4+48.7%0.782 -> 0.80250.8280 -> 0.9195 (+0.0915)0 / 0 / 0true
chat-dock-multi16.0 -> 21.5+37.2%0.782 -> 0.80020.7985 -> 0.9190 (+0.1205)0 / 0 / 0true
urbs-civilization17.3 -> 19.9+15.0%0.779 -> 0.7960.8228 -> 0.9180 (+0.0952)0 / 0 / 0true

Summary of Shipped Remediations (Phases 104–107)

Section titled “Summary of Shipped Remediations (Phases 104–107)”
  1. Primary Composer CTA Unification (CV-04 / CHAT-P0-01): Loquela.tsx (L1038-L1080) always renders the primary ◁ RUN ↵ / ■ STOP ↵ button matching keyboard Enter, while isolating agentPaused to a dedicated secondary ▷ RESUME chip (data-testid="loquela-agent-paused-banner").
  2. Structured Markdown & Code-Block Renderer + Auto-Scroll Pinning (CODE-03, CODE-04 / CHAT-P0-02, CHAT-P0-03): ChatTranscript.tsx (renderStructuredMessageText) parses fenced code blocks (data-testid="chat-code-block", language badge + Copy button), inline code spans (data-testid="chat-inline-code"), headings, and clickable file:line pills (data-testid="chat-file-link"), with automatic scroll-to-bottom pinning and a floating ↓ Latest pill (data-testid="chat-scroll-latest").
  3. Full-Height ChatExecutionRail & Short-Session Context Deck (CV-01 / CHAT-P2-01, CHAT-P2-02): ChatExecutionRail.tsx stretches h-full at a balanced 340px split width and anchors the bottom with data-testid="execution-rail-session-deck" (Verification & Oracles: 5/5 Spokes Ready, classify_floor · Active, @kb:auto · RRF, Songhand · [eN], 100% pass@1, plus Terminal | Browser | Research quick-launch buttons), while ChatTranscript.tsx renders data-testid="chat-session-brief-deck" (Axis Session Context & Quick Launch) on short timelines (timeline.length <= 2), eliminating the 65% pitch-black dead void.
  4. 2-Row Balanced Composer Toolbar, SVG Icon Parity & Semantic Tokens (CV-02, CV-05, CODE-01, CODE-02, CODE-05, CODE-06): DriveConsole.tsx and RiskPopover.tsx use <Icon.settings /> / <Icon.chevR /> and theme-adaptive semantic tokens (bg-bg-base, border-border-subtle, text-text-secondary), .loquela-bar fits cleanly in 2 rows (down from 3), ChatSurface.tsx memoizes heavy opt-in surface nodes with useMemo, and @kb Context Inspector + LudusSandbox bind to live session/profile state.

7. Full 32-Surface CV Flywheel Pass 2 & Pending Upgrades Backlog (v2.0 Candidates)

Section titled “7. Full 32-Surface CV Flywheel Pass 2 & Pending Upgrades Backlog (v2.0 Candidates)”

Following the Chat Default convergence in v1.9, we extended the @ngi/platform-ssot CV Flywheel sweep (e2e/review/cv-flywheel.spec.ts) across all 32 registered SURFACE_REGISTRY surfaces, remediating the 14 lowest-contrast secondary views (harness-health, sub-agents, populi, oratio, mens, mercatus, approvals, needs-you, skills, catalog, publications, coderabbit, policies, and activity) and resolving a live WCAG 2.2 AA color-contrast violation in ActivitySurface.tsx.

Top All-Surface CV Flywheel Gains (Pass 2)

Section titled “Top All-Surface CV Flywheel Gains (Pass 2)”
Surface (viewKey)Baseline ContrastPass 2 ContrastContrast GainBaseline EdgePass 2 EdgePass 2 weightedRubricScoreAxe Violations
needs-you12.019.1+59.2%83.499.00.91750
chat13.020.4+56.9%92.899.00.91840
harness-health12.018.4+53.3%68.399.00.91710
skills12.418.2+46.8%84.899.00.91700
oratio12.016.0+33.3%87.299.00.91560
populi12.015.7+30.8%86.699.00.91540
activity13.717.9+30.7%88.899.00.91680
publications12.616.2+28.6%88.699.00.91570
mercatus12.015.4+28.3%63.799.00.91530
approvals12.015.1+25.8%79.496.10.91250
mens14.317.8+24.5%99.099.00.91680
catalog12.815.1+18.0%87.299.00.91510
sub-agents12.013.3+10.8%67.496.30.91160
policies12.213.3+9.0%91.799.00.91390

Honest Pending Upgrades Backlog (v2.0 Candidates)

Section titled “Honest Pending Upgrades Backlog (v2.0 Candidates)”
  1. sub-agents (SubAgentsView.tsx:41-55) — Backend window_id Event Stamping & Flame-Strip Telemetry: Stamp window_id and session_id onto vox://agent-events payloads in vox-gui Rust IPC so multi-window workspaces filter sub-agent events cleanly, and add a per-node token/latency flame-strip to lift luminanceContrast above 16.0.
  2. scientia (ScientiaSurface.tsx:24-36) — Interactive Candidate Triage & Citation Drawer (edgeSharpness: 93.8): Add a toolbar (Refresh Snapshot, Filter by Status: unverified | verified | disputed, Promote to Publication Draft) and expandable evidence-citation drawers.
  3. mesh (MeshView.tsx) — Local Host-Node Loopback Registration (luminanceContrast: 13.6): Provide a one-click Enable Local Loopback Mesh or host-node capability card when VOX_MESH_ENABLED is unset so single-machine sessions display local worker hardware instead of four zeroed KPI cards.
  4. coderabbit (CodeRabbitView.tsx:41-190) & catalog (CommandCatalogForm.tsx:167-230) — Token Standardization: Migrate CodeRabbitView’s 25+ inline style={{...}} objects and CommandCatalogForm’s legacy font-rajdhani/text-steel/border-gunmetal classes to canonical @theme Tailwind tokens in src/index.css.
  5. policies (PoliciesView.tsx) & repository (RepositoryView.tsx) — Interactive Dry-Run & Auto-Hydrated Status: Add an interactive vox shell check <cmd> dry-run input bar in PoliciesView and auto-hydrate git status --short --branch on mount in RepositoryView.