Files
ARCADIA-Studio/harness/drag-out-20260925.md
T

89 lines
5.4 KiB
Markdown

# Outgoing allocation dragging
Scope: [issue 40](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/40),
based on published Windows source `715036e132677dd2bc2fb37ed316d93dc9987aec`.
This contribution is not integrated release acceptance. User requirements remain
in `PROJECT_GOAL.md`; this note records a revision to derived interaction policy.
## Reproduction and cause
The released executable SHA256
`2c03bd6cc3f1110c219e4f57ab94874a121590f83779239a93289b7170664399`
opened a copied Allocation/Process companion fixture on Windows. At 1440x900,
72% Fit, the OA assign view's X-receive was dragged from window (486,546) to
(365,546), just beyond A's left edge. It remained assigned at its original
position, reporting enlarged card overlap. A control drag to (625,572) removed
assignment; Undo restored the original scene. These are actual native end-state
observations; intermediate jitter was diagnosed from source, not frame capture.
Frozen targets resolve from the pointer, while placement retains its grab
offset. The pointer therefore leaves its performer before the full work card
does. Former parent/child intersection becomes unrelated overlap after removing
allocation. Refused motion previously cleared the preview and redrew the saved
scene. Additionally, whole-header viewport containment rejects a useful outgoing
position in the fitted reproduction even when its model geometry is valid.
## Selected policy
Try exact snapped pointer placement first. Only an outgoing assignment candidate
with a placement refusal may propose bounded source clearance: move the entire
captured work footprint through a crossed frozen source boundary, clearing the
post-removal source enclosure by one 10-world-unit grid cell. Consider at most
four directions, ordered by press-to-pointer boundary-crossing fraction and a
fixed direction tie-break. Existing placement, collision, semantic, exact-command
and source/history admission remain authoritative. No neighbor is moved, no
general packing/search occurs, and no semantic refusal is overridden.
The accepted/candidate semantic indexes are reused during fallback projections.
Outgoing headers may be partly clipped but each must retain a 24x24 logical-pixel
grab region. Other assignment and Arrange visibility rules remain unchanged.
The exact corrected candidate is previewed; release recomputes it. Blocked
in-bounds motion retains its last admitted scene and adds an orange pointer
outline. This display state confers no permission to commit on refused release.
Cancel, outside release and gesture invalidation retire it normally.
Rejected alternatives: retaining a moving outline alone leaves the boundary
dead band; allowing unrelated overlap makes unassigned work look allocated;
general auto-layout changes unrelated placement and makes drag intent harder to
predict. The previous unconditional pointer-offset rule is narrowed in
`docs/language.rst` and its HTML copy. Real neighboring-card collisions and
insufficient visible grab area can still refuse a drop.
## Verification status
Independent source diagnosis and repair critique found no semantic/stale/cancel
bypass. Review exposed the remaining whole-header camera restriction and an
obsolete retained-preview assertion; both were revised. Added checks cover
OA/SA boundary clearance, corners, source shrinkage, rigid descendants/groups,
real App frame-by-frame input, exact source/history, cancellation, blocked release
and outgoing grab-area boundaries. At clean source
`1a669130fb6d2b65279aab3847e966a1a282c191`, the Windows allocation-drag
suite passes 121 tests (none failed or ignored; 1,424 filtered out), strict
desktop all-target Clippy passes, and the normal desktop development build
passes. [Raw results and reproduction commands](experiments/drag-out-20260925/README.md)
preserve the source, platform, failed attempts and exact scope. These checks do
not prove native usability. Computer Use was stopped with the physical Escape
key before the changed executable could be inspected. Fitted-view dragging,
clipped-card identification/regrabbing, native Undo/Redo and Save/reopen remain
unverified. The issue remains open; no integration or release acceptance follows
from the targeted gates.
Test-only successor `24b1eab07d306d8cb091bb46f7daf9f027a8f1c0` additionally
checks an actual fallback blocked by unrelated work, including preservation of
an existing redo branch, and an outgoing move while an allocated sibling keeps
the source enclosure expanded. Both run for OA and SA. All 123 allocation-drag
tests and strict desktop Clippy pass at that successor. Fresh independent review
confirms those tests exercise their claimed invariants, with no material source
finding in this scope. The same linked evidence includes the new logs and review;
production code and native-acceptance limits remain unchanged.
The first build attempt failed before tests because the sparse checkout omitted
`build/windows_manifest.rs`; restoring the tracked build directory corrected the
checkout. The local drive initially had about 22 MB free. Git sparse checkout and
Cargo's package-scoped cleanup of inactive desktop artifacts recovered capacity.
Automatic review rejected recursive deletion of the extracted preview; it was
left intact. No published package or unique evidence was deleted.
The second attempt also exposed omitted tracked harness fixtures and a `Self`
typo in a standalone test helper; both were corrected before the passing run.
That failed compiler process was terminated after its errors were captured.