Files
ARCADIA-Studio/harness/release-allocation-feedback-decision-20260912.md
T

4.4 KiB
Raw Blame History

Allocation destination feedback — 2026-09-12

This decision refines the destination presentation in the v2 allocation contract. User requirements remain ordinary, understandable work dragging, useful visual nesting, exact preview, and readable work and destination. Frozen input geometry is an implementation choice to prevent target changes during projection; a duplicate label fixed to the old geometry is not a user requirement. Live work remains issue 3.

Evidence and rejected approaches

Independent source review of d9b3f0d found that the new overlap refusal prevents every ordinary header drop onto a collapsed performer named Receiving subsystem. With a performer at (100,100), width 224, its target is [100,324) by [100,162). The frozen label occupies [110,308) by [131,153). A work grab offset (40,35) maps every target point to a snapped 224-by-62 work header intersecting that label. Asking users to aim below or beside it cannot recover the held gesture inside that target.

The original Receiver case also establishes why ignoring the overlap is wrong: the duplicate opaque feedback label covers the work name. Changing paint order merely hides the other name. Moving work, packing siblings, or expanding an invisible target area would change exact placement or hit semantics to accommodate incidental feedback.

A frozen-first, candidate-header-second label policy preserves placement and fixes the first examples. It still fails the collapsed case when pan.y is -100: visible work roots y100–130 have candidate label tops y67–97, above the viewport. Both available label locations fail even though the selected work and target hit region are visible. This extra geometry policy does not justify retaining its reachability limitation.

Accepted presentation

Retain frozen visible target regions, occluders, semantic precedence and target outlines. Remove the duplicate opaque target-name overlay from the canvas. Show destination identity in a dedicated toolbar slot outside the canvas, separate from refusal or explanatory prose. Use the same frozen target identity as the resolver and preview; never infer a target from feedback position.

The slot must remain visible and readable at the 1100-by-700 minimum, with stable toolbar/canvas bounds before, during and after the gesture. Long names may use explicit truncation with access to the full name; explanatory or refusal text must not displace the identity or paint over the diagram. Multiple incomparable targets must be identified as ambiguity, not as one accepted destination.

Hover inspection must work during a held drag. Moving to the toolbar makes the current destination ineligible; a gesture-local copy of the most recent captured target identities may remain in the tooltip, explicitly labeled Last target (or ambiguous targets). These names are inspection data only and never resolve or authorize a drop. Releasing outside cancels without mutation; returning to the canvas resolves a current target again. Retiring or replacing the gesture clears its inspection data. This distinction addresses a second independent finding: a tooltip of the live destination alone loses its name as soon as the pointer leaves the canvas to inspect it.

Keep selected-work viewport and zoom readability checks, exact model/source/command comparisons, pointer offsets, snap, cancellation, role/dependency rules and one-step history unchanged. Remove obsolete admission based on the location of a label that is no longer drawn on the canvas. A selected work header outside the viewport or a real card collision remains a refusal.

Verification obligations

Exercise OA and SA ordinary incoming/between/outgoing drags, the original Receiver drop, the collapsed long-name drop, and its top-viewport form through actual pointer resolution. Require exact snapped placement and target unfold where applicable, unchanged source/history before release, and complete one-step Undo/Redo afterward. Render the actual App tree at minimum and larger sizes; verify the dedicated identity, unchanged canvas bounds, and independence from long/refusal prose. Retain meaningful off-viewport/collision refusal and draft-focus tests.

The decision is accepted for implementation; the revised implementation and tests are not yet verified. Source review and mathematical counterexamples are not native usability acceptance. Linux/WSL remains user-paused.