Frontmatter
| id | 14930 |
| title | Human-drag showcase beat + dock-guide affordance polish pass |
| state | Open |
| labels | enhancementai |
| assignees | neo-fable-clio |
| createdAt | 6:47 AM |
| updatedAt | 8:14 AM |
| githubUrl | https://github.com/neomjs/neo/issues/14930 |
| author | neo-fable-clio |
| commentsCount | 4 |
| parentIssue | 13158 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |
| blockedBy | [] |
| blocking | [] |
Human-drag showcase beat + dock-guide affordance polish pass

Re: human-drag showcase beat dock-guide affordance — We dogfood in public and file what failed, not just the highlight reel. We tag public issues with the receipt id that reproduced the failure. What's your current approach to human-drag showcase beat dock-guide affordance?
@neo-fable-clio - 2026-07-10T06:13:25Z
Design authority LANDED — implementation slice map + named gates (claimed, in progress)
Slice 1 (done, pushed): the drag-affordance authority section (§06) is in the design artifact on agent/14930-drag-affordance-design (commit 7665a8dee, render-verified) — the disposition is decided: indicator-overlay menu = primary affordance (5-position cross + container edge chips, all options visible; per-option target preview, accept signal-tinted / reject policy-honest; drag proxy; Escape-cancel absorbing tree line C5 single-window), edge-band inference = fallback tier (touch + pre-hover). Tokens bound to the FM vocabulary; every duration via the --dock-transition-* contract (zero local motion policy — consumes the #14779/#14947 substrate by reference).
Remaining slices, gated honestly:
- Producer full-candidate-set extension — BLOCKED on PR #14933 (open; it owns
DockPreviewProducer.mjsin flight). Extendsproduce()-adjacent surface to return all valid candidates for the hovered area; presentation-tier, reducer untouched. Unblocks when #14933 merges. DockDropIndicatorspresentation component — downstream of the producer extension (renders its candidate set).DockPreviewtoken polish to the §06 authority — independent, next up (replaces the hardcoded palette vars with FM tokens + contract motion).- The cold-open camera beat on the Demo-A surface — last, consumes all of the above.
One-PR-per-slice discipline applies; this branch carries slice 1 (+ the polish slice if it stays small) toward its own PR.
— Clio (@neo-fable-clio · Fable 5)

@gleephoenixcrew this works very well with the neural link possession interface, and afterwards saving view permutations as whitebox e2e tests. plus saving memory core session ids.
- 2026-07-10T06:15:55Z @neo-fable-clio referenced in commit
4ce5822- "feat(design): dock-preview affordances speak the FM family + the motion contract (#14930)"
Context
Operator directive (2026-07-10, live session, PRIO 0): the docking epic lives from drag and drop — visible drop targets, dropping into them, animated layout updates — and nothing visual has been put in front of the operator. Qt-ADS is the designated capability floor, and its signature felt experience is the drag: dock guides light up, areas highlight, the drop commits smoothly. Tree audit this session (all 46
#13158leaves): the drag mechanics are landed and e2e-proven, but no leaf owns the drag experience as a showcase, and the affordance visuals have no design authority (tree line I4 covers token alignment only).The Problem
Two gaps, one story:
DockPreview(apps/agentos) already renders accept zones (translucent fill + border), reject zones (red dashed), split insertion bars and tab before/after markers with 120ms transitions — verified this session — but the visual language is placeholder-grade (hardcoded GitHub-blue vars), has no design-artifact authority, and predates the FM token family.The Architectural Reality
examples/dashboard/dock: pointer drag →DockPreviewProducer.produce()→DockPreviewaffordance render →previewToOperation()→ reducer commit (MainContainer.mjs:546-556). Grace's gesture layer (#14851/#14864/#14906) made drags real;#14913(claimed) is fixing the cross-zone drop regression.apps/agentos/view/DockPreview.mjs+resources/scss/src/apps/agentos/DockPreview.scss(+ theme layers). Tokens: the FM module vocabulary (apps/agentos/TOKENS.md) — a new token is a recorded design decision per that doc's rule.apps/agentos/childapps/dockdemo/): the design artifact already promises "manual-drive stays available — the tour yields"; the human-drag beat is the natural opening scene before the NL tour ("your hands first — now watch an agent do it").The Fix
One PR (design-first, house precedent):
apps/agentos/design/dock-choreography-demo.html(or a sibling design page if it outgrows a section): zone glow/fill/border treatment on FM tokens, insertion-bar treatment, accept vs reject states, easing/durations, and the explicit compass-guide-vs-edge-band disposition with rationale.DockPreviewto that authority: token-pure styling (no hardcoded palette), motion per the artifact, reduced-motion compliance — folds tree line I4 (FM-module alignment) into this leaf.Acceptance Criteria
DockPreviewvisuals match the artifact exactly: accept/reject zones, insertion bars, token-pure, reduced-motion compliant.Out of Scope
#14929, the sibling FLIP leaf — this beat consumes it).#14772owns the two-window transfer showcase).Decision Record impact
aligned-with ADR 0029— presentation/design tier over the landed §2.1/§2.3 seams.Related: parent
#13158· sibling#14929(FLIP commit animation — consumed) · substrate#14906(rails),#14913(cross-zone regression, claimed — this leaf builds after it lands) · folds tree line I4 · boundary#14772.Live latest-open sweep: checked latest 20 open issues at 2026-07-10T04:4xZ; no equivalent. A2A in-flight claim sweep: herd window scanned same-turn; no overlapping claim.
Origin Session ID: 54156254-a1a8-40b3-ba22-86e7d2a1bf81 Retrieval Hint: "human drag showcase beat dock guide affordance polish DockPreview design artifact"