LearnNewsExamplesServices
Frontmatter
id16342
titleWorkstation: wire the perspective store surface for scene-7 activation
stateClosed
labels
enhancementaitesting
assigneesneo-kimi-phoebe
createdAtAug 2, 2026, 1:39 PM
updatedAtAug 2, 2026, 3:30 PM
githubUrlhttps://github.com/neomjs/neo/issues/16342
authorneo-kimi-phoebe
commentsCount1
parentIssue15252
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 2, 2026, 3:30 PM

Workstation: wire the perspective store surface for scene-7 activation

Closed Backlog/active-chunk-11 enhancementaitesting
neo-kimi-phoebe
neo-kimi-phoebe commented on Aug 2, 2026, 1:39 PM

Context

R2 readiness finding for #15252 (named first as a follow-up concern in the PR #16328 screenplay review). The flagship screenplay's scene 7 (film-perspectives-undo, apps/workstation/tour/fiveBeatFilm.mjs) is conditional: "activates when the workstation perspective + transaction wiring lands." The undo/redo half is now provable on the workstation (below); the perspective half is not — and no ticket owned that gap until this one.

The Problem

apps/workstation's Workspace is a ready dock-document holder — applyDockZoneOperation (Workspace.mjs:568) + getDockZoneDocument (Workspace.mjs:702) — but exposes no perspectiveStore (grep receipt: zero DockPerspectiveStore hits in apps/workstation/, 2026-08-02). Against the NL perspective trio this means:

  • capture_perspectivecaptured: true, stored: false (the agent holds the record; storing is declared absent, never silently absorbed — src/ai/client/DockService.mjs:195-199)
  • list_perspectives → fail-closed structured error (:222-224)
  • restore_perspective → fail-closed structured error (:264-266)

So scene 7's "save this arrangement… one click restores it" is not provable today on the film's primary surface, even though it is fully witnessed on the dockdemo (DemoBPerspectiveToolsNL.spec.mjs).

The undo/redo half needs no app change: the recording hook (Neo.ai.client.DockService#buildDockReverse, merged via PR #16332) fires on the NL execute_dock_operation path against any holder. Live receipt on the workstation at head 5703e0d18f (headed, this host, session 4800f3f4): begin_transactionmoveItem(feed → scale-tabs)commit_transaction (committed: true, ops: 1) → undo (exact baseline document) → redo (re-applied). The transaction cell of scene 7 is provable TODAY.

The Architectural Reality

  • Store precedent: DemoBWorkspace.mjs:461 instantiates Neo.dashboard.DockPerspectiveStore; its switcher bar is born from store lifecycle events (:618-631) and restores via loadPerspectiveByName (:1223, :4396)
  • The NL tools resolve the store from the HOLDER (holder.perspectiveStore) — wiring the store onto the workstation Workspace activates all three tools with zero service changes
  • The screenplay's conditional marker lifts only when the beats have witnesses (spec = authority, film = derivative)

The Fix

  1. Wire a DockPerspectiveStore into the workstation Workspace (Demo B precedent): instantiate + lifecycle binding, and the minimal restore surface the screenplay automation needs (the NL trio is the drive path; a switcher-equivalent UI is optional garnish, not required for scene 7).
  2. Whitebox-e2e witness on the workstation: NL capture → disruptive rearrangement → restore (exact document + same instances) + list, sibling to DemoBPerspectiveToolsNL.spec.mjs.
  3. Comment on #15252 when green so scene 7's perspective half flips to provable.

Acceptance Criteria

  • capture_perspective against the workstation Workspace returns stored: true
  • list_perspectives / restore_perspective return store-backed results (no fail-closed absence)
  • Whitebox-e2e spec green (headed): capture → disrupt → restore returns the exact pre-disruption dockZone.v1 document with instances intact
  • Live headed receipt pasted on this ticket
  • Claim boundary honored (#15243#15245)

Out of Scope

  • Undo/redo machinery (merged; workstation receipt already in hand — this ticket's Problem section)
  • A perspective switcher UI for the workstation (optional; the NL drive path is the film's surface)
  • Dockdemo perspective work (done — #16315 / PR #16319)

Related

  • Parent epic: #15252 (scene-7 activation leaf)
  • Screenplay + conditional: PR #16328 (apps/workstation/tour/fiveBeatFilm.mjs, scene film-perspectives-undo)
  • Precedents: #16315 (dockdemo path), PR #16332 (transaction machinery)
  • R2 witness matrix: #15252 comment (this ticket is the scene-7 perspective cell)

Live latest-open sweep: checked latest 20 open issues at 2026-08-02T11:3xZ; no equivalent found. A2A in-flight sweep: no competing claim on this scope.

Origin Session ID: 1a7e3f91-8356-48bb-a353-9fd7da2647f5

Retrieval Hint: "workstation perspective store scene-7 activation DockPerspectiveStore"

tobiu referenced in commit d408d88 - "feat(workstation): wire the perspective store surface for the NL trio (#16342) (#16351)" on Aug 2, 2026, 3:30 PM
tobiu closed this issue on Aug 2, 2026, 3:30 PM