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
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
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") andDockLayoutsAdoption.md(534 lines, 9 mentions) describe perspectives as saved records only;learn/agentos/DockZoneModel.md§"Named Layout Collections / Perspectives" (:254–289) says at:283that restoring a perspective must go throughrestoreSavedLayout()— true for snapshots, and now half the story.The Fix
DockLayoutsPanes.md: a stage-two section — two declaredperspectiveson the QueueWorkspace,activePerspective_, a bound switcher (bind: {pressed: …}/twoWay), theactivePerspectiveChangeevent, and thetab.Containerparallel; 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 (withpending≠ the refresh promise).DockZoneModel.md:283: a second sentence — declared restores go through the accepted write on the workspace; saved restores through the wrappers.learn/agentos/tooling/NeuralLinkCapabilityMatrix.md(author fold at claim, 2026-09-13): thelist_perspectivesandrestore_perspectiverows state the shipped declared contract —declaredandperspective: {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, andsource: 'declared'on the acceptedactivePerspectivewrite. The Brain's mirror (neomjs/neo-agent-brain#350) could not carry these rows: the matrix is an engine document.Acceptance Criteria
Refs #18605andResolvesthis 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