Epic #13349 owns the Agent Harness H2 path: chat/work surface -> constrained blueprint -> live first Neo widget. The current child chain covers the first rendered widget (#13353 / PR #13354), visible transcript / accepted-blueprint evidence (#13355), and safe first-widget request intake (#13357).
ADR 0020 and #13012 both make the next product promise explicit: the first widget must be live-mutable after it appears, not just generated once. ADR 0020 states the canonical demo as "build me a neo grid" -> a pane that becomes its own window, live-mutable; #13012 states that the standalone harness mutates itself through the same Neural Link mechanism it uses to build apps.
Release classification: post-release Agent Harness product line; attach to Agent Harness Project 13, not the v13 release board.
The Problem
After #13357, the user can submit the canonical first-widget request and see deterministic widget provenance. That still stops short of the H2 proof if the result cannot be changed through the same conversational surface. A static first widget is a better demo, not yet a co-inhabited live object.
This ticket owns the next small proof: bounded follow-up requests mutate the existing first-widget state. The slice must stay constrained and reversible in shape. It should accept only a small, explicit edit grammar over the first widget, such as title, row count, column visibility, or sample-data reset. It must not introduce arbitrary code execution, generic provider orchestration, durable persistence, or Node-git write-through.
The Architectural Reality
learn/agentos/decisions/0020-agent-harness-concept.md names pillar 2 as conversational app creation and the canonical demo as chat -> live blueprint emission -> live-mutable grid pane.
resources/content/issues/chunk-2/issue-13012.md names runtime mutation via Neural Link and separately names NL-mutation-to-commit write-through onto Node-git. Those are related but not the same leaf.
learn/agentos/NeuralLink.md lists constrained runtime mutation tools such as set_instance_properties, create_component, remove_component, undo, and redo. This ticket should consume the bounded runtime-mutation concept without opening the full developer/admin surface.
resources/content/issues/chunk-3/issue-13064.md classifies harness-facing Neural Link tool projection as read / write-locked / admin, and warns that embedded harness agents must not inherit the full developer surface by default.
resources/content/issues/chunk-3/issue-13221.md preserves undo/redo and transaction-stack work as separate Neural Link substrate. This ticket may depend on those affordances if they are available, but it should not reimplement them.
learn/agentos/HarnessDockZoneModel.md separates runtime component ownership from persistence. It treats persisted item.blueprint and saved layouts as their own JSON-first model boundary, so durable persistence/write-through remains a later H2 child.
The Fix
Add a one-PR H2 child slice that lets the AgentOS widget child app accept bounded follow-up edit requests after the initial first-widget request is captured.
Expected shape:
Reuse the request/transcript/evidence surface from #13357 instead of creating a second chat path.
Parse a small deterministic edit grammar over the first widget, for example "rename it to ", "show 8 rows", "hide/show column ", or "reset sample data".
Apply accepted edits to the existing first-widget blueprint/runtime state from #13353 rather than creating a replacement widget or a second hardcoded demo path.
Reflect accepted and rejected edit attempts in the evidence/transcript surface from #13355.
Fail closed for unknown edit commands, overlong input, HTML-like input, invalid row/column bounds, and missing prerequisite widget state.
Keep provider invocation, streaming orchestration, Memory Core persistence, saved layouts, Node-git write-through, and Electron shell work out of scope.
Shows accepted/rejected edit attempts without unsafe rendering
Unsafe text remains escaped / bounded
Component/helper summary
Unit/source assertion for no unsafe HTML path
Decision Record impact
Aligned with ADR 0020. No ADR amendment expected; this ticket implements the "live-mutable" part of the H2 canonical demo without changing product ordering, source placement, Neural Link authority tiering, or persistence boundaries.
Acceptance Criteria
The AgentOS widget child app exposes bounded follow-up edit submission after #13357's first-widget request intake path exists.
Accepted edit commands mutate the existing first-widget blueprint/runtime state from #13353 rather than creating a replacement widget or duplicate demo path.
At least two deterministic edits are supported, one label/title edit and one grid-shape/data edit.
Unknown commands, overlong input, HTML-like input, invalid row/column bounds, and missing prerequisite widget state fail closed to bounded visible states.
Accepted and rejected edit attempts appear in the transcript/evidence surface from #13355 without unsafe HTML rendering.
The implementation does not call an LLM provider, persist transcript/widget state, write through to git, expose admin Neural Link tools, or introduce Electron shell/build-root behavior.
Focused unit coverage verifies accepted edits, rejected edits, blueprint-path reuse, safe rendering, and no duplicate widget path.
Local render smoke verifies initial intake, transcript/evidence, live widget, and follow-up edit surfaces work together after prerequisites land.
Out of Scope
Natural-language model invocation or streaming chat orchestration.
Durable transcript or widget persistence.
Saved dock-zone layouts or item.blueprint write-through.
Node-git commit/write-through flows.
Generic Neural Link admin tool exposure or tool-surface curation.
Multi-writer locking or undo/redo substrate implementation; those remain #13056 / #13221-adjacent lanes.
Electron shell/build-root work; that remains #13033.
Partner-private workflows or client-specific UI.
Avoided Traps / Gold Standards Rejected
Static one-shot widget: rejected. H2 must show that the widget remains live-mutable after creation.
Arbitrary code generation/editing: rejected. The first edit path uses a bounded grammar over known widget state.
Full Neural Link developer surface in the harness: rejected. Harness-embedded mutation must not imply admin capability.
Persistence bundled too early: rejected. Runtime edit and durable write-through are different boundaries.
Duplicate Electron support: rejected. #13033 remains the canonical Electron shell/build-root lane.
Related
Parent: #13349.
Grandparent: #13012.
Blocked by #13357.
Prerequisite chain: #13357 depends on #13355, which 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:55:04Z. Relevant results were #13349, #13353, #13355, #13357, #13012, #13033, #13056, #13221, #13287, and unrelated backlog issues; no equivalent first-widget live-edit / mutation child leaf was present.
Targeted live GitHub searches: "first-widget live edit", "first-widget mutation", and "H2 widget edit" returned no open duplicate.
A2A in-flight sweep: native list_messages / add_message tools are not exposed in this Codex Desktop surface (tool_search returned 0 this turn). 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 live mutation edit path blueprint chat intake persistence write-through', type='all') surfaced ADR 0020, Neural Link, and HarnessDockZoneModel context; it confirmed live mutation/edit and persistence/write-through are distinct H2 boundaries.
Exact repo/content sweep: rg "first-widget live edit|first widget live edit|follow-up edit|widget edit command|live widget mutation|H2 widget edit" resources/content/issues resources/content/discussions .agents/workflows learn apps/agentos -n returned no existing child ticket.
Retrieval Hint: "Agent Harness H2 first-widget live edit bounded follow-up request mutation blueprint reuse no persistence no write-through"
tobiu referenced in commit b759ab1 - "feat(agentos): live-mutate the first widget via bounded follow-up edits (#13361) (#13451) on Jun 17, 2026, 1:10 PM
Context
Epic #13349 owns the Agent Harness H2 path: chat/work surface -> constrained blueprint -> live first Neo widget. The current child chain covers the first rendered widget (#13353 / PR #13354), visible transcript / accepted-blueprint evidence (#13355), and safe first-widget request intake (#13357).
ADR 0020 and #13012 both make the next product promise explicit: the first widget must be live-mutable after it appears, not just generated once. ADR 0020 states the canonical demo as
"build me a neo grid" -> a pane that becomes its own window, live-mutable; #13012 states that the standalone harness mutates itself through the same Neural Link mechanism it uses to build apps.Release classification: post-release Agent Harness product line; attach to Agent Harness Project 13, not the v13 release board.
The Problem
After #13357, the user can submit the canonical first-widget request and see deterministic widget provenance. That still stops short of the H2 proof if the result cannot be changed through the same conversational surface. A static first widget is a better demo, not yet a co-inhabited live object.
This ticket owns the next small proof: bounded follow-up requests mutate the existing first-widget state. The slice must stay constrained and reversible in shape. It should accept only a small, explicit edit grammar over the first widget, such as title, row count, column visibility, or sample-data reset. It must not introduce arbitrary code execution, generic provider orchestration, durable persistence, or Node-git write-through.
The Architectural Reality
learn/agentos/decisions/0020-agent-harness-concept.mdnames pillar 2 as conversational app creation and the canonical demo as chat -> live blueprint emission -> live-mutable grid pane.resources/content/issues/chunk-2/issue-13012.mdnames runtime mutation via Neural Link and separately names NL-mutation-to-commit write-through onto Node-git. Those are related but not the same leaf.learn/agentos/NeuralLink.mdlists constrained runtime mutation tools such asset_instance_properties,create_component,remove_component,undo, andredo. This ticket should consume the bounded runtime-mutation concept without opening the full developer/admin surface.resources/content/issues/chunk-3/issue-13064.mdclassifies harness-facing Neural Link tool projection as read / write-locked / admin, and warns that embedded harness agents must not inherit the full developer surface by default.resources/content/issues/chunk-3/issue-13221.mdpreserves undo/redo and transaction-stack work as separate Neural Link substrate. This ticket may depend on those affordances if they are available, but it should not reimplement them.learn/agentos/HarnessDockZoneModel.mdseparates runtime component ownership from persistence. It treats persisteditem.blueprintand saved layouts as their own JSON-first model boundary, so durable persistence/write-through remains a later H2 child.The Fix
Add a one-PR H2 child slice that lets the AgentOS widget child app accept bounded follow-up edit requests after the initial first-widget request is captured.
Expected shape:
Contract Ledger Matrix
Decision Record impact
Aligned with ADR 0020. No ADR amendment expected; this ticket implements the "live-mutable" part of the H2 canonical demo without changing product ordering, source placement, Neural Link authority tiering, or persistence boundaries.
Acceptance Criteria
Out of Scope
item.blueprintwrite-through.Avoided Traps / Gold Standards Rejected
Related
Parent: #13349. Grandparent: #13012. Blocked by #13357. Prerequisite chain: #13357 depends on #13355, which 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:55:04Z. Relevant results were #13349, #13353, #13355, #13357, #13012, #13033, #13056, #13221, #13287, and unrelated backlog issues; no equivalent first-widget live-edit / mutation child leaf was present.
Targeted live GitHub searches:
"first-widget live edit","first-widget mutation", and"H2 widget edit"returned no open duplicate.A2A in-flight sweep: native
list_messages/add_messagetools are not exposed in this Codex Desktop surface (tool_searchreturned 0 this turn). 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 live mutation edit path blueprint chat intake persistence write-through', type='all')surfaced ADR 0020, Neural Link, and HarnessDockZoneModel context; it confirmed live mutation/edit and persistence/write-through are distinct H2 boundaries.Exact repo/content sweep:
rg "first-widget live edit|first widget live edit|follow-up edit|widget edit command|live widget mutation|H2 widget edit" resources/content/issues resources/content/discussions .agents/workflows learn apps/agentos -nreturned no existing child ticket.Origin Session ID: 019ec8a7-1f8e-75a3-b223-fe59cc444776
Retrieval Hint: "Agent Harness H2 first-widget live edit bounded follow-up request mutation blueprint reuse no persistence no write-through"