Context
Operator design direction on Epic #13012 made the harness UI quality bar explicit: one peer should own the visual/design focus, and the harness must support the portal theme pair (neo-theme-neo-dark + neo-theme-neo-light) from day one rather than treating theming as polish after functionality lands. A later #13012 strategy update sharpened the product frame: Claude-Desktop-style parity is the floor; the category bet is the flat-peer, cross-family institution getting a face. The visual system is therefore not decoration — it is part of the product proof.
Release classification: post-release harness product-line work; attach to Project 13 (Agent Harness live state), not the v13 release board.
The Problem
The harness roadmap is splitting into settings, chat, transcript, grid-pane, Fleet Manager, and deploy-plane work. Without a focused visual-system leaf, each slice can make local UI choices and still pass its narrow acceptance criteria, leaving the first integrated harness feeling assembled instead of designed. That is especially risky here because the first user journey must make a multi-agent institution legible: users need to understand agent identity, lane state, review state, messages, and work surfaces at a glance.
The risk is not "missing colors". The risk is product incoherence: theme support, density, contrast, state treatment, and interaction hierarchy drift independently across surfaces that should feel like one cockpit.
The Architectural Reality
- The theme pair is real and already shipped in current substrate:
apps/portal/neo-config.json includes neo-theme-neo-dark and neo-theme-neo-light; the SCSS trees include resources/scss/theme-neo-dark/** and resources/scss/theme-neo-light/**; apps/portal/view/ViewportController.mjs toggles the pair.
src/DefaultConfig.mjs already documents theme configuration and includes neo-theme-neo-light in defaults.
- Epic #13012 owns the harness product shape. Board 13 is the live work-state surface; #13020 owns ADR 0020 as the cold-read concept anchor; #13018 owns the Markdown VDOM component, not the harness visual system.
- The first harness surfaces named in the operator direction are settings pane, chat, transcript, and grid-pane flows. This ticket owns the cross-cutting visual-system foundation for those surfaces; it does not own their full product behavior.
The Fix
Create the first focused visual-system/theming foundation for the Agent Harness app line:
- Identify the current or intended harness app surface path during intake. If the app shell is not present yet, do not invent a blind path; either create the minimal shell prerequisite under the correct parent ticket or mark this ticket blocked on that prerequisite.
- Ensure the harness app surface loads both
neo-theme-neo-dark and neo-theme-neo-light from the start, following the portal theme-pair precedent rather than a one-theme MVP.
- Define a small, reusable visual contract for the first harness work surfaces: settings pane, chat, transcript, and grid-pane. The contract should cover density, hierarchy, theme roles, empty/loading/error states, focus/selection states, and agent/lane status affordances.
- Add visual verification evidence for both themes on the implemented surfaces. For app/UI work, use the repo's browser/visual verification path and include desktop plus mobile viewport evidence where the surface exists.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| Harness app theme configuration |
Epic #13012 operator design directive; portal neo-config.json precedent |
Load neo-theme-neo-dark and neo-theme-neo-light from the first harness UI slice |
If no harness app shell exists, block on/apply the shell prerequisite instead of inventing a path |
App config / harness README if present |
rg verified portal theme pair + theme SCSS substrate |
| Harness visual-system contract |
Epic #13012 strategy: institution gets a face; H2 user journey ladder |
Shared quality bar for settings, chat, transcript, grid-pane surfaces |
Document surface stubs when behavior is not yet implemented; do not fake completed UI |
Repo-local harness design note or app README section |
Visual verification screenshots in both themes |
| Visual verification evidence |
Neo frontend verification discipline |
Desktop and mobile screenshots or equivalent browser evidence for both themes |
If the app shell is absent, record the blocker and do not claim visual completion |
PR body evidence |
Browser/Playwright/Neural-Link evidence, scoped to the surfaces touched |
Decision Record impact
depends-on #13020 for the cold-read Agent Harness concept anchor, and aligned-with ADR 0018 for Neo's identity framing: the harness is the Institution getting a user-facing Body, not a generic chat wrapper. No accepted ADR conflict identified.
Acceptance Criteria
Out of Scope
- Full Fleet Manager feature behavior (#13015).
- Markdown parser/component implementation (#13018).
- ADR 0020 authorship (#13020).
- Deploy plane and hosted-service monetization surfaces.
- Marketing landing pages or hero-page polish. This ticket is about the actual harness tool surfaces.
Avoided Traps
- Afterthought theming — adding dark/light later guarantees UI drift across early slices.
- One-note palette — the design bar is theme-aware hierarchy and state clarity, not tinting every surface one color.
- Marketing-first composition — the harness is an operational cockpit; the first screen should be usable product surface, not a landing page.
- Path invention — if the harness app shell is not present, the correct move is a prerequisite or blocker, not guessing a directory.
Related
Parent: Epic #13012. Live board: Project 13. Concept anchor: #13020. Fleet Manager epic: #13015. Markdown VDOM sibling: #13018.
Duplicate / freshness sweep:
- KB semantic sweep: searched for
Agent Harness visual system theme foundation neo-dark neo-light design system settings chat transcript grid pane duplicate ticket; no equivalent active ticket returned, only historical theme precedents.
- Live latest-open sweep: checked latest 20 open issues at 2026-06-12T21:28:52Z; #13012/#13020/#13018 exist, no concrete harness visual-system/theme leaf found.
- A2A in-flight sweep: checked latest 30 messages immediately before filing; found my own
[lane-intent], #13018 parser progress, #13012 strategy update, and no competing concrete visual-system leaf.
Origin Session ID: 019eba1b-f70e-74c0-9dfb-8666901c3c0d
Retrieval Hint: "Agent Harness visual system neo-dark neo-light settings chat transcript grid-pane H2 Your-first-agent-beautifully"
Context
Operator design direction on Epic #13012 made the harness UI quality bar explicit: one peer should own the visual/design focus, and the harness must support the portal theme pair (
neo-theme-neo-dark+neo-theme-neo-light) from day one rather than treating theming as polish after functionality lands. A later #13012 strategy update sharpened the product frame: Claude-Desktop-style parity is the floor; the category bet is the flat-peer, cross-family institution getting a face. The visual system is therefore not decoration — it is part of the product proof.Release classification:post-release harness product-line work; attach to Project 13 (Agent Harness live state), not the v13 release board.The Problem
The harness roadmap is splitting into settings, chat, transcript, grid-pane, Fleet Manager, and deploy-plane work. Without a focused visual-system leaf, each slice can make local UI choices and still pass its narrow acceptance criteria, leaving the first integrated harness feeling assembled instead of designed. That is especially risky here because the first user journey must make a multi-agent institution legible: users need to understand agent identity, lane state, review state, messages, and work surfaces at a glance.
The risk is not "missing colors". The risk is product incoherence: theme support, density, contrast, state treatment, and interaction hierarchy drift independently across surfaces that should feel like one cockpit.
The Architectural Reality
apps/portal/neo-config.jsonincludesneo-theme-neo-darkandneo-theme-neo-light; the SCSS trees includeresources/scss/theme-neo-dark/**andresources/scss/theme-neo-light/**;apps/portal/view/ViewportController.mjstoggles the pair.src/DefaultConfig.mjsalready documents theme configuration and includesneo-theme-neo-lightin defaults.The Fix
Create the first focused visual-system/theming foundation for the Agent Harness app line:
neo-theme-neo-darkandneo-theme-neo-lightfrom the start, following the portal theme-pair precedent rather than a one-theme MVP.Contract Ledger Matrix
neo-config.jsonprecedentneo-theme-neo-darkandneo-theme-neo-lightfrom the first harness UI slicergverified portal theme pair + theme SCSS substrateDecision Record impact
depends-on #13020for the cold-read Agent Harness concept anchor, andaligned-with ADR 0018for Neo's identity framing: the harness is the Institution getting a user-facing Body, not a generic chat wrapper. No accepted ADR conflict identified.Acceptance Criteria
apps/path invention.neo-theme-neo-darkandneo-theme-neo-lightfrom the first UI slice.Your-first-agent-beautifullyas the default unless the implemented slice proves a stronger horizon mapping.Out of Scope
Avoided Traps
Related
Parent: Epic #13012. Live board: Project 13. Concept anchor: #13020. Fleet Manager epic: #13015. Markdown VDOM sibling: #13018.
Duplicate / freshness sweep:
Agent Harness visual system theme foundation neo-dark neo-light design system settings chat transcript grid pane duplicate ticket; no equivalent active ticket returned, only historical theme precedents.[lane-intent], #13018 parser progress, #13012 strategy update, and no competing concrete visual-system leaf.Origin Session ID: 019eba1b-f70e-74c0-9dfb-8666901c3c0d
Retrieval Hint: "Agent Harness visual system neo-dark neo-light settings chat transcript grid-pane H2 Your-first-agent-beautifully"