Files
ARCADIA-Studio/harness/experiments/text-navigation-native-20260911/corrections/independent-review2.md
T

3.7 KiB

Find Close replay correction: narrow closure review

Codex-9e8r6t /root/release_audit, 2026-09-11. READY for the producer's next frozen gate. This is source inspection, not a test/build/native pass. No production edits or compiler/native actions by this reviewer. Review1 remains the historical inputs1 finding and broader evaluator limitations.

The four current raw hashes were measured and match the supplied freeze:

Path under crates/oa-desktop/src SHA256
app.rs 411007F8C192E0FC581F3C6BCFC49AB46B900A841EE20AE96203D4DB64C9280F
views.rs 32A4176305052CAEB3520C647EB9E981EBE702EE3099B2F1036037136FCD58BB
app/source_symbols.rs 99370865B548B28F32F4C6CE7E9F8EEAA0C80268A644F2EBCC4BD1E11695E59C
app/source_symbols/tests.rs 33292A7CE9B61DBC134F74372CAA93AF9704E2F968CD698DA13EA6A1B8CF3EA6

Closure

At app.rs:1111-1128, SourceFindClose validates emitting workspace session/path, per-Open instance, currently open Find and source_navigation_available before source_interaction. Only a valid envelope is translated into the existing Close handler. An incoming bare SourceNavigation(Event::Close) returns immediately. The private handler also defensively refuses an untranslated SourceFindClose at :2999.

The instance is initialized independently at :608, renewed through reset's fresh App construction (:938), and regenerated on every handled Find/Go-to Open (:3048). Thus an old same-path Close cannot dismiss a later opening. The helper at app/source_symbols.rs:45 captures the current session/path/instance; the actual Close button at views.rs:1023 uses it. A repository Rust search found no other live emitter of bare Find Close: remaining occurrences are the checked translation, refusal branch and negative test. Other legacy Find actions are intentionally unchanged.

The unavailable/modal boundary also returns before changing interaction, query, reveal or focus state. This follows directly from the early source_navigation_available check, which includes page, busy, pending/file/delete/workflow/hosted/model-menu/architecture/behavior guards. Ordinary Escape retains its existing modal-first path. No new asynchronous unconditional focus operation is introduced.

Regression assessment

The new test at app/source_symbols/tests.rs:549 exercises actual reset, active-file change, and same-path Close/reopen. For reset/file change, it additionally combines the current instance with the old context; therefore token mismatch alone cannot satisfy the session/path expectations. Same-path reopening isolates the instance boundary. Bare legacy Close is explicitly included among rejected inputs. The existing stale-state assertion snapshots interaction/raw clock, request, worker slot, reveal, cursor, raw bundle, accepted snapshot and history before dispatch; the new test additionally asserts Find open/query/instance. It checks both pending and completed query states, then demonstrates current Close still queues a reveal and restores the unchanged cursor.

The mounted removed-input test at :626 now emits the valid envelope for Close. It retains the independent widget-tree focus observation: the originating Find is actually removed before running the real viewport focus task, and later foreign focus wins. No test was executed by this review. The new stale regression does not itself enumerate every modal/unavailable flag; those refusals are verified source logic, and existing modal Escape tests remain separate evidence.

No remaining actionable defect established within this closure. The earlier geometry-fixture and Windows OS-event limitations remain: these source changes do not substitute for corrected native minimum-window lint/click and delayed Alt+Space trials. Ready was sent directly to root and behavior_audit before final capture/gates.