# Text workspace: verified Windows contribution The Text workspace now keeps editing space available, puts References/Problems/Status in a compact supporting drawer, and retains source selection through Find, Back and file return. Successive Escapes dismiss Actions, Find and the drawer separately. This is the bounded contribution for [issue 13](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/13), based on `cbc49a7802fb1bba0dd284fd904c700a0703ae70`. Combined integration and packaging belong to [issue 27](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/27); this report does not accept that union or the full OA/SA release. ## Behavior and design The [interaction contract](text-workspace-interaction-contract-20260912.md) owns the precise layout, authority and lifecycle rules. Five permanent sibling slots keep the actual sensor/highlighter/editor in place. Supporting information is available on demand; opening Find or changing a drawer does not rebuild editor content. Grouped references retain full paths, query context and scroll. Stale data remains readable but cannot authorize a source jump. Diagnostic and reference actions bind their original publication and drawer visit; mounted input guards consume a release after its pressed row has been replaced or hidden. Find focus restoration retains the existing ticket and raw-input guards but no longer converts live Word/Line selection through lossy cursor endpoints. Successful navigation departures separately capture the effective selected byte range. The [selection rationale and falsifiers](text-selection-correction-20260913.md) explain why these are different operations. A proposed cursor-equality shortcut and the original cursor-only checks were insufficient; actual selected bytes and subsequent replacement distinguish the native failure. ## Verification and retained failures The [first native trial](text-workspace-native-initial-20260913.md) found the Find selection failure despite passing compilation and tests. Corrected mounted red/green evidence discriminated that failure. [Trial 2](text-workspace-native2-20260913.md) then passed seven native typing probes, compact layout, retained results, representative and Unicode-path rename/Save/model-Undo/Redo transactions, graphical reopen and incomplete-source recovery. Exact saved expectations were authored separately from those UI actions. It exposed the inherited simultaneous Find/drawer Escape behavior; its evidence cannot verify the later correction. Final attempt 6 captured **526 exact source inputs**, ZIP SHA-256 `960c2ebeab73af1fbf593268e4dc1687011588da86d808e039a6fd28658ec347`. Only `app.rs` and `app/source_symbols/tests.rs` differ from trial 2's attempt-5 inputs: the scoped Escape correction and its existing regression expectations. All eight serial Windows gates retained identical inputs: | Check | Result | | --- | --- | | Escape regressions | 23 passed, including the three updated priority/subscription tests | | Strict Clippy | All targets passed with warnings denied | | Test membership | 874 unique tests; all 28 required names and 20 diagnostic Guard tests present | | Text / selection filters | 30 / 58 passed; these overlap the full suite | | Full desktop suite | 871 passed, zero failed, three explicitly ignored manual experiments | | Separate ignored rename timing | One passed; five Confirm App-update samples, median 37.8124 ms | | Matching GUI | Actual non-fresh Cargo development artifact built successfully | The [independent attempt-6 audit](experiments/text-workspace-native3-20260913/reviews/attempt6-evidence-review.md) verifies every source member and CRC, exact listed/outcome identities, all receipts/log hashes, serial chronology and raw Cargo artifact identity. The [Escape source review](experiments/text-workspace-native3-20260913/reviews/escape-correction-review.md) checks higher-priority modal routing and actual Captured/Ignored subscription evaluation. CPU-mounted tests are not native GPU or accessibility proof. Timing excludes returned Task execution and native rendering; the other two ignored experiments were not run in this attempt. ## Native Escape replay Trial 3 ran preserved GUI SHA-256 `0ee1425174bdc93399f97d926f832b3ece1671bc4cd484d45a2844bdeed08399`, 114,171,904 bytes, with a fresh private profile, temporary/current directories, sanitized Windows PATH and the pinned sibling DLL. PID 4288 ran from **2026-09-13 04:44:53.418424 UTC to 04:51:07.980916 UTC**. It closed normally with exit 0, empty stdout/stderr, and unchanged executable/DLL. No Save or Apply occurred; both temporary typing probes were undone. The [original trial-3 archive](experiments/text-workspace-native3-20260913/manifest.json) contains 115 payloads / 7,138,817 bytes; manifest SHA-256 `07c765910f3d7bda3e298b32f6a12feb578214c61c241b0ac0cebc6c46e28db8`. It retains 31 screenshot-state records and 34 original JPEGs, source/gate/launch/closure bindings, the actual recorder and archive helpers, and the final saved-disk check. Existing fixture baselines/expectations are linked to the trial-2 archive rather than duplicated. The [independent native audit](experiments/text-workspace-followup-review-20260913/native3-evidence-review.md) verifies every archived payload against its original, the external pins and source ZIP, and directly inspects the dismissal/replacement images below. | Captures | Observed behavior | | --- | --- | | 015–019 | Double-click selects the complete `oa_control` alias. References opens with one declaration/ten uses; its body is scrolled before opening Find and Actions. | | 020–022 | First Escape closes only Actions. Second closes only Find, restores the visible selected alias and retains the scrolled results. Third closes the drawer while retaining that selection. | | 023–024 | Typing `oa_control_escape_probe` replaces the whole alias; one text Undo restores visible original source and All changes saved. | | 025–026 | Reopening through Status and returning to References retains the same lower result position. Results are correctly Stale after edit/Undo changed the source revision. | | 027–031 | Triple-click selects the complete description line. Escape from focused Find closes Find while leaving the drawer and selected line visible. Typing ` description "escape_line_probe";` replaces that line; Undo restores its original text and saved status. | The final closed-process comparator passes complete decoded model/identity and all 30 reachable source bytes; its wrapper also verifies all 37 physical representative files against the authored renamed expectation and confirms no oracle mutation. This is a disk assertion, not a live unsaved-model/cursor oracle. This replay remained **1442×932 outer pixels**. Capture 008's `text-minimum` label is inaccurate: the drag did not resize the window. Captures 009–012 also remained wide, and sizing was canceled. Minimum-size geometry evidence belongs to trial 2's actual 1102×732 outer window, not this replay. Capture 005 is a transitional load request; 006 is the settled model. These labels are historical records, not acceptance assertions. ## Build, integration and remaining boundaries The tested environment is Rust/Cargo 1.98.1, `stable-x86_64-pc-windows-gnullvm`, one compiler job, locked/offline dependencies and the development profile. Standard reproduction after setting up that documented toolchain: ```powershell cargo fmt --all -- --check cargo clippy --locked --offline -p oa-desktop --all-targets -- -D warnings cargo test --locked --offline -p oa-desktop --bin arcadia-studio -- --test-threads=1 cargo test --locked --offline -p oa-desktop --bin arcadia-studio app::source_rename::timing_tests::accepted_release1_prepare_commit_sync_and_confirm_timing -- --ignored --nocapture --test-threads=1 cargo build --locked --offline -p oa-desktop --bin arcadia-studio ``` Run the resulting `arcadia-studio.exe` beside the required `libunwind.dll`; the archive's environment and launch receipts identify the tested runtime precisely. Native fixture and launch helpers retain their original local paths and need explicit path adaptation on another host. They are evidence of this execution, not a portable installer. This contribution does not replace the published rename prerelease. Separable production commit `6a244fb21c6dcb285246201935294b7add7af63b` contains only the two-function Find focus correction. Its CBC-only intermediate tree was not separately built: execution evidence belongs to the exact captured Text union above. The [separable focus integration review](experiments/text-workspace-followup-review-20260913/focus-separable-integration-review.md) specifies how to port its four mounted tests without importing the entire new Text controller. The broader contribution requires reconciliation with the peer's newer diagram chooser, menu and navigation changes, followed by combined verification. The current diagram-usages adapter is intentionally absent; lexical References does not stand in for it. Text Undo still uses text-only history and can reset the viewport or retain a post-edit coordinate; exact Undo/Redo cursor, selection and scroll history needs separate work. Screen-reader acceptance, optimized packaging, unperformed native races/exception combinations and full cross-disciplinary OA/SA acceptance remain outside this evidence. Linux/WSL setup, networking, builds and checks remain user-paused.