LearnNewsExamplesServices
Frontmatter
id14989
titlePin DockMotion geometry witnesses to one logical item across reprojection
stateClosed
labels
bugaitesting
assigneesneo-gpt
createdAtJul 10, 2026, 10:16 PM
updatedAt6:57 AM
githubUrlhttps://github.com/neomjs/neo/issues/14989
authorneo-gpt
commentsCount0
parentIssue13158
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAt6:57 AM
milestonev13.2

Pin DockMotion geometry witnesses to one logical item across reprojection

Closed Backlog/active-chunk-5 bugaitesting
neo-gpt
neo-gpt commented on Jul 10, 2026, 10:16 PM

Context

PR #14981 converts the dock motion E2E suite from instance-bound sampling to DOM-marker sampling and closes the major false-green classes found in review. Its exact-head dashboard suite is green and the production motion/CSS changes are independently valid.

The cycle-2 audit found one remaining test-only correlation gap. Per the operator's throughput rule, this is isolated as an owned hardening leaf instead of another #14981 author cycle.

The Problem

The resize and reduced-motion journeys use the generic selector:

[class*="dock-flip-item-"]

The sampler re-queries the DOM on every rAF across a wholesale projection rebuild. If DOM order changes, the “first” marker may identify logical pane A before the operation and pane B after it. A before/after width delta greater than 50px and at most two distinct widths can then pass while comparing two different panes.

The FLIP journey correctly uses the per-item marker, but its assertion block omits the shared samples.every(sample => sample.w > 0) guard promised by the helper contract and present in the resize/reveal/reduced consumers.

Source of Authority

  • DockMotionNL.spec.mjs: stable-marker sampler contract and four motion witnesses.
  • DockLayoutAdapter projection: per-item dock-flip-item-<encoded itemId> correlation key.
  • Issue #14973 / PR #14981: motion evidence must fail closed across instance-destroying reprojection.

Expected Behavior

Every journey that compares geometry across reprojection pins one logical item's exact marker before starting the sampler. A disappearing/replaced/unlaid-out marker produces gaps or zero-size failure; it can never silently switch to another pane. Every geometry consumer enforces the shared positive-width invariant before shape assertions.

Acceptance Criteria

  • Resize and reduced-motion choose a real logical itemId from current topology and sample its exact encoded marker.
  • A focused falsifier reorders/reprojects DOM markers so a generic-first selector would switch panes; the exact selector stays bound or fails closed.
  • FLIP adds the same positive-width guard used by the other geometry consumers.
  • Sample-floor, document-target, final replacement geometry, and reduced-motion <= 2 contracts remain intact.
  • Focused DockMotionNL and related dashboard motion journeys pass with freshly built themes.

Fix Sketch

Lift a tiny helper that derives the exact per-item selector from an item id. Reuse it in FLIP, resize, and reduced-motion. For resize/reduced, select one stable item from the current document before the operation; do not rely on DOM order. Add the missing common invariant check to FLIP.

No production code, tokens, or persisted schema change.

Contract Ledger

Target Surface Source of Authority Required Behavior Failure Mode Evidence
marker correlation per-item projection class same logical item before/after gap/timeout, never item switch reorder falsifier
geometry samples sampler contract every accepted width is positive assertion failure shared guard
reduced motion #14973 real resize, ≤2 widths no-op/dead/switch fails exact-head E2E

Decision Record Impact

None — test hardening only.

Relations

Parent: #13158 · source ticket #14973 · discovered in cycle-2 review of PR #14981 · detector overlap remains owned by #14984 / PR #14986.

Live duplicate sweep: three focused GitHub searches plus the latest open issue queue checked at 2026-07-10T20:15Z; no equivalent issue found.

Origin Session ID: 019f484c-662f-7f31-969a-cbde373efd4a

Retrieval Hint: DockMotion generic first marker switches logical pane across reprojection reduced motion false positive

tobiu referenced in commit b087713 - "test(dashboard): pin motion witnesses to logical items (#14989) (#15070)" on 6:57 AM
tobiu closed this issue on 6:57 AM