Epic #13349 owns the Agent Harness H2 path: chat/work surface -> constrained blueprint -> live first Neo widget. The first implementation leaf, #13353 / PR #13354, proves the constrained blueprint can render as a live grid pane. The next queued leaf, #13355, adds transcript and accepted-blueprint evidence so the result is not just a hardcoded demo.
After those pieces, H2 still needs a bounded user-facing intake surface: the place where the first-widget request is captured before it becomes blueprint/evidence state. This ticket creates that one-PR slice without adding model invocation, persistence, write-through, or Electron shell scope.
Release classification: post-release Agent Harness product line; attach to Agent Harness Project 13, not the v13 release board. Project 13 was verified live as the Agent Harness project before creation.
The Problem
A transcript/evidence pane can show provenance, but without an intake surface the H2 demo still starts from pre-seeded state. That weakens the product proof: a user should be able to type the canonical first request and see it enter the same safe request/evidence path that produces the first live widget.
The intake path must stay constrained. User text is untrusted, so it must be bounded, rendered through safe Neo text/component surfaces, and projected as request state only. It must not imply real LLM orchestration, streaming chat, durable transcript storage, arbitrary code execution, or write-through before those boundaries have their own leaves.
The Architectural Reality
#13349 names chat/work-surface intake as an H2 capability that still needs a child leaf.
ADR 0020 names the canonical H2 demo: chat pane -> "build me a neo grid" -> a separate live pane/window containing a mutable grid.
#13018 constrains transcript-style rendering toward safe VDOM / no unsafe HTML path.
#13022 seeded AgentOS visual tokens for chat, transcript, state, and grid-pane surfaces.
#13355 should land first so this intake surface can reuse the transcript/evidence placement instead of forking a second provenance UI.
#13033 remains the Electron shell/build-root lane and is not touched here.
The Fix
Add a one-PR H2 child slice that renders a safe first-widget request intake surface inside the AgentOS widget child app after the transcript/evidence pane exists.
Expected shape:
Provide a bounded text input and submit affordance for the canonical first-widget request.
Validate empty, overlong, or structurally invalid request text into a visible fail-closed state.
Project accepted request text into the existing transcript/evidence request state from #13355.
Route accepted first-widget intent to the existing constrained blueprint path from #13353; do not create a second hardcoded widget path.
Keep the response deterministic for this leaf. No LLM provider call, streaming orchestration, Memory Core persistence, Node-git write-through, or live edit/mutation behavior.
Accepted request selects the existing constrained first-widget blueprint path
If prerequisite blueprint contract is absent, show a bounded unavailable state
JSDoc / @summary
Unit test proving no duplicate widget path is introduced
Decision Record impact
Aligned with ADR 0020. No ADR amendment expected; this ticket implements the H2 chat-intake layer while preserving the existing product ordering, source placement, and constrained-blueprint safety model.
Acceptance Criteria
The AgentOS widget child app renders a first-widget request intake surface with a text input and submit affordance.
Valid request submission projects safe request text into the transcript/evidence state established by #13355.
Empty, overlong, and HTML-like request input fail closed to bounded visible states without unsafe rendering.
Accepted request state uses the existing first-widget blueprint path from #13353 rather than a duplicate hardcoded widget path.
The implementation does not call an LLM provider, persist transcript state, write through to git, or introduce Electron shell/build-root behavior.
Focused unit coverage verifies valid intake, invalid intake, safe rendering, and blueprint-path reuse.
Local render smoke verifies intake, transcript/evidence, and live widget surfaces render together after prerequisites land.
Out of Scope
Natural-language model invocation or streaming chat orchestration.
Node-git write-through or generated-code commit flows.
Electron shell/build-root work; that remains #13033.
Partner-private workflows or client-specific UI.
Avoided Traps / Gold Standards Rejected
Pre-seeded demo only: rejected. H2 needs an actual user intake gesture, even if the response is deterministic in this leaf.
Unsafe text rendering: rejected. User input must not become trusted HTML.
LLM orchestration bundled too early: rejected. This leaf proves the intake boundary, not provider integration.
Duplicate widget path: rejected. Intake must feed the existing constrained first-widget blueprint path.
Duplicate Electron support: rejected. #13033 remains the canonical Electron shell/build-root lane.
Related
Parent: #13349.
Grandparent: #13012.
Blocked by #13355.
Prerequisite chain: #13355 depends on #13353 / PR #13354.
Sibling lane: #13033 remains the Electron shell/build-root lane.
ADR: learn/agentos/decisions/0020-agent-harness-concept.md.
Duplicate / Claim Sweep
Live latest-open sweep: checked the latest 20 open issues immediately before creation on 2026-06-15T15:29:10Z. Relevant results were #13349, #13355, #13353, #13287, #13350, #13012, #13033-adjacent Fleet Manager/Electron items, and unrelated backlog issues; no equivalent chat-intake child leaf was present.
Targeted live GitHub searches: "first widget chat", "chat intake", "work-surface intake", and "first-widget request" returned the H2 parent and first-widget blueprint leaf, but no existing chat-intake child.
A2A in-flight sweep: native list_messages / add_message tools are not exposed in this Codex Desktop surface. I could not inspect private in-flight A2A claims from this harness. Public GitHub issue/PR state and repo content were checked immediately before filing, and no public duplicate or collision was visible.
Semantic KB sweep: ask_knowledge_base(query='Agent Harness H2 first widget chat intake transcript evidence safe rendering blueprint Neo component request surface', type='all') surfaced ADR 0020, Neural Link, and HarnessDockZoneModel context, and confirmed the chat/intake/request surface is distinct from transcript evidence and blueprint rendering.
Exact repo/content sweep: rg "chat intake|chat surface|work-surface intake|first-widget request|first widget request|conversational app creation" resources/content/issues resources/content/discussions .agents/workflows learn apps/agentos -n found the graduated Discussion H2 framing but no existing chat-intake child ticket.
Context
Epic #13349 owns the Agent Harness H2 path: chat/work surface -> constrained blueprint -> live first Neo widget. The first implementation leaf,
#13353/ PR#13354, proves the constrained blueprint can render as a live grid pane. The next queued leaf,#13355, adds transcript and accepted-blueprint evidence so the result is not just a hardcoded demo.After those pieces, H2 still needs a bounded user-facing intake surface: the place where the first-widget request is captured before it becomes blueprint/evidence state. This ticket creates that one-PR slice without adding model invocation, persistence, write-through, or Electron shell scope.
Release classification: post-release Agent Harness product line; attach to Agent Harness Project 13, not the v13 release board. Project 13 was verified live as the
Agent Harnessproject before creation.The Problem
A transcript/evidence pane can show provenance, but without an intake surface the H2 demo still starts from pre-seeded state. That weakens the product proof: a user should be able to type the canonical first request and see it enter the same safe request/evidence path that produces the first live widget.
The intake path must stay constrained. User text is untrusted, so it must be bounded, rendered through safe Neo text/component surfaces, and projected as request state only. It must not imply real LLM orchestration, streaming chat, durable transcript storage, arbitrary code execution, or write-through before those boundaries have their own leaves.
The Architectural Reality
#13349names chat/work-surface intake as an H2 capability that still needs a child leaf.#13018constrains transcript-style rendering toward safe VDOM / no unsafe HTML path.#13022seeded AgentOS visual tokens for chat, transcript, state, and grid-pane surfaces.#13355should land first so this intake surface can reuse the transcript/evidence placement instead of forking a second provenance UI.#13033remains the Electron shell/build-root lane and is not touched here.The Fix
Add a one-PR H2 child slice that renders a safe first-widget request intake surface inside the AgentOS widget child app after the transcript/evidence pane exists.
Expected shape:
#13355.#13353; do not create a second hardcoded widget path.Contract Ledger Matrix
Decision Record impact
Aligned with ADR 0020. No ADR amendment expected; this ticket implements the H2 chat-intake layer while preserving the existing product ordering, source placement, and constrained-blueprint safety model.
Acceptance Criteria
#13355.#13353rather than a duplicate hardcoded widget path.Out of Scope
Avoided Traps / Gold Standards Rejected
#13033remains the canonical Electron shell/build-root lane.Related
Parent: #13349. Grandparent: #13012. Blocked by #13355. Prerequisite chain: #13355 depends on #13353 / PR #13354. Sibling lane: #13033 remains the Electron shell/build-root lane. ADR:
learn/agentos/decisions/0020-agent-harness-concept.md.Duplicate / Claim Sweep
Live latest-open sweep: checked the latest 20 open issues immediately before creation on 2026-06-15T15:29:10Z. Relevant results were #13349, #13355, #13353, #13287, #13350, #13012, #13033-adjacent Fleet Manager/Electron items, and unrelated backlog issues; no equivalent chat-intake child leaf was present.
Targeted live GitHub searches:
"first widget chat","chat intake","work-surface intake", and"first-widget request"returned the H2 parent and first-widget blueprint leaf, but no existing chat-intake child.A2A in-flight sweep: native
list_messages/add_messagetools are not exposed in this Codex Desktop surface. I could not inspect private in-flight A2A claims from this harness. Public GitHub issue/PR state and repo content were checked immediately before filing, and no public duplicate or collision was visible.Semantic KB sweep:
ask_knowledge_base(query='Agent Harness H2 first widget chat intake transcript evidence safe rendering blueprint Neo component request surface', type='all')surfaced ADR 0020, Neural Link, and HarnessDockZoneModel context, and confirmed the chat/intake/request surface is distinct from transcript evidence and blueprint rendering.Exact repo/content sweep:
rg "chat intake|chat surface|work-surface intake|first-widget request|first widget request|conversational app creation" resources/content/issues resources/content/discussions .agents/workflows learn apps/agentos -nfound the graduated Discussion H2 framing but no existing chat-intake child ticket.Origin Session ID: 019ec8a7-1f8e-75a3-b223-fe59cc444776
Retrieval Hint: "Agent Harness H2 first-widget chat intake safe request surface transcript evidence blueprint reuse no LLM no persistence"