Replace the oversized header and reference rail with stable editor slots and a retained supporting drawer. Bind diagnostic, result and menu actions to their original publication and visit; preserve effective selections on navigation and dismiss Actions, Find and the drawer one surface per Escape. Retain exact Windows source captures, eight final gates (871 desktop passes), independent reviews, native selection/rename/recovery trials and the original failures. All 526 tested inputs and staged evidence were byte-checked before commit. Combined preview integration and packaging remain with issue 27; Linux remains paused.
41 lines
6.1 KiB
Markdown
41 lines
6.1 KiB
Markdown
# Text workspace: first native trial
|
|
|
|
This is bounded, failed acceptance of the editing-first [interaction contract](text-workspace-interaction-contract-20260912.md), owned by Codex-9e8r6t in [issue 13](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/13#issuecomment-814). It is not a published build or completed Text usability acceptance. Linux remains user-paused.
|
|
|
|
## Tested identity and prior gates
|
|
|
|
The isolated `codex/text-workspace-9e8r6t` worktree was based on `cbc49a7802fb1bba0dd284fd904c700a0703ae70`, with uncommitted changes captured as 524 raw input files. Attempt 4 input ZIP SHA-256 is `e1e566295bbbd6c1d571f7c8908b7344397293496481790f0f8dacab7eba5366`. GUI SHA-256 is `666afa8747588bbd4e4d8e4059f443dedda1fc42244d467df8d953085707e796` (114,164,224 bytes). It is a Windows gnullvm development-profile executable, with a pinned sibling `libunwind.dll`.
|
|
|
|
Attempt 4 completed strict all-target Clippy, exact 859-test membership including 20 diagnostic guard tests, 26 focused Text tests, full desktop tests (856 passed, zero failed, three intentionally ignored), the separately ignored Confirm timing test, and matching GUI build. All captured inputs remained unchanged. Confirm's measured App update median was 60.04 ms over five samples; this excludes returned Task execution and is not native end-to-end latency. The GUI build finished at 02:37:30 UTC on September 13.
|
|
|
|
Attempt 3 remains failed evidence: 853 passed, one new property-draft fixture assertion failed, three ignored. The fixture mutated `Draft::value` while its authoritative raw field remained unchanged. Attempt 4 uses the real `Message::Field` path and checks raw input, editor and materialized value; no production workaround was introduced for that test error.
|
|
|
|
## Native method and observed results
|
|
|
|
Computer Use operated the actual native window in fresh private trial `trial-text-1`, with isolated profile, temporary files and working directory. It opened the representative source project through the native file dialog. The fixture loaded 30 reachable sources, 94 objects, 62 links and one warning. No Save or Apply occurred during the trial.
|
|
|
|
At the actual 1100 by 700 client minimum (1102 by 732 outer screenshot), the closed drawer leaves 486 px of editor height. The default 180 px drawer leaves 306 px. Three complete navigable reference rows are visible in an expanded file group; the fourth is partly clipped. This counts result rows, not group headers. The wide screenshot was 1442 by 932 outer pixels.
|
|
|
|
The trial exercised a query from `oa_control`, a result jump to the confirm allocation, Back to the originating source location, Larger/Smaller controls and Alt+PageDown/Alt+PageUp, and actual source scrolling while results remained visible. Larger made the drawer 240 px, leaving 246 px of editor; Smaller restored 180 px. Resizing did not dirty source. Back's selection semantics were not controlled and are not accepted by this evidence.
|
|
|
|
Editing marked retained results Stale and disabled their location actions. Undo restored the baseline text and All changes saved; the retained query remained stale because the source revision had changed, as required by snapshot ownership.
|
|
|
|
## Blocking finding: Find Close destroys whole-word selection
|
|
|
|
1. Scroll the participants source and double-click `oa_contact`; the whole alias is visibly selected.
|
|
2. Open Find with Ctrl+F, then click Close. Visible source scroll is retained.
|
|
3. Type `oa_contact_probe`. Instead of replacing the alias, the editor produces `oa_cooa_contact_probentact`.
|
|
4. Undo restores the original alias and saved status.
|
|
5. In the direct control, double-click the same alias and type the same text without opening Find. The whole alias is correctly replaced with `oa_contact_probe`.
|
|
6. Undo again restores the original alias and All changes saved.
|
|
|
|
Thus the failure is specific to the Find focus-restoration path, not generic double-click or typing automation. Source diagnosis identifies a lossy conversion: Iced's word selection exposes the same interior cursor endpoints through `cursor()`, while `move_to()` reconstructs an ordinary range and loses the word-selection kind. Our focus restoration unnecessarily performed this conversion. A correction must restore focus without mutating the live selection while preserving the existing guarded navigation path. Tests comparing cursor endpoints alone cannot detect this failure; they must inspect actual selected text and replacement bytes. The same mechanism predicts a line-selection risk, which was not exercised natively in this trial.
|
|
|
|
## Evidence and limits
|
|
|
|
The original 28 screenshot-backed states and JPEGs, launch/closure receipts, full saved-state oracle receipt and gate logs are retained in the [experiment manifest](experiments/text-workspace-initial-20260913/manifest.json): 106 original payloads, 8,416,558 bytes, manifest SHA-256 `991d54095f5466b717aefde99682e0c7d3136091bdf5525d8f21c0629d3cb0a4`. Runtime executables remain preserved locally by identity and are not copied into this evidence archive. Labels are historical observations, not conclusions: `008-text-minimum-initial` did not resize the window; `009-text-actual-minimum` is the actual minimum. `002-open-dialog` and `005-representative-open-request` are transitional states. `023-find-close-restored-scrolled-selection` preserved scroll but failed selection, as shown by `024-edit-after-find-close`. `026` and `027` establish the direct control; `028` records the final Undo.
|
|
|
|
The GUI launched at 02:38:06 UTC and closed normally through Alt+F4 at 02:55:30 UTC. The owned process returned exit code zero, with empty stdout/stderr and unchanged executable/DLL. The subsequent read-only oracle passed complete saved model/identity and all 30 reachable source bytes; the separate full 37-file physical inventory also matched baseline and was unchanged by verification. This oracle measures disk state, not the live unsaved GUI model.
|
|
|
|
Find correction and a fresh native trial are required. Rename/Save/Undo/Redo/Reopen, complete repeated cross-file navigation, remaining drawer/menu/repair workflows and exceptional-scope native checks were not completed here. Passing automated gates and partial geometry checks do not override the native defect.
|