13 KiB
Navigation/palette gate admission review
Reviewed root 659b7a655a33e71e00b8d86a2674bcbd631681d2 versus reviewed 633ec3a924e057dc9f185d679be28666d4406a40, the raw gate runner and proposed admission helper. No compiler, tests, UI, Gitea or source edits by this reviewer. The first listing compilation has reported missing nested test modules; no successful listing or gate admission is claimed here.
Source and compile correction
The only changed path under the runner's source/input roots between 633 and 659 is crates/oa-desktop/src/style/tests/readonly.rs: two iterator changes and required dereferences, preserving predicates. Blob ff825a04201be7133d0791fe664482c0bbb432d1 exactly matches closed dd39. Other changes are evidence/checkpoint documents, attributes and runtime-notice records. This carries the bounded 633 source review forward, not e44/dd39 test acceptance.
Root reported E0583 for the two new nested modules under parents imported with #[path]. The proposed corrections are appropriate: #[path = "allocation_drag_tests/navigation_union.rs"] before the module in app/allocation_drag_tests.rs, and #[path = "navigation_union_tests/palette_union.rs"] before the module in app/source_rename/navigation_union_tests.rs. They explicitly resolve from the physical parent directories and introduce no production workaround. The prior source review missed this module-resolution detail. Preserve failed 659 evidence and re-list the corrected source; source reasoning cannot establish compilation success.
Recorder and admission
Runner, reviewed SHA-256 fc14c81020c55eb8edf9a65eb260a0c4c870ec48ed9c95304f2be74e741068a4, checks initial HEAD and exact committed bytes for selected tracked inputs, preserves an input manifest/exclusive log, then rechecks input hashes and HEAD. Changed inputs or source fail its process. It records actual Cargo-emitted Running unittests ... (path.exe) artifacts and their size/hash; it does not invent the test executable path. Package/bin, locked dependencies and single test thread are explicit.
The runner alone is an execution recorder: zero-test focused runs can return zero, empty artifact/listing sets are allowed, and executed names/counts are not asserted. GUI mode has no Running unittests line and therefore records no GUI executable. Stage/launch must separately bind the actual current compiler artifact rather than choosing an executable merely because it exists under an assumed target directory. Preserve partial admission failures without overwriting.
Admission helper, inspected but unexecuted, correctly requires zero exit, unchanged/current source inputs, exactly one existing matching test artifact, a nonempty unique listing with matching emitted total, expected group counts, and actual focused successful names equal to the selected listing set with zero failures/ignored tests.
Minimal remaining improvements before treating it as strict evidence admission:
- Compare the listing admission's stored
result_sha256to the current listing result bytes; compare the focused artifact identity/hash to the admitted listing artifact. This closes the reference chain instead of relying only on matching source strings. - Bind the complete input-manifest and log hashes into the admission alongside its result hash. Preserve the runner/helper identities in the archive.
- Require the exact named 17 navigation-union and four preview-scroll members from the source manifest below; counts alone allow an equal-count substitution. Reparse listing names from the original log or explicitly compare them to the recorder's extracted names.
- Apply equivalent complete-list membership checking to full-suite acceptance, and exact recorded command checks to strict/GUI staging. Neither a focused pass nor the listing itself is a full run.
The recorder covers selected tracked inputs, not arbitrary untracked/external compiler configuration. Keep the sole compiler lease and the configured toolchain/environment provenance; verify no untracked source/config participates. A larger runner framework is unnecessary.
Expected source membership
These expectations include ordinary and Tokio tests plus declared child modules. They must be reconciled with the corrected source's actual Windows debug listing; they are not runtime results. preview_scroll_tests is explicitly behind cfg(debug_assertions) and the current command is a debug test build.
| Substring/group | Expected | Source basis |
|---|---|---|
navigation_union |
17 | 13 source-rename composition + 2 allocation + 2 removal |
source_rename::tests::navigation_union_tests |
13 | Six direct plus seven palette_union |
palette_union |
7 | Four correction and three original root composition tests |
allocation_drag::tests::navigation_union |
2 | Actual captured canvas Press/old packets/current cancellation |
diagram_removal_tests::navigation_union |
2 | Actual port/state-row navigation to Delete and full Undo |
preview_scroll_tests |
4 | Mounted scroll/Details/late-operation regressions |
scenario_activation |
14 | 13 geometry/interaction plus WGPU border-pixel regression |
scenario_lifecycle |
36 | 10 projection + 17 render + 9 union |
context_menu |
12 | Includes actual target/scroll-thumb paint and action identity |
reference_chooser |
14 | 13 chooser tests plus mounted paint/Enter identity |
style::tests |
10 | Nine styles plus readonly selection/copy/paint |
allocation_drag::tests |
32 | 24 direct + six full-tree + two union |
diagram_removal_tests |
18 | 16 retained mounted plus two union |
The exact 17+4 names are enumerated in the source-membership appendix below. Specifically retain long_message_backplates_do_not_erase_selected_activation_border_pixels, mounted_keyboard_menu_paints_target_and_scroll_thumb_then_invokes_that_action, and mounted_readonly_input_keeps_selection_copy_and_readable_paint in the preserved groups: pure style-constant tests are not substitutes. The literal filter navigation_palette is not interchangeable with actual navigation_union names.
Short native itinerary and oracle requirements
Use fresh working copies of the closed dd39 archived topology, lifecycle and compact baselines, plus a fresh six-file examples/source-project copy. Preserve baseline bytes and launch a current source-bound executable under a fresh profile. Reuse fixture provenance, not dd39 screenshots as purported union observations.
- OA/SA repeated and nested process navigation. Open topology
oa_caller, thensa_caller. Navigate semantically to B (oa_b/sa_b), choosing first, second and nested reference destinations. Verify paths[oa_r1],[oa_r2],[oa_r3, oa_inner]and corresponding SA paths, exact preview/camera highlight and Inspector/source identity. Distinguish the semantic occurrence from its enclosing reference: dd39's preview click selected containingoa_r1. Exercise keyboard chooser/Escape, canvas F6/Tab and return to editing, including minimum-window overflow. Whole Project/SourceBundle and model history remain unchanged. - Focused F12/F2 and Undo. In
examples/source-project, use the second@assess_reportreference. F12 reveals its definition; Shift-F12 exposes its real references. Immediately type one reversible character after reveal, then text Undo, to verify actual editor focus and exact restoration. F2 rename toassess_report_union; inspect preview/overflowing Details, then confirm six alias-token changes insa/reporting.arcadiaandviews.arcadia, with other files/comments and UUIDs retained. No disk changes before Save. Check complete model Undo/Redo, save/reopen and after-close equality. Include cancel and a successful rename so an always-rejecting implementation cannot pass. - State action navigation → Delete → Undo. In compact source, target relation
delete_54, UUIDde1e7e00-0000-4000-8000-000000000036, through source/semantic diagram navigation to its entry-action row. Verify relation identity rather than reused functiondelete_50or statedelete_53. Enter canvas ownership, Delete/cancel once, repeat/confirm exact relation deletion. Compare to public core Delete expectation and verify state/function remain; model Undo restores complete baseline and both source files. Save/reopen the restoration. Actual mounted tests cover deterministic routing; native evidence checks focus/dialog usability. - Brief retained lifecycle smoke. On unchanged lifecycle fixture select OA C1 shoulder/C2 receive endpoint and self reply, verifying expected aliases and continuous borders. Expand old-case repetition only for an observed composition risk.
Rebuild a separately named standalone oracle against the current union oa-core rlib after the parent's compiler lease permits it, recording exact source/config/dependency artifacts, command and binary hash. The older 425 oracle's historical 110-unchanged-input claim is invalid across changed union language/core sources; preserve its historical binary and provenance.
The existing oracle source already supports same BASE_ENTRY ACTUAL_ENTRY and removed BASE_ENTRY ACTUAL_ENTRY TARGET_UUID. It constructs the Delete/source-patch expectation from baseline before loading actual output, so it covers state-action deletion and full Undo. Rebuild/self-check it with current core and admit each fixture first. Navigation-only checks need same plus native exact target/path evidence: equality cannot prove camera or selection.
For accepted rename, prepare expected complete Project/SourceBundle from untouched baseline, fixed subject UUID and requested alias using the current public alias-rename API. Compare actual output without normalization, UUID masking or an actual-derived replacement set. Baseline same suffices after Undo but cannot establish the renamed result. Retain six-token/two-file and unchanged-other-file checks as discriminators. Existing source7 authoring oracle modes are unnecessary for navigation-only cases; using them for new authoring would require separate current-core binding.
Source-membership appendix
app::source_rename::tests::navigation_union_tests::rename_modal_rejects_queued_diagram_and_source_navigation_without_losing_approval
app::source_rename::tests::navigation_union_tests::loading_and_ready_diagram_choosers_reject_a_previously_captured_rename_begin
app::source_rename::tests::navigation_union_tests::late_target_and_preview_results_release_only_their_slot_and_preserve_first_camera_measurement
app::source_rename::tests::navigation_union_tests::stale_begin_close_and_actual_confirm_leave_new_diagram_focus_and_pending_measurement_unchanged
app::source_rename::tests::navigation_union_tests::document_reset_retains_all_three_worker_slots_until_their_exact_results_arrive
app::source_rename::tests::navigation_union_tests::rename_then_exact_caret_diagram_navigation_preserves_complete_model_undo_redo_history
app::source_rename::tests::navigation_union_tests::palette_union::captured_old_source_query_and_find_close_preserve_the_new_destination
app::source_rename::tests::navigation_union_tests::palette_union::current_source_query_and_checked_find_close_remain_live
app::source_rename::tests::navigation_union_tests::palette_union::captured_old_chooser_context_and_every_token_variant_are_inert
app::source_rename::tests::navigation_union_tests::palette_union::current_chooser_open_and_close_keep_their_boundary_and_worker_semantics
app::source_rename::tests::navigation_union_tests::palette_union::allocation_keyboard_notification_preserves_navigation_and_first_measurement
app::source_rename::tests::navigation_union_tests::palette_union::stale_rename_begin_cannot_retire_allocation_epoch_or_new_navigation
app::source_rename::tests::navigation_union_tests::palette_union::captured_behavior_toolbar_cannot_retire_a_new_documents_navigation
app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works
app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture
app::diagram_removal_tests::navigation_union::port_navigation_then_canvas_delete_preserves_owner_and_restores_exact_history
app::diagram_removal_tests::navigation_union::state_row_navigation_then_canvas_delete_preserves_work_and_restores_exact_history
app::source_rename::tests::preview_scroll_tests::explicit_navigation_resets_retained_scroll_but_id_change_alone_does_not
app::source_rename::tests::preview_scroll_tests::delayed_page_and_approval_operations_cannot_reset_a_new_destination
app::source_rename::tests::preview_scroll_tests::repeated_page_visits_filters_and_fast_preview_completion_have_distinct_destinations
app::source_rename::tests::preview_scroll_tests::details_round_trip_retires_held_reset_without_changing_page_or_repeated_visibility_scroll