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.
1. Executive Summary & Fair Scorecard
Section titled “1. Executive Summary & Fair Scorecard”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 Dimension | Fair Grade | Summary Verdict |
|---|---|---|
| DOM Geometry & Accessibility | A (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 Resilience | A- (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 Load | C (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 Binding | C (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). |
2. What Works Well (Fair Credit)
Section titled “2. What Works Well (Fair Credit)”Before dissecting weaknesses, three engineering strengths in the current implementation deserve explicit recognition so future refactors preserve them:
-
Zero-Defect Geometric & Control-Height Discipline (
cv-flywheel-report.json):- Across
chat-default(compositeScore: 95.64),loquela-knobs(95.98), andchat-dock-multi(95.73),outerOverflowPx,scrollHostOverflowPx,clippedInteractiveCount,overlappingControlPairs,unstyledNativeSelectCount, andcontrolHeightSpreadPxare all0. - Standardizing all composer buttons, segmented pills, and native
<select>elements onh-7(28px) with explicitappearance-nonechevrons eliminated the ragged baseline jitter that previously plaguedLoquela.tsx.
- Across
-
WebView2-Proof Dockview Hosting (
DockWorkspaceShell.tsx&ChatSurface.tsx):crates/vox-gui/ui/src/components/dock/DockWorkspaceShell.tsx(L48-L81) measures its container viaResizeObserverand applies an explicit pixel height (${pxHeight}px), neutralizing the classic Chromium/WebView2 flex-percentage collapse where.dv-dockviewrenders at0x0.- 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 separatesALWAYS_CORE(transcript,executionRail) fromOPT_IN_PANEL_IDSand tracksclosedPanelIdsinlocalStorage(vox.chat.closedPanels.v2), ensuring that React state updates never resurrect panels the user intentionally closed.
-
Deep Composer Input Primitives (
Loquela.tsx):crates/vox-gui/ui/src/components/surfaces/Loquela/Loquela.tsxsupports/slashcommand completions (L68-L83),@file/@agent/@term/@browsercontext 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 structuredChatPayloaddispatch (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.782loquela-knobs:meanLuminance: 0.085,luminanceContrast: 15.2,vlmRubric.technicalQuality: 0.782chat-dock-multi:meanLuminance: 0.097,luminanceContrast: 16.0,vlmRubric.technicalQuality: 0.782
- Visual & Code Root Cause:
- In
ChatSurface.tsx(L924-L936),executionRailis added to the right oftranscriptwithout constraining the split ratio, allowing theExecutiondock 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 (~230pxwhen 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#09090bbox with no session-starter cards, context summary header, or suggested actions when the timeline has $\le 1$ message.
- In
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, andchat-dock-multi-after.png, the bottom of theChatcolumn stacks five horizontal control/telemetry strips (~210px of vertical chrome surrounding a single 36px<textarea>):- Context & Digest Drawer Toggle Bar (
ChatSurface.tsx:800-845):[@kb Context Inspector] [Attention Digest] - Textarea Input Box (
Loquela.tsx:1007-1055):Ask anything...+▷ RESUMECTA - Loquela Toolbar Row 1 (
Loquela.tsx:1072-1126):[+] [link] [mic] | [⚙ Free Efficient Balanced Genius | Spend $12.34 / $50.00 | Risk: Moderate ▾] - Loquela Toolbar Row 2 (
Loquela.tsx:1129-1239):[Intent] [Run on Auto ▾] [Skill auto ▾] [Quick chat ▾] - Loquela Toolbar Row 3 + Global Footer (
Loquela.tsx:1244-1305+BottomStatusBar):[Oversight 3: Balanced ▾] [@kb:auto ▾] [Research: Auto Socrates ▾]directly aboveENGINE 9 agents · SPEND $12.34 / $50.00 · MESH 2/2 · ROUTING Auto -> anthropic/claude-so....
- Context & Digest Drawer Toggle Bar (
- Impact: Because the
Chatpanel 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:
DriveConsole.tsx:98(Spend $12.34 / $50.00inside the composer toolbar)BottomStatusBar(SPEND $12.34 / $50.00directly below the composer)ChatExecutionRail.tsx:138(SESSION $0.00in the right rail)
- Triplicated Routing Readout:
Loquela.tsx:1164(Run on Auto ▾)ChatExecutionRail.tsx:203(Routes to anthropic/claude-sonnet (offline))BottomStatusBar(ROUTING Auto -> anthropic/claude-so...)
- Four Overlapping Mode/Policy Concepts in One Bar:
- Users are simultaneously presented with:
- Clutch (
Free | Efficient | Balanced | GeniusinDriveConsole.tsx:78-92) - Intent (
Plan | Act | VerifyinLoquela.tsx:1129-1158, which stays collapsed behind an inert-lookingIntentlabel unlessexecutionMode === 'task'ormode !== 'act') - Send Mode (
Quick chat | Background task | PlaninLoquela.tsx:1213-1228) - Oversight vs. Risk (
Oversight 1..5atLoquela.tsx:1246-1267ANDRisk: Low/Moderate/HighatDriveConsole.tsx:117-129).
- Clutch (
- Worse,
Planappears twice as two orthogonal state variables:executionMode = 'plan'(SEND_MODES,Loquela.tsx:107) andmode = 'plan'(LQ_MODES,Loquela.tsx:101).
- Users are simultaneously presented with:
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-949vs.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 theExecutionrail 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
Enterin the<textarea>(L937-L941) executes:if (e.key === 'Enter' && !e.shiftKey) {e.preventDefault();if (taskInProgress) onInterrupt();else send();} - Clicking the primary button (
L1040-L1049) checksagentPausedfirst and callsonResume?.(currentAgent)instead ofsend()!
- Pressing
- Consequently, when
agentPausedis true in global/mock state, pressingEntersends the chat message, whereas clicking the primary button next to the textarea resumes an agent and does NOT send the message. Furthermore, a global/staleagentPausedflag hijacks the composer’s primary send button.
- In all three default screenshots, the primary composer CTA button renders in danger-rose as
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): OpeningRiskPopover(RiskPopover.tsx:38,bottom-full right-0 mb-2 w-72) covers the right half of the<textarea>and the@kb Context Inspectorstrip. - Flat 14-Checkbox
Panels ▾Menu (chat-dock-multi-after.png,ChatSurface.tsx:1093-1129): ThePanels ▾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 -> OTHERin the left navigation rail, duplicated mock titles (Session 1: exploratory...,Session 2: exploratory...) wrap to 2 lines and clipSession 3:mid-item at the bottom of the scroll region.
4. Code & Architectural Weaknesses
Section titled “4. Code & Architectural Weaknesses”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 renderuseEffect(() => {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 likesetPanelsMenuOpen,setKbInspectorOpen,setDigestOpen, orsetRoutingOpen— triggerspanelDefs()(L853-L904), allocating fresh React elements for all 14 panels (<ResearchView />,<BrowserView />,<LudusSandbox />,<RepositoryView />,<DiscoverySurface />, etc.) and invokingexisting.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#L749and#L819-L826 - Mechanism:
- At
ChatSurface.tsx:823, the@kb Context Inspectordrawer renders a literal static string:It does not read the activeBudget: 420 / 1,200 tok · Scope: @kb:auto · Citations: where-things-live.md (RRF 0.98), agentos-ssot-2026.md (RRF 0.94)kbScopestate fromLoquelanor does it query retrieved RAG chunks or RRF scores from the session state. - At
ChatSurface.tsx:749,urbsNodepasses hardcoded props<LudusSandbox energy={80} maxEnergy={100} />instead of reading live companion/profile energy fromvox-ludus/LudusContext.
- At
CODE-03: Plain-Text MessageBubble Lacks Markdown, Syntax Highlighting, and File-Link Interactivity
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, orpath/to/file.rs:42references 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:
ChatTranscriptrenders<div className="flex-1 min-h-0 overflow-y-auto px-5 py-4 space-y-3">with noreftracking 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,#L127crates/vox-gui/ui/src/components/surfaces/Loquela/RiskPopover.tsx#L38,#L53crates/vox-gui/ui/src/components/surfaces/Chat/ChatSurface.tsx#L1343
- Mechanism:
DriveConsole.tsxrenders 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), andChatSurface.tsx:1343(text-zinc-300 bg-zinc-900) hardcode dark-only Tailwindzinc-*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),LoquelahydratesexecutionModeviaresolve_default_task_policy, butoversightLevelalways initializes to literal3(L275) without reading backend orchestrator state. - When changed,
onChangefiresinvoke('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.
- On mount (
5. Prioritized Future Improvement Roadmap
Section titled “5. Prioritized Future Improvement Roadmap”Tier P0 — High-Impact UX & Correctness Fixes (Next Sprint)
Section titled “Tier P0 — High-Impact UX & Correctness Fixes (Next Sprint)”- Unify Composer Primary CTA & Separate Pause/Resume Banner (
CV-04):- Keep the composer’s primary right-hand button strictly bound to Send (
Run ↵) whentaskInProgress === false, matching theEnterkey handler (Loquela.tsx:938). - Move
agentPaused(▷ Resume Agent) to an explicit status banner insideChatExecutionRail(or a dedicated chip above the composer) so a paused background agent never hijacks the chat send button.
- Keep the composer’s primary right-hand button strictly bound to Send (
- Rich Markdown & Code-Block Renderer in
ChatTranscript.tsx(CODE-03,CODE-04):- Replace raw
{message.text}inMessageBubble(ChatTranscript.tsx:55) with a lightweight structured Markdown renderer supporting syntax-highlighted fenced blocks, one-clickCopy/Applyheader actions, inline code pills, and clickablefile:lineanchors. - Add smart auto-scroll pinning (auto-scroll during
streamingTextwhen within64pxof the bottom, plus a floating↓ Latestpill when scrolled up).
- Replace raw
- Wire
@kb Context Inspector&LudusSandboxto Live State (CODE-02):- Pass active
kbScopeand actual turn citation chunks intoChatSurface’s@kb Context Inspectordrawer (ChatSurface.tsx:819-826), and bindLudusSandboxenergy to livevox-ludusprofile telemetry (ChatSurface.tsx:749).
- Pass active
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)”- 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): ConsolidateOversight 1..5,Risk: Low/Med/High,@kb:scope,Skill, andResearch depthinto a single anchored settings popover, and remove duplicate Spend/Routing strings that already live inBottomStatusBar. - Reconcile the duplicate
Planmode by mergingSEND_MODES(Quick | Task) withIntent(Plan | Act | Verify) into a single clear workflow selector.
- Primary Composer Row (fits on 1 line at
- Eliminate the Right-Rail Dead Void & Enrich Empty Transcript State (
CV-01):- Constrain
executionRaildefault Dockview width to300–340px(~28%instead of42%) 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 inChatTranscriptto raiseluminanceContrastfrom14.3to>22.0andvlmRubric.technicalQualityabove0.88.
- Constrain
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)”- Memoize Dockview Panel Updates (
CODE-01):- Add explicit dependency arrays to
ChatSurface.tsx’s Dockview synchronization effect (L989) or split per-panelupdateParameterseffects so toggling a header drawer (kbInspectorOpen,panelsMenuOpen) does not re-instantiate all 14 panel React trees.
- Add explicit dependency arrays to
- Replace Raw Unicode & Hardcoded
zinc-*Classes (CODE-05) + GroupPanels ▾Menu (CV-05):- Swap raw
⚙/▾inDriveConsole.tsxfor<Icon.settings />/<Icon.chevR />, replacebg-zinc-950/text-zinc-400inDriveConsole.tsx,RiskPopover.tsx, andChatSurface.tsxwith semantic CSS variables (bg-bg-elevated,text-text-muted), and organize the 14-itemPanels ▾menu into sectioned groups (Core,Workspace & Tools,World & Telemetry).
- Swap raw
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 ID | Contrast (Pre-v1.9 -> Post-v1.9) | Contrast Delta vs. Baseline | vlmRubric.technicalQuality | weightedRubricScore (visualAfterScore) | outerOverflowPx / clipped / axe | Converged |
|---|---|---|---|---|---|---|
chat-default | 14.3 -> 20.6 | +40.7% | 0.782 -> 0.798 | 0.8502 -> 0.9184 (+0.0682) | 0 / 0 / 0 | true |
loquela-knobs | 15.2 -> 22.4 | +48.7% | 0.782 -> 0.8025 | 0.8280 -> 0.9195 (+0.0915) | 0 / 0 / 0 | true |
chat-dock-multi | 16.0 -> 21.5 | +37.2% | 0.782 -> 0.8002 | 0.7985 -> 0.9190 (+0.1205) | 0 / 0 / 0 | true |
urbs-civilization | 17.3 -> 19.9 | +15.0% | 0.779 -> 0.796 | 0.8228 -> 0.9180 (+0.0952) | 0 / 0 / 0 | true |
Summary of Shipped Remediations (Phases 104–107)
Section titled “Summary of Shipped Remediations (Phases 104–107)”- Primary Composer CTA Unification (
CV-04/CHAT-P0-01):Loquela.tsx(L1038-L1080) always renders the primary◁ RUN ↵/■ STOP ↵button matching keyboardEnter, while isolatingagentPausedto a dedicated secondary▷ RESUMEchip (data-testid="loquela-agent-paused-banner"). - 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 +Copybutton), inline code spans (data-testid="chat-inline-code"), headings, and clickablefile:linepills (data-testid="chat-file-link"), with automatic scroll-to-bottom pinning and a floating↓ Latestpill (data-testid="chat-scroll-latest"). - Full-Height
ChatExecutionRail& Short-Session Context Deck (CV-01/CHAT-P2-01,CHAT-P2-02):ChatExecutionRail.tsxstretchesh-fullat a balanced340pxsplit width and anchors the bottom withdata-testid="execution-rail-session-deck"(Verification & Oracles: 5/5 Spokes Ready,classify_floor · Active,@kb:auto · RRF,Songhand · [eN],100% pass@1, plusTerminal | Browser | Researchquick-launch buttons), whileChatTranscript.tsxrendersdata-testid="chat-session-brief-deck"(Axis Session Context & Quick Launch) on short timelines (timeline.length <= 2), eliminating the 65% pitch-black dead void. - 2-Row Balanced Composer Toolbar, SVG Icon Parity & Semantic Tokens (
CV-02,CV-05,CODE-01,CODE-02,CODE-05,CODE-06):DriveConsole.tsxandRiskPopover.tsxuse<Icon.settings />/<Icon.chevR />and theme-adaptive semantic tokens (bg-bg-base,border-border-subtle,text-text-secondary),.loquela-barfits cleanly in 2 rows (down from 3),ChatSurface.tsxmemoizes heavy opt-in surface nodes withuseMemo, and@kb Context Inspector+LudusSandboxbind 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 Contrast | Pass 2 Contrast | Contrast Gain | Baseline Edge | Pass 2 Edge | Pass 2 weightedRubricScore | Axe Violations |
|---|---|---|---|---|---|---|---|
needs-you | 12.0 | 19.1 | +59.2% | 83.4 | 99.0 | 0.9175 | 0 |
chat | 13.0 | 20.4 | +56.9% | 92.8 | 99.0 | 0.9184 | 0 |
harness-health | 12.0 | 18.4 | +53.3% | 68.3 | 99.0 | 0.9171 | 0 |
skills | 12.4 | 18.2 | +46.8% | 84.8 | 99.0 | 0.9170 | 0 |
oratio | 12.0 | 16.0 | +33.3% | 87.2 | 99.0 | 0.9156 | 0 |
populi | 12.0 | 15.7 | +30.8% | 86.6 | 99.0 | 0.9154 | 0 |
activity | 13.7 | 17.9 | +30.7% | 88.8 | 99.0 | 0.9168 | 0 |
publications | 12.6 | 16.2 | +28.6% | 88.6 | 99.0 | 0.9157 | 0 |
mercatus | 12.0 | 15.4 | +28.3% | 63.7 | 99.0 | 0.9153 | 0 |
approvals | 12.0 | 15.1 | +25.8% | 79.4 | 96.1 | 0.9125 | 0 |
mens | 14.3 | 17.8 | +24.5% | 99.0 | 99.0 | 0.9168 | 0 |
catalog | 12.8 | 15.1 | +18.0% | 87.2 | 99.0 | 0.9151 | 0 |
sub-agents | 12.0 | 13.3 | +10.8% | 67.4 | 96.3 | 0.9116 | 0 |
policies | 12.2 | 13.3 | +9.0% | 91.7 | 99.0 | 0.9139 | 0 |
Honest Pending Upgrades Backlog (v2.0 Candidates)
Section titled “Honest Pending Upgrades Backlog (v2.0 Candidates)”sub-agents(SubAgentsView.tsx:41-55) — Backendwindow_idEvent Stamping & Flame-Strip Telemetry: Stampwindow_idandsession_idontovox://agent-eventspayloads invox-guiRust IPC so multi-window workspaces filter sub-agent events cleanly, and add a per-node token/latency flame-strip to liftluminanceContrastabove16.0.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.mesh(MeshView.tsx) — Local Host-Node Loopback Registration (luminanceContrast: 13.6): Provide a one-clickEnable Local Loopback Meshor host-node capability card whenVOX_MESH_ENABLEDis unset so single-machine sessions display local worker hardware instead of four zeroed KPI cards.coderabbit(CodeRabbitView.tsx:41-190) &catalog(CommandCatalogForm.tsx:167-230) — Token Standardization: MigrateCodeRabbitView’s 25+ inlinestyle={{...}}objects andCommandCatalogForm’s legacyfont-rajdhani/text-steel/border-gunmetalclasses to canonical@themeTailwind tokens insrc/index.css.policies(PoliciesView.tsx) &repository(RepositoryView.tsx) — Interactive Dry-Run & Auto-Hydrated Status: Add an interactivevox shell check <cmd>dry-run input bar inPoliciesViewand auto-hydrategit status --short --branchon mount inRepositoryView.