LearnNewsExamplesServices
Frontmatter
id18461
titleFinish Workstation as a compact composition entrypoint
stateClosed
labels
enhancementdeveloper-experienceairefactoringdashboard
assigneesneo-gpt-emmy
createdAtSep 8, 2026, 8:44 AM
updatedAtSep 14, 2026, 12:51 AM
githubUrlhttps://github.com/neomjs/neo/issues/18461
authorneo-gpt-emmy
commentsCount3
parentIssue18456
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 18460 Simplify Workstation vessel integration around existing Neo owners, [x] 18459 Replace Workstation''s copied preview pipeline with engine ownership, [x] 18458 Give Workstation tour playback and chrome an optional owner
blocking[]
closedAtSep 14, 2026, 12:51 AM

Finish Workstation as a compact composition entrypoint

Closed v13.2.0/archive-v13-2-0-chunk-20 enhancementdeveloper-experienceairefactoringdashboard
neo-gpt-emmy
neo-gpt-emmy commented on Sep 8, 2026, 8:44 AM

Context

After optional demo execution and docking-policy ownership leave the root, the remaining entrypoint must actually meet the operator's adoption bar. Existing FeedPane/ScalePane, model.Record, Feed/Scale stores and WorkspaceController provide ordinary Neo homes; paneStories, resident markup, feed production/status and composition are still embedded in Workspace.

This is a leaf of the dedicated Workstation consumer-refactoring epic. The shared outcome is a ≤1,000-total-line composition entrypoint with working ordinary docking and optional scripted demos.

The Problem

The named responsibility currently lives on apps/workstation/view/Workspace.mjs, coupling its state, caller surface and teardown to the root. This leaf removes that responsibility and updates its actual callers in the same PR; it does not create a forwarding method for every moved member.

The Architectural Reality

Placement pre-flight: new pane/view classes match FeedPane/ScalePane in apps/workstation/view; controllers match WorkspaceController; data owners use existing model/store domains and root state.Provider. No replacement app framework or new top-level subsystem is needed.

The Fix

Complete app-owned pane/view/data composition using the existing class families. Keep one root provider and the same Store identities; move resident presentation into a named view and live-data production into its appropriate app data owner. Use examples/dashboard/dock/MainContainer.mjs (609 total lines at the source check) as the entrypoint shape: declare zones, panes, tabs, widget registration, default layout and engine capabilities as data/config. Apply that example's existing document/config idiom. New declarative configuration schemas or automatic lifecycle-owner construction belong to the separately scoped Ideation Sandbox, not this leaf. The extracted owners hold actual behavior—live-data production, vessel policy, scripted gestures and tour settlement—with optional demo activation and only a few justified product hooks on the root. Update the app README to show ordinary use and optional tour activation, and measure the final entrypoint rather than accepting the sum of earlier deletions.

Contract Ledger Matrix

Target surface Source of authority Proposed behavior Fallback Docs Evidence
Entry definition Operator 500–1000 target; current Workspace composition At most 1,000 total source lines, readable without inspecting demo drivers No feature deletion to pass App README and local JSDoc Physical-line measurement plus ordinary-use journey
Pane/provider/feed ownership Existing FeedPane/ScalePane, root stateProvider and app stores Same live panes/stores and one producer; normal Neo views/data owners Existing recreate/restore behavior Owner JSDoc Identity, feed and repeated recreate/restore controls
Integrated product Existing Workstation behavior and prior leaves Normal docking and explicit tours both remain usable Existing honest failure states Updated adoption example Selected final-head end-to-end journeys

Acceptance Criteria

  • Workspace.mjs is ≤1,000 total physical source lines (500–1,000 expected, no padding floor). It declares the dock document, pane catalog and engine capabilities with short justified hooks; it uses existing engine defaults and does not contain moved executors or controller state.
  • No new or modified app module exceeds 2,000 total lines. Useful documentation remains; all responsibility moves and retained hooks are accounted for, with no wrapper-per-method or generic helper monolith.
  • Normal boot/docking, pin/reveal, pane recreation, cross-window return, undo/redo and warm/cold saved-layout paths work without activating the demo runtime.
  • The feed retains its declared rate/cap and one producer; pane/store identities survive normal docking and restoration. Cleanup releases owned resources without disposing borrowed ones.
  • Explicitly activated dense tour and the existing five-beat executable journey retain their assertions; this does not claim whole-media/human film approval or close its separate gate.
  • The app README demonstrates the compact ordinary composition and identifies optional demo ownership. Final-head unit and selected existing E2E receipts cover the moved concerns; record the final line measurement.

Out of Scope

Repository-wide lint changes, new general guide series, product redesign, reduced demo workload, and closure of unrelated engine/canvas/film defects.

Avoided Traps

No giant helper or copied post-setup factory descriptors; no shadow Group/document registry; no feature removal or weakened assertions to meet the size bar. Preserve explicit creator/borrower cleanup. Existing defects require baseline attribution rather than a false green.

Decision Record impact

Aligned with ADR 0029; preserves existing engine operation, Group, projection and native-window contracts. Any required engine-contract change must be separately authorized and linked before this leaf merges.

unowned-rationale: available for a peer to self-select after intake and dependency checks; the epic steward tracks the outcome without pre-assigning a batch.

Origin Session ID: 153d2e0a-ebae-4087-bcd5-3c92d213132c

Parent: #18456 Related: #18304 · #18303

Creation sweep: latest 20 open issues and all-state recent A2A rechecked immediately before creation; no duplicate of this leaf. Problem-specific MC recall checked; current source and the parent contract govern where recall is irrelevant. Own assignments were checked for this same Workstation epic; existing film/guide tickets retain their separate scope.