Context
Operator escalation (2026-07-10, live): four independent analysis passes (2026-06-14 partner-similarity assessment; ADR 0029 §4's 2026-07-02 six-library sweep; the #13158 46-leaf decomposition; the 2026-07-10 gap-fill tickets) each verified Qt-ADS parity at capability-list altitude and scored the drag experience "landed" — while the operator's standing demand (captured verbatim 2026-07-02: "do not under-estimate QT docking — Qt-Advanced-Docking-System-class") was experience-parity. The result: the epic could have resolved with a structurally superior substrate wearing an inferior interaction skin, and no artifact would have caught it. This ticket makes the closure promise mechanical.
The Problem
ADR 0029 §4's parity table compresses the entire drag interaction into one row — Dock/split/tab + drag preview | ✓ | landed (dockZone.v1) — which is true at the list tier and false at the felt tier: Qt-ADS's drag experience is a drag-preview proxy (static pixmap or dynamically morphing to target geometry), parallel-visible drop indicator overlays (5-position cross + container-edge indicators), per-option translucent target-area previews, tab insertion cues, and Escape-cancel. A checklist that says "drag preview ✓" cannot distinguish that from pointer-position inference showing one affordance at a time. List-parity checks systematically pass what experience-parity demands.
The Architectural Reality
- ADR 0029 §4 is the authority tier that downstream trees/tickets inherit; its row grain is therefore load-bearing — a coarse row propagates as a settled fact (empirically: it did, three times).
- The ADR's own escalation clause requires amendments to land ADR-first. This ticket carries the §4 amendment: split row 1 into its real sub-rows (drag proxy · indicator options · per-option preview · insertion cues · escape-cancel · commit animation), each with an honest Neo-target status.
- The epic-resolution protocol supplies the closeout matrix mechanism; this gate binds it to the amended §4 inventory.
The Fix
One PR:
- ADR 0029 §4 amendment — row 1 decomposed into the interaction sub-rows above, statuses honest as of amendment date (most become "specified:
#14929/#14930", not "landed").
- The closure gate on
#13158 — an epic-body/closeout requirement: the epic cannot be resolved without an item-by-item experience-parity matrix against the amended §4 inventory, each row evidenced by a recorded interaction, e2e spec, or live demo beat (evidence links, not assertions).
- The altitude rule, one line, in the industry-friction-radar skill's sweep discipline: when an external system is designated a capability floor, parity rows must be authored at interaction grain, not feature-name grain — with this incident as the empirical anchor.
Acceptance Criteria
Out of Scope
- Implementing the interaction tier itself (
#14929, #14930).
- Re-running the six-library sweep (the §4 non-Qt-ADS rows stand; re-validation trigger unchanged).
Decision Record impact
amends ADR 0029 (§4 row grain) — per the ADR's own amendment path; no §2 contract changes.
Related: parent #13158 · executes against #14929/#14930 · sources: ADR 0029 §4, the 2026-07-02 operator capture on #13158 (comment thread), Qt-ADS README (fetched 2026-07-10).
Live latest-open sweep: latest-20 checked this hour; no equivalent. A2A herd window: no overlapping claim.
Origin Session ID: 54156254-a1a8-40b3-ba22-86e7d2a1bf81
Retrieval Hint: "experience parity matrix Qt-ADS interaction inventory closure gate altitude error"
Context
Operator escalation (2026-07-10, live): four independent analysis passes (2026-06-14 partner-similarity assessment; ADR 0029 §4's 2026-07-02 six-library sweep; the
#1315846-leaf decomposition; the 2026-07-10 gap-fill tickets) each verified Qt-ADS parity at capability-list altitude and scored the drag experience "landed" — while the operator's standing demand (captured verbatim 2026-07-02: "do not under-estimate QT docking — Qt-Advanced-Docking-System-class") was experience-parity. The result: the epic could have resolved with a structurally superior substrate wearing an inferior interaction skin, and no artifact would have caught it. This ticket makes the closure promise mechanical.The Problem
ADR 0029 §4's parity table compresses the entire drag interaction into one row —
Dock/split/tab + drag preview | ✓ | landed (dockZone.v1)— which is true at the list tier and false at the felt tier: Qt-ADS's drag experience is a drag-preview proxy (static pixmap or dynamically morphing to target geometry), parallel-visible drop indicator overlays (5-position cross + container-edge indicators), per-option translucent target-area previews, tab insertion cues, and Escape-cancel. A checklist that says "drag preview ✓" cannot distinguish that from pointer-position inference showing one affordance at a time. List-parity checks systematically pass what experience-parity demands.The Architectural Reality
The Fix
One PR:
#14929/#14930", not "landed").#13158— an epic-body/closeout requirement: the epic cannot be resolved without an item-by-item experience-parity matrix against the amended §4 inventory, each row evidenced by a recorded interaction, e2e spec, or live demo beat (evidence links, not assertions).Acceptance Criteria
#13158carries the closure-gate requirement; the epic-resolution matrix template references the amended inventory.Out of Scope
#14929,#14930).Decision Record impact
amends ADR 0029(§4 row grain) — per the ADR's own amendment path; no §2 contract changes.Related: parent
#13158· executes against#14929/#14930· sources: ADR 0029 §4, the 2026-07-02 operator capture on#13158(comment thread), Qt-ADS README (fetched 2026-07-10).Live latest-open sweep: latest-20 checked this hour; no equivalent. A2A herd window: no overlapping claim.
Origin Session ID: 54156254-a1a8-40b3-ba22-86e7d2a1bf81 Retrieval Hint: "experience parity matrix Qt-ADS interaction inventory closure gate altitude error"