docs: reconcile picker Escape acceptance with published release

This commit is contained in:
2026-09-24 17:22:16 -07:00
parent 8a82c0da1f
commit 6da40dd474
@@ -0,0 +1,22 @@
# Issue35 release acceptance audit — 2026-09-25
**Recommend closing issue35 as implemented, integrated and delivered in release source715036e132677dd2bc2fb37ed316d93dc9987aec. No remaining issue-specific acceptance blocker found.** This is a scoped recommendation to the owner, not a Gitea mutation or fresh execution.
Read current issue35 body and all five comments through1174 via Gitea. The last comment accurately described an earlier paused/failed standalone gate, but its pending status is superseded by the later combined release evidence. The contract in `harness/picker-escape-20260923.md` supplies the deliberate first-Escape/subsequent-policy distinction. Source comparison confirms candidate3e916f6's shared picker/menu/ordinary-tree wrapper implementation is unchanged in715036e; the integrated handoff identifies its incorporation and separately records the corrected State test locator. A commit-ancestry claim is not required to establish this source comparison.
## Acceptance mapping
- **Mounted shared-widget ownership and lifecycle:** all eight required picker cases individually passed, nonignored, in the published `harness/prerelease37-windows-gates-20260924/final04-tests/final04-tests-715036e.zip`, member `audit/test-reconciliation.json`. I reread these eight outcomes from that ZIP rather than relying only on aggregate counts. Seven names live under `app::escape::tests`: `picker_overlay_escape_closes_once_reopens_selects_and_retains_outside_click`, `initially_closed_picker_handles_open_then_escape_in_one_runtime_batch`, `dismissed_picker_ignores_a_queued_click_in_its_old_option_area`, `picker_overlay_precedes_focused_input_and_creation_source_drafts`, `ignored_tooltip_escape_preserves_modal_priority_and_rejects_stale_focus`, `toggling_bridge_policy_retains_focused_child_state`, and `mounted_creation_name_escape_keeps_pending_modal_priority`. The eighth is `app::state_diagram_tests::picker_escape::mounted_state_missing_picker_escape_preserves_exact_document_then_reopens_and_places`.
- **Conservation and real subscriptions:** the actual mounted State test checks captured status before App subscriptions, unchanged snapshot/source/selection/camera/revision/history, then reopens, selects the missing element and undoes back to exact source. The composed creation/source test uses runtime event statuses and actual App subscriptions, preserves the complete Project/bundle/draft/selection/camera/history after first Escape, then verifies the next Escape's existing parent/child cancellation policy. The batch regressions prevent stale option selection and duplicate close notifications.
- **Actual native controls:** published native evidence at8a82c0da1fd7130807878cc74598545ef38b5904, `harness/prerelease37-windows-gates-20260924/native-gui/native-gui-715036e.zip`, contains `reviews/native-observations.md` and raw `native/` records. State Show-unplaced opens with Shutdown complete, closes on first Escape, reopens and dismisses outside; after fresh-process reopen it opens and Escape closes again. Architecture Add existing retains Dispatch/query/type filter when first Escape closes only its dropdown; reopen/select, outside dismissal, another first Escape and distinct second Escape cancellation are recorded in captures31–38. No State placement is added during this native dismissal sequence; actual placement/reopen/select correctness is covered by the mounted State case.
- **Native conservation/persistence:** checkpoints04–07 and09 remain exact P; source/target attachment cancellation checks05/06 are separate armed-tool checks, not mislabeled dropdown coverage. The archive's independent-review.md verifies all ten full-Project outcomes B/C/B/C/P/P/P/P/C/P, exact saved P source bytes and fresh-process P reopening, both launched processes exit0/empty logs/unchanged package. Original run02 prelaunch refusal remains preserved separately. Reuse the already independently audited archive identity f18c21d262ca78bc9c2d8a339c3389fa31c50a81187cc53cc472f3253cda2815,10357627 bytes,351 members; no unnecessary full archive/image rerun was made in this audit.
## Required scope qualifications
Behavior creation, behavior source forms and Text Find/rename have no internal native dropdown in this version. Their picker coexistence is composed mounted runtime coverage, not native verification of nonexistent controls. Ordinary focused-text cancellation and bridge priorities retain their separate passing mounted tests. The issue's broad modal wording must be reported with this factual control inventory, as the accepted contract and comment1139 already do.
Existing StateEdit transition editing uses explicit Cancel and is not automatically included in behavior.source_active(): that method lists creation/scenario/topology source workflows. The ordinary Escape handler therefore need not acquire a new StateEdit-draft cancellation policy to close this issue. “A later Escape follows existing surrounding policy” does not mean every form must cancel on Escape. Do not conflate attachment-tool immediate cancellation, a different workflow, with StateEdit draft cancellation.
Standalone failures are not retroactively passed: issue comment1174's test-import compile failure and the combined State-picker locator failure remain historical failures. The actual later715 workspace gate reports2200 passed/0 failed/8 ignored, with these eight required cases all executed and passing. Release evidence and implementation are delivered separately from original standalone branch acceptance. Issue36 label congestion, broad DPI/all-window behavior, Linux, held-drag/reconnect and full application completeness are outside issue35 closure.
Supporting public paths are repository-relative above and should be linked at source715036e / evidence8a82c0da when posting the owner handoff. This review performed read-only Gitea retrieval, source comparison and bounded archive JSON retrieval; no compiler, GUI, model helper, publication or issue update was run.