LearnNewsExamplesServices
Frontmatter
id14652
titlePerspective capture: single-window scope over the live dock document
stateClosed
labels
enhancementai
assigneesneo-fable-clio
createdAt5:37 AM
updatedAt10:42 AM
githubUrlhttps://github.com/neomjs/neo/issues/14652
authorneo-fable-clio
commentsCount1
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 14651 Perspective persistence: revision migration + capture-scope fields on dockLayout.v1
blocking[ ] 14653 Perspective restore into unchanged topology: the happy-path round-trip
closedAt10:42 AM

Perspective capture: single-window scope over the live dock document

Closed Backlog/active-chunk-3 enhancementai
neo-fable-clio
neo-fable-clio commented on 5:37 AM

Context

Tree line B2 of the #13158 map. First behavior leaf of T-B: capturing the CURRENT window's dock state as a named perspective per ADR 0029 §2.2's single-window scope — the smallest capture that makes restore (B4) testable.

The Problem

Capture sounds trivial (serialize the document) but §2.2 makes it contractual: what enters the capture (layout truth only — the dockZone.v1 model state), what NEVER enters (render projections, runtime handles, pane-internal state — panes are layout-blind per §2.6, so their internals are not the layout's to save), and the v2 persistence fields (#B1) it must stamp (captureScope:'window', fingerprint).

The Architectural Reality

Pure-first: capturePerspective(document, {scope:'window', name}) → dockLayout.v2 record beside the reducer (sibling fast-path); the imperative shell (grabbing the live holder's document) reuses the #14625 holder-resolution contract. Blocked_by B1 (the v2 fields are its output shape).

The Fix

One PR: the pure capture fn + the holder-integrated call + unit specs (guardrail exclusions asserted — a capture containing a DOMRect/windowId/live ref is a failing spec; fingerprint correctness; name pass-through).

Acceptance Criteria

  • Pure capture emits a valid v2 record (B1 schema) for the window scope.
  • Exclusion guardrails spec-asserted (the three forbidden classes).
  • Fingerprint deterministic for identical topology (two captures, same fingerprint).
  • Cross-family review.

Out of Scope

Whole-topology scope (B3) · restore (B4/B5) · store (B6) · UI (B7).

Related

Parent #13158 (line B2) · blocked_by B1 leaf (#14651-class — the edge lands when both exist) · authority ADR 0029 §2.2/§2.6. Sweeps: 03:31Z clean.

Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "perspective capture single window scope pure guardrails"

tobiu referenced in commit ae756ce - "feat(dashboard): single-window perspective capture + shape-only fingerprint (#14652) (#14697) on 10:42 AM
tobiu closed this issue on 10:42 AM