Context
The v13.1 release gate is a presentable harness cockpit PoC (operator @tobiu, 2026-06-17): the harness substrate is built (Project 13 = a wall of Done leaves), but the apps/agentos cockpit assembly is the gap. The cockpit UX/IA convergence (Discussion #13436, Vega-driven) needs the first-widget EvidencePane to be relocatable into the cockpit's dockable work-area — hosted by a dashboard.Container so it works both inline (S1) and with the grid popped to its own window (S2, the operator's "Chromium popup" path).
This leaf is the structure sub of the forthcoming cockpit-UX epic (Vega seeds it on #13436 graduation). It is filed now, ahead of graduation, by explicit coordination with @neo-opus-vega to clear the §5.2 Step-Back blocker: the #13436 body routes relocation to "ada's #13427 structure epic," but #13427 is closed (the #13430 cockpit-cleanup, merged 2026-06-16) and was never an epic — V-B-A'd 2026-06-17. This realises @neo-gpt's §5.2 exit option-1 ("a new linked relocation leaf").
The Problem
Per #13437, the EvidencePane is not a standalone file — it is a coupled subtree: EvidencePane + the observed stage + the inserted grid + the insert-observer ViewportController (which binds stage.on('insert') and projects the inserted grid's config into EvidencePane.blueprint). It currently lives under apps/agentos/childapps/widget/view/ (verified present on origin/dev, 2026-06-17). The cockpit needs this subtree hosted in the main view as a movable unit, not buried in the childapp shell.
The Architectural Reality
- The relocation rides the existing
src/dashboard/Container.mjs machinery: openWidgetInPopup + onWindowConnect already re-parent a live widget instance across windows (mainView.add(widget)), and in Neo's one-App-Worker model the container insert fires + the controller projects App-Worker-locally, independent of which DOM window the grid mounts in. So S2 is not net-new cross-window provenance — it rides the colors / dashboard.Container pattern. (My earlier "net-new" claim was V-B-A-corrected by the operator in #13436.)
- Target: host the EvidencePane subtree in the main
apps/agentos view via a dashboard.Container; the childapp shell reduces to a bare empty-viewport (the colors runtime-relocation pattern).
The Fix
- Move the EvidencePane subtree (
EvidencePane + the ViewportController insert-observer + the stage/grid wiring) from apps/agentos/childapps/widget/view/ into the main apps/agentos view, hosted by a dashboard.Container.
- Preserve the #13437 projection seam (
stage.on('insert') → EvidencePane.blueprint) verbatim — App-Worker-local, so it fires regardless of DOM window.
- Expose both modes: S1 (pane + grid inline, same window) and S2 (grid popped to its own window via
openWidgetInPopup / onWindowConnect, evidence pane stays in the shell).
Contract Ledger
N/A — internal apps/agentos view relocation. No public method, config key, MCP tool, or external surface changes. The NL / evidence-projection contract (the insert→blueprint seam from #13437) is preserved, not modified (App-Worker-local). The first-widget grid's reference:'first-widget-grid' (per the #13361 handover) is carried unchanged.
Decision Record impact
aligned-with ADR 0020 (the cockpit / embodiment vessel; apps/agentos repurpose per §3 / §6). No amend / supersede. The cockpit-UX epic may carry its own render-model ADR (per #13444) — this leaf is the relocation only.
Decision Record (Discussion-origin)
Source: Discussion #13436 (v13.1 cockpit UX/IA convergence), not yet graduated. Filed ahead of graduation by explicit @neo-opus-vega coordination to clear the §5.2 blocker; Vega re-parents it under the cockpit-UX epic and may refresh ACs on graduation. ADR classification (per #13436 / §5.2): Not needed for the relocation itself (ADR-0020-aligned).
Acceptance Criteria
Out of Scope
- The agent-driven M2 create→evidence path (external NL
create_component → evidence) — that is #13439 (connectToApp blocker) / #13355. This leaf is the host structure, not the agent-driven proof.
- Full multi-window choreography beyond the cheap S2 (WindowManager positioning).
- Nav / IA decisions (Fork B), provider-login / Accounts, welcome / landing — those are #13436's convergence, not this leaf.
- #13361 (live-mutate follow-up edits) — builds on the relocated EvidencePane but is its own ticket.
Avoided Traps
- "S2 = net-new cross-window provenance" — rejected (V-B-A'd): the App-Worker-local
insert + openWidgetInPopup already re-parent live widgets; S2 is cheap, not an epic.
- A second demo / widget path — rejected: relocate + reuse the existing subtree; no parallel hardcoded path (per #13361's premise correction from @neo-gpt).
- Parent under #13427 — rejected: #13427 is closed cleanup, never an epic; this leaf is the relocation #13427 did not deliver.
Related
- Discussion #13436 (source — v13.1 cockpit UX/IA convergence; this is its structure sub)
- #13437 (the coupled subtree origin — deterministic EvidencePane projection)
- #13427 / #13430 (prior
apps/agentos cockpit cleanup — context, NOT the relocation)
- #13439 (M2 agent-driven proof — sibling critical-path)
- #13361 (live-mutate follow-up edits — builds on the relocated pane)
- #13012 (Agent Harness umbrella) · #13444 (v14 Institution Cockpit — builds on this v13.1 floor)
Origin Session ID
c94823b9-7756-4a7f-99af-78a097e28b28
Handoff Retrieval Hints
query_summaries: "EvidencePane relocation dashboard.Container cockpit S1 S2"
- Reference: the
colors runtime-relocation pattern + src/dashboard/Container.mjs openWidgetInPopup / onWindowConnect; the #13437 merge (deterministic EvidencePane projection subtree)
Context
The v13.1 release gate is a presentable harness cockpit PoC (operator @tobiu, 2026-06-17): the harness substrate is built (Project 13 = a wall of Done leaves), but the
apps/agentoscockpit assembly is the gap. The cockpit UX/IA convergence (Discussion #13436, Vega-driven) needs the first-widget EvidencePane to be relocatable into the cockpit's dockable work-area — hosted by adashboard.Containerso it works both inline (S1) and with the grid popped to its own window (S2, the operator's "Chromium popup" path).This leaf is the structure sub of the forthcoming cockpit-UX epic (Vega seeds it on #13436 graduation). It is filed now, ahead of graduation, by explicit coordination with @neo-opus-vega to clear the §5.2 Step-Back blocker: the #13436 body routes relocation to "ada's #13427 structure epic," but #13427 is closed (the #13430 cockpit-cleanup, merged 2026-06-16) and was never an epic — V-B-A'd 2026-06-17. This realises @neo-gpt's §5.2 exit option-1 ("a new linked relocation leaf").
The Problem
Per #13437, the EvidencePane is not a standalone file — it is a coupled subtree:
EvidencePane+ the observed stage + the inserted grid + the insert-observerViewportController(which bindsstage.on('insert')and projects the inserted grid's config intoEvidencePane.blueprint). It currently lives underapps/agentos/childapps/widget/view/(verified present onorigin/dev, 2026-06-17). The cockpit needs this subtree hosted in the main view as a movable unit, not buried in the childapp shell.The Architectural Reality
src/dashboard/Container.mjsmachinery:openWidgetInPopup+onWindowConnectalready re-parent a live widget instance across windows (mainView.add(widget)), and in Neo's one-App-Worker model the containerinsertfires + the controller projects App-Worker-locally, independent of which DOM window the grid mounts in. So S2 is not net-new cross-window provenance — it rides thecolors/dashboard.Containerpattern. (My earlier "net-new" claim was V-B-A-corrected by the operator in #13436.)apps/agentosview via adashboard.Container; the childapp shell reduces to a bare empty-viewport (thecolorsruntime-relocation pattern).The Fix
EvidencePane+ theViewportControllerinsert-observer + the stage/grid wiring) fromapps/agentos/childapps/widget/view/into the mainapps/agentosview, hosted by adashboard.Container.stage.on('insert')→EvidencePane.blueprint) verbatim — App-Worker-local, so it fires regardless of DOM window.openWidgetInPopup/onWindowConnect, evidence pane stays in the shell).Contract Ledger
N/A — internal
apps/agentosview relocation. No public method, config key, MCP tool, or external surface changes. The NL / evidence-projection contract (theinsert→blueprintseam from #13437) is preserved, not modified (App-Worker-local). The first-widget grid'sreference:'first-widget-grid'(per the #13361 handover) is carried unchanged.Decision Record impact
aligned-with ADR 0020(the cockpit / embodiment vessel;apps/agentosrepurpose per §3 / §6). No amend / supersede. The cockpit-UX epic may carry its own render-model ADR (per #13444) — this leaf is the relocation only.Decision Record (Discussion-origin)
Source: Discussion #13436 (v13.1 cockpit UX/IA convergence), not yet graduated. Filed ahead of graduation by explicit @neo-opus-vega coordination to clear the §5.2 blocker; Vega re-parents it under the cockpit-UX epic and may refresh ACs on graduation. ADR classification (per #13436 / §5.2): Not needed for the relocation itself (ADR-0020-aligned).
Acceptance Criteria
ViewportController+ stage/grid wiring) lives in the mainapps/agentosview, hosted by adashboard.Container; the widget childapp shell is reduced to a bare empty-viewport (or removed) per thecolorspattern.openWidgetInPopup/onWindowConnect); the EvidencePane stays in the shell; the live grid instance survives the re-parent with state intact.dashboard.Containermachinery (verified, not net-new).Out of Scope
create_component→ evidence) — that is #13439 (connectToAppblocker) / #13355. This leaf is the host structure, not the agent-driven proof.Avoided Traps
insert+openWidgetInPopupalready re-parent live widgets; S2 is cheap, not an epic.Related
apps/agentoscockpit cleanup — context, NOT the relocation)Origin Session ID
c94823b9-7756-4a7f-99af-78a097e28b28
Handoff Retrieval Hints
query_summaries: "EvidencePane relocation dashboard.Container cockpit S1 S2"colorsruntime-relocation pattern +src/dashboard/Container.mjsopenWidgetInPopup/onWindowConnect; the #13437 merge (deterministic EvidencePane projection subtree)