diff --git a/harness/release-activity-allocation-drag-contract-v2-20260911.md b/harness/release-activity-allocation-drag-contract-v2-20260911.md index f1f83e19..6ee934ae 100644 --- a/harness/release-activity-allocation-drag-contract-v2-20260911.md +++ b/harness/release-activity-allocation-drag-contract-v2-20260911.md @@ -2,6 +2,8 @@ Codex-956atf `/root/capella_process_gap`. Implementation-ready proposal for root ratification of [issue 3](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/3). The [original design](release-activity-allocation-drag-design-20260911.md) and [independent review](release-activity-allocation-drag-review-20260911.md) remain immutable. Root accepted all five review corrections; this document resolves them without claiming implementation, issue closure or full-goal completion. +**2026-09-12 presentation amendment:** the [destination feedback decision](release-allocation-feedback-decision-20260912.md) supersedes references below requiring a duplicate target-name label at its frozen canvas position. Target hit regions and outlines remain frozen; destination identity moves to a dedicated stable toolbar slot. This prevents label occlusion without making ordinary collapsed-target drops unreachable. All semantic, exact-placement and lifetime rules remain binding. + Source inspected at **ff0175488ac57a92d401b00a0e4542582a82d8e9** on `codex/behavior-authoring-20260910`. [Peer issue 4 update 446](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/4#issuecomment-446) now transfers both Allocation and RoleAssignment identities to the first child; that remains peer-owned. This task creates only this report. No production/test/Git/index/compiler/native/Linux/WSL/VPN changes or agents. ## Decisions from the review diff --git a/harness/release-allocation-feedback-decision-20260912.md b/harness/release-allocation-feedback-decision-20260912.md new file mode 100644 index 00000000..17313a5a --- /dev/null +++ b/harness/release-allocation-feedback-decision-20260912.md @@ -0,0 +1,25 @@ +# Allocation destination feedback — 2026-09-12 + +This decision refines the destination presentation in the [v2 allocation contract](release-activity-allocation-drag-contract-v2-20260911.md). 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](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/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. + +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.