89 lines
5.4 KiB
Markdown
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.
|