LearnNewsExamplesServices
Frontmatter
id18614
titleThe dock guides teach activePerspective_ and dock.perspective bindings
stateClosed
labels
documentationenhancementaidashboard
assigneesneo-fable
createdAtSep 12, 2026, 4:05 PM
updatedAtSep 13, 2026, 12:09 PM
githubUrlhttps://github.com/neomjs/neo/issues/18614
authorneo-fable
commentsCount0
parentIssue18605
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 18608 The Workspace publishes dock.perspective.active, modified and pending
blocking[]
closedAtSep 13, 2026, 12:09 PM

The dock guides teach activePerspective_ and dock.perspective bindings

Closed Backlog/active-chunk-22 documentationenhancementaidashboard
neo-fable
neo-fable commented on Sep 12, 2026, 4:05 PM

Leaf of #18605 (parent linked natively; blocked by the published-truth leaf). Decision Record: Required: ADR 0029 amend (the amendment leaf) · Decision Record impact: none.

unowned-rationale: filed from the design seat at graduation; claimable by self-selection.

Context

The guides carry the stage-one story (panes + zones, #18474) and the saved-perspective story (the wrappers), and nothing between them. The OQ8 docs rule from D#18594 rides here: a formula on an ancestor provider never observes a descendant's publication — bind and derive on the publishing provider or below.

The Problem

At dev@28e56e1543: learn/guides/uibuildingblocks/DockLayoutsPanes.md (321 lines) has zero perspective mentions — the QueueWorkspace example stops at one arrangement; DockLayouts.md (269 lines, 10 mentions; :213 "Persist through the wrappers, not by hand") and DockLayoutsAdoption.md (534 lines, 9 mentions) describe perspectives as saved records only; learn/agentos/DockZoneModel.md §"Named Layout Collections / Perspectives" (:254–289) says at :283 that restoring a perspective must go through restoreSavedLayout() — true for snapshots, and now half the story.

The Fix

  • DockLayoutsPanes.md: a stage-two section — two declared perspectives on the QueueWorkspace, activePerspective_, a bound switcher (bind: {pressed: …} / twoWay), the activePerspectiveChange event, and the tab.Container parallel; the live-preview example runs.
  • DockLayouts.md / DockLayoutsAdoption.md: the two name sources stated plainly — declared perspectives select, saved records are snapshots with provenance; the reserved name; dock.perspective.{active, modified, pending} and what each answers (with pending ≠ the refresh promise).
  • DockZoneModel.md:283: a second sentence — declared restores go through the accepted write on the workspace; saved restores through the wrappers.
  • The provider rule, with its one-line reason, wherever a binding example appears.
  • learn/agentos/tooling/NeuralLinkCapabilityMatrix.md (author fold at claim, 2026-09-13): the list_perspectives and restore_perspective rows state the shipped declared contract — declared and perspective: {active, modified, pending} beside the stored summaries in the list's purpose and error shape; the restore's resolution across the declared list and both record collections, the tie refusal naming its sources, and source: 'declared' on the accepted activePerspective write. The Brain's mirror (neomjs/neo-agent-brain#350) could not carry these rows: the matrix is an engine document.
  • Never a ticket id in a guide.

Acceptance Criteria

  • The four documents above are updated; the QueueWorkspace perspectives example renders in the live preview and its switcher works.
  • The provider rule ("bind and derive on the publishing provider or below") appears with its reason beside the first binding example.
  • The capability matrix's two perspective rows state the declared contract, and the matrix's own consistency checks keep passing.
  • No ticket, PR or Discussion id appears in any guide text.
  • Knowledge Base re-ingest of the touched documents after merge; the PR Refs #18605 and Resolves this leaf only.

Out of Scope

The ADR (own leaf, first); API docblocks (they land with the engine leaves).

Related

#18605 · D#18594 (OQ8 docs half) · #18474.

Filed at the graduation of D#18594 as a leaf of #18605; live latest-open sweep at 2026-09-12T13:55:27Z found no equivalent.

Origin Session ID: c42870ab-3721-40f0-a1f8-f385786ffc3c Retrieval Hint: "DockLayoutsPanes guide perspectives activePerspective_ bound switcher provider rule DockZoneModel"

🪢 Mnemosyne (Claude Fable 5.1, Claude Code) · session c42870ab-3721-40f0-a1f8-f385786ffc3c