Record combined navigation canvas Windows gate checkpoint
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# Partial combined Windows checkpoint
|
||||
|
||||
Source e1240295bd114d23d3f67a69e6b38bdb2e25bb0d, Windows gnullvm,
|
||||
Rust 1.98.1, jobs1. All 578 captured committed inputs remained unchanged.
|
||||
|
||||
The original659b7a6 listing compile failed with E0583 for two nested test-module
|
||||
paths; it ran no tests. The source correction adds explicit paths only.
|
||||
Corrected e124 lists 1082 actual tests. Exact 17 cross-feature navigation tests
|
||||
and four mounted preview-scroll tests pass, with no failures or ignored cases,
|
||||
using the same captured executable. Retained module memberships are verified
|
||||
by the listing admission receipt. Strict all-target Clippy actual exit: 0.
|
||||
Read its preserved log for the actual outcome; no full-suite or GUI/native pass
|
||||
is asserted by this checkpoint.
|
||||
|
||||
The first local admission invocation rejected its own substring-based module
|
||||
count: `context_menu` matched 15 names, including three tests outside that module.
|
||||
The corrected helper anchors retained suites to module prefixes, while the two
|
||||
cross-module sets retain their independently fixed exact names. It also admits
|
||||
both distinct 32-test allocation modules. No test was removed or expected module
|
||||
count reduced. The original helper remains beside the correction. The original
|
||||
admission invocation produced an assertion in tool output, not an admission
|
||||
receipt; no missing result file is manufactured here.
|
||||
|
||||
Source reviews are scoped to their stated commits and cannot replace runtime
|
||||
checks. The first review missed Rust's inherited path resolution; that failed
|
||||
compile and subsequent explicit-path source review remain part of the record.
|
||||
Full intended combined acceptance also retains the shared Find Close word
|
||||
selection finding from Gitea issue13; its correction is a separate contribution.
|
||||
|
||||
This archive omits the large executable and dependency cache. Their identities
|
||||
are recorded in actual receipts. Commands and all test/build inputs are preserved
|
||||
by Git source pins and manifests. Linux remains deferred by user instruction.
|
||||
+2895
File diff suppressed because it is too large
Load Diff
+4
@@ -0,0 +1,4 @@
|
||||
Checking oa-core v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-core)
|
||||
Checking oa-server v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-server)
|
||||
Checking oa-desktop v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-desktop)
|
||||
Finished `dev` profile [unoptimized] target(s) in 11m 33s
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"head_after": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"start": "2026-09-13T03:38:16.982553+00:00",
|
||||
"end": "2026-09-13T03:49:51.536122+00:00",
|
||||
"exit": 0,
|
||||
"command": [
|
||||
"cargo",
|
||||
"clippy",
|
||||
"--locked",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--all-targets",
|
||||
"--",
|
||||
"-D",
|
||||
"warnings"
|
||||
],
|
||||
"inputs": "clippy-e124029.inputs.json",
|
||||
"changed_inputs": [],
|
||||
"artifacts": [],
|
||||
"environment": {
|
||||
"CARGO_TARGET_DIR": null,
|
||||
"CARGO_BUILD_JOBS": "1",
|
||||
"CARGO_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo",
|
||||
"RUSTUP_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\rustup"
|
||||
},
|
||||
"listing_members": [],
|
||||
"listing_count": 0,
|
||||
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"utc": "2026-09-13T03:33:13.139579+00:00",
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"mode": "focused",
|
||||
"result_sha256": "734cf663e70af4230b076edb46a0e22ff05e497b6dd852d8e375137a36aa645f",
|
||||
"log_sha256": "288e8ee230ebae709f71ba4a86a0ceb6e63fe16ceee5eff72f27d0a128b6e635",
|
||||
"inputs_sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87",
|
||||
"required_names_sha256": "e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a",
|
||||
"verified_inputs": 578,
|
||||
"artifact": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\deps\\arcadia_studio-ac73ce8f77f371eb.exe",
|
||||
"bytes": 150072832,
|
||||
"sha256": "d1e4f672ca53fc914be70712cf87cb828f15181513fc9020cd02fb4d92af5c4e"
|
||||
},
|
||||
"groups": {
|
||||
"navigation_union": [
|
||||
"app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture",
|
||||
"app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works",
|
||||
"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::navigation_union_tests::document_reset_retains_all_three_worker_slots_until_their_exact_results_arrive",
|
||||
"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::loading_and_ready_diagram_choosers_reject_a_previously_captured_rename_begin",
|
||||
"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::captured_behavior_toolbar_cannot_retire_a_new_documents_navigation",
|
||||
"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::captured_old_source_query_and_find_close_preserve_the_new_destination",
|
||||
"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::current_source_query_and_checked_find_close_remain_live",
|
||||
"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::rename_modal_rejects_queued_diagram_and_source_navigation_without_losing_approval",
|
||||
"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::stale_begin_close_and_actual_confirm_leave_new_diagram_focus_and_pending_measurement_unchanged"
|
||||
]
|
||||
}
|
||||
}
|
||||
+2895
File diff suppressed because it is too large
Load Diff
+24
@@ -0,0 +1,24 @@
|
||||
Finished `test` profile [unoptimized] target(s) in 6.96s
|
||||
Running unittests src\main.rs (target\debug\deps\arcadia_studio-ac73ce8f77f371eb.exe)
|
||||
|
||||
running 17 tests
|
||||
test app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture ... ok
|
||||
test app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works ... ok
|
||||
test app::diagram_removal_tests::navigation_union::port_navigation_then_canvas_delete_preserves_owner_and_restores_exact_history ... ok
|
||||
test app::diagram_removal_tests::navigation_union::state_row_navigation_then_canvas_delete_preserves_work_and_restores_exact_history ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::document_reset_retains_all_three_worker_slots_until_their_exact_results_arrive ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::late_target_and_preview_results_release_only_their_slot_and_preserve_first_camera_measurement ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::loading_and_ready_diagram_choosers_reject_a_previously_captured_rename_begin ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::allocation_keyboard_notification_preserves_navigation_and_first_measurement ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::captured_behavior_toolbar_cannot_retire_a_new_documents_navigation ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::captured_old_chooser_context_and_every_token_variant_are_inert ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::captured_old_source_query_and_find_close_preserve_the_new_destination ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::current_chooser_open_and_close_keep_their_boundary_and_worker_semantics ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::current_source_query_and_checked_find_close_remain_live ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::palette_union::stale_rename_begin_cannot_retire_allocation_epoch_or_new_navigation ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::rename_modal_rejects_queued_diagram_and_source_navigation_without_losing_approval ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::rename_then_exact_caret_diagram_navigation_preserves_complete_model_undo_redo_history ... ok
|
||||
test app::source_rename::tests::navigation_union_tests::stale_begin_close_and_actual_confirm_leave_new_diagram_focus_and_pending_measurement_unchanged ... ok
|
||||
|
||||
test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 1065 filtered out; finished in 11.78s
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"head_after": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"start": "2026-09-13T03:31:36.862879+00:00",
|
||||
"end": "2026-09-13T03:31:58.790394+00:00",
|
||||
"exit": 0,
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"navigation_union",
|
||||
"--",
|
||||
"--test-threads=1"
|
||||
],
|
||||
"inputs": "focused-nav-e124029.inputs.json",
|
||||
"changed_inputs": [],
|
||||
"artifacts": [
|
||||
{
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\deps\\arcadia_studio-ac73ce8f77f371eb.exe",
|
||||
"bytes": 150072832,
|
||||
"sha256": "d1e4f672ca53fc914be70712cf87cb828f15181513fc9020cd02fb4d92af5c4e"
|
||||
}
|
||||
],
|
||||
"environment": {
|
||||
"CARGO_TARGET_DIR": null,
|
||||
"CARGO_BUILD_JOBS": "1",
|
||||
"CARGO_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo",
|
||||
"RUSTUP_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\rustup"
|
||||
},
|
||||
"listing_members": [],
|
||||
"listing_count": 0,
|
||||
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"utc": "2026-09-13T03:34:24.612060+00:00",
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"mode": "focused",
|
||||
"result_sha256": "f1eadc08fd9104f480105c1e23a7b78e2f21dbb631ba37d0a63d3d01e658411d",
|
||||
"log_sha256": "b97a61c9479b18cd25a8d113040113deaaab35afd80b72459ae3b143a0c80575",
|
||||
"inputs_sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87",
|
||||
"required_names_sha256": "e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a",
|
||||
"verified_inputs": 578,
|
||||
"artifact": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\deps\\arcadia_studio-ac73ce8f77f371eb.exe",
|
||||
"bytes": 150072832,
|
||||
"sha256": "d1e4f672ca53fc914be70712cf87cb828f15181513fc9020cd02fb4d92af5c4e"
|
||||
},
|
||||
"groups": {
|
||||
"preview_scroll_tests": [
|
||||
"app::source_rename::tests::preview_scroll_tests::delayed_page_and_approval_operations_cannot_reset_a_new_destination",
|
||||
"app::source_rename::tests::preview_scroll_tests::details_round_trip_retires_held_reset_without_changing_page_or_repeated_visibility_scroll",
|
||||
"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::repeated_page_visits_filters_and_fast_preview_completion_have_distinct_destinations"
|
||||
]
|
||||
}
|
||||
}
|
||||
+2895
File diff suppressed because it is too large
Load Diff
+11
@@ -0,0 +1,11 @@
|
||||
Finished `test` profile [unoptimized] target(s) in 5.62s
|
||||
Running unittests src\main.rs (target\debug\deps\arcadia_studio-ac73ce8f77f371eb.exe)
|
||||
|
||||
running 4 tests
|
||||
test app::source_rename::tests::preview_scroll_tests::delayed_page_and_approval_operations_cannot_reset_a_new_destination ... ok
|
||||
test app::source_rename::tests::preview_scroll_tests::details_round_trip_retires_held_reset_without_changing_page_or_repeated_visibility_scroll ... ok
|
||||
test app::source_rename::tests::preview_scroll_tests::explicit_navigation_resets_retained_scroll_but_id_change_alone_does_not ... ok
|
||||
test app::source_rename::tests::preview_scroll_tests::repeated_page_visits_filters_and_fast_preview_completion_have_distinct_destinations ... ok
|
||||
|
||||
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 1078 filtered out; finished in 7.64s
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"head_after": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"start": "2026-09-13T03:33:22.415155+00:00",
|
||||
"end": "2026-09-13T03:33:36.648514+00:00",
|
||||
"exit": 0,
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"preview_scroll_tests",
|
||||
"--",
|
||||
"--test-threads=1"
|
||||
],
|
||||
"inputs": "focused-scroll-e124029.inputs.json",
|
||||
"changed_inputs": [],
|
||||
"artifacts": [
|
||||
{
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\deps\\arcadia_studio-ac73ce8f77f371eb.exe",
|
||||
"bytes": 150072832,
|
||||
"sha256": "d1e4f672ca53fc914be70712cf87cb828f15181513fc9020cd02fb4d92af5c4e"
|
||||
}
|
||||
],
|
||||
"environment": {
|
||||
"CARGO_TARGET_DIR": null,
|
||||
"CARGO_BUILD_JOBS": "1",
|
||||
"CARGO_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo",
|
||||
"RUSTUP_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\rustup"
|
||||
},
|
||||
"listing_members": [],
|
||||
"listing_count": 0,
|
||||
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
|
||||
}
|
||||
+2895
File diff suppressed because it is too large
Load Diff
+23
@@ -0,0 +1,23 @@
|
||||
Compiling oa-core v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-core)
|
||||
Compiling oa-server v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-server)
|
||||
Compiling oa-desktop v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\crates\oa-desktop)
|
||||
error[E0583]: file not found for module `navigation_union`
|
||||
--> crates\oa-desktop\src\app\allocation_drag_tests.rs:11:1
|
||||
|
|
||||
11 | mod navigation_union;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: to create the module `navigation_union`, create file "crates\oa-desktop\src\app\navigation_union.rs" or "crates\oa-desktop\src\app\navigation_union\mod.rs"
|
||||
= note: if there is a `mod navigation_union` elsewhere in the crate already, import it with `use crate::...` instead
|
||||
|
||||
error[E0583]: file not found for module `palette_union`
|
||||
--> crates\oa-desktop\src\app\source_rename\navigation_union_tests.rs:7:1
|
||||
|
|
||||
7 | mod palette_union;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: to create the module `palette_union`, create file "crates\oa-desktop\src\app\source_rename\palette_union.rs" or "crates\oa-desktop\src\app\source_rename\palette_union\mod.rs"
|
||||
= note: if there is a `mod palette_union` elsewhere in the crate already, import it with `use crate::...` instead
|
||||
|
||||
For more information about this error, try `rustc --explain E0583`.
|
||||
error: could not compile `oa-desktop` (bin "arcadia-studio" test) due to 2 previous errors
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"source": "659b7a655a33e71e00b8d86a2674bcbd631681d2",
|
||||
"head_after": "659b7a655a33e71e00b8d86a2674bcbd631681d2",
|
||||
"start": "2026-09-13T02:50:17.119792+00:00",
|
||||
"end": "2026-09-13T03:03:08.412772+00:00",
|
||||
"exit": 101,
|
||||
"command": [
|
||||
"cargo",
|
||||
"test",
|
||||
"--locked",
|
||||
"-p",
|
||||
"oa-desktop",
|
||||
"--bin",
|
||||
"arcadia-studio",
|
||||
"--",
|
||||
"--list"
|
||||
],
|
||||
"inputs": "list-659b7a6.inputs.json",
|
||||
"changed_inputs": [],
|
||||
"artifacts": [],
|
||||
"environment": {
|
||||
"CARGO_TARGET_DIR": null,
|
||||
"CARGO_BUILD_JOBS": "1",
|
||||
"CARGO_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\cargo",
|
||||
"RUSTUP_HOME": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\rustup"
|
||||
},
|
||||
"listing_members": [],
|
||||
"listing_count": 0,
|
||||
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
|
||||
}
|
||||
+226
@@ -0,0 +1,226 @@
|
||||
{
|
||||
"utc": "2026-09-13T03:31:09.589335+00:00",
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"mode": "list",
|
||||
"result_sha256": "f7fbb70f7984cd8adb089c0ad749d8240ec92f363679205a2d1adf805a15c2a6",
|
||||
"log_sha256": "8dbd49a9c36a6eff682049e6a3a919666e75e4e312a53d4c1ff60b82e46b8404",
|
||||
"inputs_sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87",
|
||||
"required_names_sha256": "e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a",
|
||||
"verified_inputs": 578,
|
||||
"artifact": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\target\\debug\\deps\\arcadia_studio-ac73ce8f77f371eb.exe",
|
||||
"bytes": 150072832,
|
||||
"sha256": "d1e4f672ca53fc914be70712cf87cb828f15181513fc9020cd02fb4d92af5c4e"
|
||||
},
|
||||
"groups": {
|
||||
"navigation_union": [
|
||||
"app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture",
|
||||
"app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works",
|
||||
"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::navigation_union_tests::document_reset_retains_all_three_worker_slots_until_their_exact_results_arrive",
|
||||
"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::loading_and_ready_diagram_choosers_reject_a_previously_captured_rename_begin",
|
||||
"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::captured_behavior_toolbar_cannot_retire_a_new_documents_navigation",
|
||||
"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::captured_old_source_query_and_find_close_preserve_the_new_destination",
|
||||
"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::current_source_query_and_checked_find_close_remain_live",
|
||||
"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::rename_modal_rejects_queued_diagram_and_source_navigation_without_losing_approval",
|
||||
"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::stale_begin_close_and_actual_confirm_leave_new_diagram_focus_and_pending_measurement_unchanged"
|
||||
],
|
||||
"preview_scroll_tests": [
|
||||
"app::source_rename::tests::preview_scroll_tests::delayed_page_and_approval_operations_cannot_reset_a_new_destination",
|
||||
"app::source_rename::tests::preview_scroll_tests::details_round_trip_retires_held_reset_without_changing_page_or_repeated_visibility_scroll",
|
||||
"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::repeated_page_visits_filters_and_fast_preview_completion_have_distinct_destinations"
|
||||
],
|
||||
"behavior::scenario_activation::": [
|
||||
"behavior::scenario_activation::tests::a_fragment_cannot_make_crossed_calls_an_unambiguous_caller_execution",
|
||||
"behavior::scenario_activation::tests::activation_shoulders_under_label_backplates_select_their_call",
|
||||
"behavior::scenario_activation::tests::actual_canvas_pointer_selects_each_exposed_shoulder_under_zoom_and_pan",
|
||||
"behavior::scenario_activation::tests::alternative_and_parallel_operand_local_calls_do_not_nest_from_screen_order",
|
||||
"behavior::scenario_activation::tests::an_inactive_self_call_has_no_fabricated_parent_and_three_nested_calls_expose_three_columns",
|
||||
"behavior::scenario_activation::tests::call_uuid_order_does_not_choose_activation_columns_or_message_anchors",
|
||||
"behavior::scenario_activation::tests::inherited_execution_anchors_a_self_call_inside_an_operand_before_returning_after_the_fragment",
|
||||
"behavior::scenario_activation::tests::long_message_backplates_do_not_erase_selected_activation_border_pixels",
|
||||
"behavior::scenario_activation::tests::missing_reply_is_a_short_explicit_open_span_and_an_uncorrelated_reply_closes_nothing",
|
||||
"behavior::scenario_activation::tests::nested_calls_expose_both_bars_and_end_at_their_exact_replies_in_both_directions",
|
||||
"behavior::scenario_activation::tests::nested_correlations_returning_in_alternative_operands_remain_nested_before_the_fragment",
|
||||
"behavior::scenario_activation::tests::reentrant_call_uses_the_other_receiver_without_inventing_a_caller_execution",
|
||||
"behavior::scenario_activation::tests::self_call_receives_at_lower_loop_end_and_self_reply_returns_to_the_parent",
|
||||
"behavior::scenario_activation::tests::sequential_calls_reuse_column_and_crossed_replies_keep_their_correlations"
|
||||
],
|
||||
"behavior::scenario_lifecycle::": [
|
||||
"behavior::scenario_lifecycle::render::tests::birth_label_clip_keeps_padded_world_bounds_at_each_scene_scale",
|
||||
"behavior::scenario_lifecycle::render::tests::birth_label_clip_preserves_parent_viewport_bounds",
|
||||
"behavior::scenario_lifecycle::render::tests::box_text_clip_intersects_parent_viewport_and_rejects_empty_interiors",
|
||||
"behavior::scenario_lifecycle::render::tests::panned_header_and_create_clips_use_screen_translation_and_actual_viewport",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_birth_death_markers_align_endpoints_and_win_selection_without_mutating_source",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_branch_delete_clips_only_its_activation_and_keeps_unanswered_call_visible",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_conditional_repeated_and_parallel_scopes_do_not_claim_definite_continuation",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_empty_and_create_only_use_visible_root_extents_not_insertion_bounds",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_lifecycle_edit_undo_redo_restores_exact_source_and_changed_geometry",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_long_header_title_and_detail_keep_names_and_have_bounded_clips",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_minimum_zoom_marker_halos_do_not_steal_adjacent_capsule_or_header_hits",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_minimum_zoom_near_ordinary_message_wins_over_lifecycle_halos",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_panned_zoomed_program_keeps_header_birth_and_death_hit_identity",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_self_delete_caption_clears_the_preceding_action_box",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_self_lifecycle_elbows_end_on_recorded_marker_rows",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_unassigned_lanes_and_explicit_incomplete_receiver_keep_real_marker_identity",
|
||||
"behavior::scenario_lifecycle::render::tests::real_scene_wide_latin_header_exceeds_old_character_budget",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::admitted_calls_without_sender_polylines_still_have_logical_correlation_metadata",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::admitted_death_and_incomplete_later_reply_do_not_fabricate_an_answered_execution",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::admitted_delayed_create_nested_calls_replies_delete_share_one_geometry_pipeline",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::admitted_self_lifecycle_and_self_call_keep_distinct_send_receive_rows",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::admitted_unresolved_operand_keeps_unanswered_cue_without_any_visible_segment",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::clipped_operand_preserves_original_nested_or_crossed_correlation_distinction",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::conditional_death_then_recreate_never_revives_call_but_keeps_open_sibling",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::invalid_prebirth_call_and_postdeath_reply_remain_rejected_with_defensive_scene_clipping",
|
||||
"behavior::scenario_lifecycle::render::tests::union_tests::test_only_upstream_row_offsets_update_lifetime_segments_and_endpoints_without_authoring",
|
||||
"behavior::scenario_lifecycle::tests::alternative_death_does_not_kill_its_displayed_sibling",
|
||||
"behavior::scenario_lifecycle::tests::conditional_birth_does_not_infer_absence_in_siblings_or_ancestors",
|
||||
"behavior::scenario_lifecycle::tests::explicit_receiver_is_authoritative_even_with_missing_exchange",
|
||||
"behavior::scenario_lifecycle::tests::lifecycle_free_fragments_do_not_poison_other_lanes",
|
||||
"behavior::scenario_lifecycle::tests::loop_lifetime_is_local_and_warning_bearing_loops_remain_drawable",
|
||||
"behavior::scenario_lifecycle::tests::missing_geometry_is_reported_without_nonfinite_or_guessed_markers",
|
||||
"behavior::scenario_lifecycle::tests::optional_cleanup_inside_loop_does_not_claim_balanced_or_definite_exit",
|
||||
"behavior::scenario_lifecycle::tests::projection_retains_exact_authored_source_and_does_not_enter_history",
|
||||
"behavior::scenario_lifecycle::tests::root_lifetime_has_exact_birth_death_boundaries_without_source_mutation",
|
||||
"behavior::scenario_lifecycle::tests::scenario_use_is_opaque_and_never_imports_callee_lifecycle_events"
|
||||
],
|
||||
"context_menu::": [
|
||||
"context_menu::tests::a_new_context_token_cannot_reuse_the_previous_mouse_press_or_scroll",
|
||||
"context_menu::tests::actions_area_does_not_swallow_first_independent_click_after_overlay_consumed_its_release",
|
||||
"context_menu::tests::anchors_outside_the_window_and_nonfinite_input_stay_bounded",
|
||||
"context_menu::tests::clicking_disabled_or_dragging_off_an_action_never_executes_it",
|
||||
"context_menu::tests::coalesced_dismissal_release_does_not_swallow_the_next_independent_click",
|
||||
"context_menu::tests::empty_and_disabled_only_menus_still_capture_keys_and_escape_closes",
|
||||
"context_menu::tests::keyboard_skips_headers_separators_and_disabled_actions_and_invokes_once",
|
||||
"context_menu::tests::mounted_keyboard_menu_paints_target_and_scroll_thumb_then_invokes_that_action",
|
||||
"context_menu::tests::outside_dismissal_consumes_press_and_release_across_controlled_close",
|
||||
"context_menu::tests::reconstructed_overlay_uses_retained_layout_for_rows_and_hit_testing",
|
||||
"context_menu::tests::retained_overlay_layout_keeps_measured_width_and_scrollbar_after_reconstruction",
|
||||
"context_menu::tests::tall_menu_clamps_to_viewport_and_keyboard_wheel_and_scrollbar_reach_the_end"
|
||||
],
|
||||
"forms::reference_chooser::": [
|
||||
"forms::reference_chooser::tests::captured_choice_cannot_cross_document_revision_draft_record_or_array_path",
|
||||
"forms::reference_chooser::tests::catalog_search_disambiguates_repeated_names_containment_alias_and_exact_placement_identity",
|
||||
"forms::reference_chooser::tests::dismissal_swallows_matching_release_across_closed_rebuild_but_next_click_reaches_parent",
|
||||
"forms::reference_chooser::tests::empty_search_escape_tab_and_optional_clear_do_not_silently_choose_nil",
|
||||
"forms::reference_chooser::tests::historical_paths_never_open_and_only_explicit_choice_or_clear_is_a_write",
|
||||
"forms::reference_chooser::tests::mounted_clipboard_paste_and_ime_commit_preserve_whole_strings_without_selecting",
|
||||
"forms::reference_chooser::tests::mounted_filtered_row_click_uses_the_displayed_identity_and_scoped_write_intent",
|
||||
"forms::reference_chooser::tests::mounted_input_preserves_rapid_same_batch_typing_and_cursor_across_controlled_rebuilds",
|
||||
"forms::reference_chooser::tests::mounted_keyboard_pages_and_selects_only_the_highlighted_visible_candidate_once",
|
||||
"forms::reference_chooser::tests::mounted_overlay_clamps_at_three_field_positions_and_keeps_results_and_query_bounded",
|
||||
"forms::reference_chooser::tests::mounted_query_change_rejects_old_release_and_old_result_events_without_locking_popup",
|
||||
"forms::reference_chooser::tests::mounted_query_then_escape_in_one_batch_closes_and_relative_keys_keep_input_order",
|
||||
"forms::reference_chooser::tests::out_of_order_query_serials_cannot_restore_obsolete_results",
|
||||
"forms::reference_chooser::widget::paint_tests::mounted_chooser_keyboard_target_is_visible_and_enter_keeps_exact_identity"
|
||||
],
|
||||
"style::tests::": [
|
||||
"style::tests::button_pair_couplings_cover_hover_and_disabled_states",
|
||||
"style::tests::conditional_input_styles_preserve_readonly_selected_value_contrast",
|
||||
"style::tests::default_checkbox_styles_keep_checks_and_outlines_distinct",
|
||||
"style::tests::default_input_styles_keep_ordinary_values_and_visible_selection",
|
||||
"style::tests::default_pick_list_and_menu_styles_cover_open_and_selected_states",
|
||||
"style::tests::ordinary_editable_editor_styles_keep_their_own_selected_value_readable",
|
||||
"style::tests::readonly::mounted_readonly_input_keeps_selection_copy_and_readable_paint",
|
||||
"style::tests::selected_navigation_adds_a_visible_outline_and_preserves_disabled_ink",
|
||||
"style::tests::semantic_text_and_essential_boundaries_have_contrast_on_canvas_surfaces",
|
||||
"style::tests::source_editor_syntax_and_fallback_remain_readable_during_selection"
|
||||
],
|
||||
"allocation_drag::tests::": [
|
||||
"allocation_drag::tests::allocation_artifact_and_manual_trace_cascades_are_named_and_refused",
|
||||
"allocation_drag::tests::cache_plan_uses_candidate_index_and_same_pixel_different_target_changes_preview",
|
||||
"allocation_drag::tests::collapsed_target_unfold_is_explicit_and_no_other_fold_changes",
|
||||
"allocation_drag::tests::direct_exit_revealing_another_role_performer_has_truthful_refusal",
|
||||
"allocation_drag::tests::explicit_different_performer_retains_advisory_role_warning",
|
||||
"allocation_drag::tests::folded_subtree_cannot_hide_new_collision",
|
||||
"allocation_drag::tests::geometry_refuses_new_overlap_bounds_and_invisible_headers_and_preserves_existing_overlap",
|
||||
"allocation_drag::tests::malformed_scope_wrong_projection_duplicate_placement_and_stable_id_collision_refuse",
|
||||
"allocation_drag::tests::mixed_p_x_y_refuses_semantic_and_arrange_instead_of_stretching_destination",
|
||||
"allocation_drag::tests::oa_communication_incompleteness_remains_advisory_without_collateral_loss",
|
||||
"allocation_drag::tests::oa_sa_incoming_between_outgoing_preserve_identity_source_history_and_other_views",
|
||||
"allocation_drag::tests::oa_sa_one_leaf_move_refuses_when_ancestor_regrouping_introduces_unrelated_overlap",
|
||||
"allocation_drag::tests::oa_sa_one_leaf_reassignment_and_outward_move_regroup_ancestors_without_moving_sibling",
|
||||
"allocation_drag::tests::oa_sa_populated_collapsed_target_accepts_room_and_refuses_collision_without_relocating_contents",
|
||||
"allocation_drag::tests::oa_sa_state_owned_action_and_availability_reject_reassignment_atomically",
|
||||
"allocation_drag::tests::oa_sa_unfolding_prior_hidden_overlap_refuses_even_when_insertion_does_not_collide",
|
||||
"allocation_drag::tests::own_deleted_allocation_routes_may_disappear_in_every_diagram_only",
|
||||
"allocation_drag::tests::role_only_same_effective_performer_is_semantic_noop_and_outgoing_refuses",
|
||||
"allocation_drag::tests::sa_port_and_deferred_exchange_allocation_cascade_refuses_and_retarget_is_invalid",
|
||||
"allocation_drag::tests::same_performer_readability_preserves_snapped_noop_and_allocation_identity",
|
||||
"allocation_drag::tests::scope_detects_first_child_allocation_and_role_transfer_and_finish_rejects_live_edits",
|
||||
"allocation_drag::tests::selected_header_visibility_allows_viewport_edge_but_refuses_clipping",
|
||||
"allocation_drag::tests::snapped_noop_returns_no_command_and_keeps_source_revision_and_redo",
|
||||
"allocation_drag::tests::source_budget_refusal_keeps_project_bundle_history_and_retry_identity_exact",
|
||||
"allocation_drag::tests::surviving_constraint_mutation_is_refused_even_when_core_candidate_is_valid",
|
||||
"allocation_drag::tests::target_presentation_requires_accepted_identity_and_selected_header_visibility",
|
||||
"allocation_drag::tests::toolbar_identity_allows_exact_incoming_placement_at_old_label_overlap",
|
||||
"allocation_drag::tests::uniform_folded_grandchild_and_unplaced_scope_moves_exactly_q_and_all_l_oa_sa",
|
||||
"allocation_drag::tests::uniform_role_only_and_mixed_direct_role_composites_same_target_do_not_allocate",
|
||||
"allocation_drag::tests::uniformly_unassigned_composite_creates_only_stable_leaf_allocations_including_unplaced",
|
||||
"allocation_drag::tests::unrequested_view_option_cleanup_is_not_whitelisted",
|
||||
"allocation_drag::tests::unresolved_role_leaf_can_arrange_or_accept_explicit_target_without_guessing"
|
||||
],
|
||||
"app::allocation_drag::tests::": [
|
||||
"app::allocation_drag::tests::actual_canvas_origin_change_cancels_held_work_before_any_legacy_release",
|
||||
"app::allocation_drag::tests::arrange_is_one_gesture_and_snapped_noop_preserves_redo_and_source",
|
||||
"app::allocation_drag::tests::candidate_semantics_are_cached_per_destination_with_stable_ids_and_own_index",
|
||||
"app::allocation_drag::tests::destination_identity_does_not_describe_blocked_or_outside_viewport_as_unallocation",
|
||||
"app::allocation_drag::tests::frozen_collapsed_target_uses_only_visible_header_and_port_edge_controls_occlude",
|
||||
"app::allocation_drag::tests::frozen_targets_use_half_open_semantic_priority_and_refuse_incomparable_overlap",
|
||||
"app::allocation_drag::tests::full_tree::actual_app_tree_dirty_description_retains_focus_and_middle_caret_for_next_key",
|
||||
"app::allocation_drag::tests::full_tree::actual_app_tree_dirty_name_retains_focus_and_middle_caret_for_next_key",
|
||||
"app::allocation_drag::tests::full_tree::actual_app_tree_exact_incoming_drag_keeps_destination_visible_and_canvas_stable",
|
||||
"app::allocation_drag::tests::full_tree::actual_keyboard_arrange_shortcut_consumes_once_escape_cancels_and_dirty_owner_refuses",
|
||||
"app::allocation_drag::tests::full_tree::actual_rendered_canvas_pixels_do_not_change_when_toolbar_feedback_text_changes",
|
||||
"app::allocation_drag::tests::full_tree::actual_toolbar_hover_inspects_last_full_name_without_authorizing_an_outside_drop",
|
||||
"app::allocation_drag::tests::modal_roundtrip_equal_fit_undo_resize_and_focus_retire_press_before_replay",
|
||||
"app::allocation_drag::tests::mounted_clean_stationary_selects_exact_work_without_revision_or_legacy_apply",
|
||||
"app::allocation_drag::tests::mounted_dirty_port_press_cannot_fall_through_to_applying_port_selection",
|
||||
"app::allocation_drag::tests::mounted_dirty_property_press_does_not_select_apply_or_destroy_draft",
|
||||
"app::allocation_drag::tests::mounted_oa_sa_ordered_incoming_between_outgoing_are_exact_single_history_steps",
|
||||
"app::allocation_drag::tests::mounted_role_only_outgoing_refusal_retains_placement_and_same_performer_creates_no_allocation",
|
||||
"app::allocation_drag::tests::mounted_uniform_parent_moves_hidden_placements_and_assigns_only_leaves",
|
||||
"app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture",
|
||||
"app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works",
|
||||
"app::allocation_drag::tests::oa_sa_clipped_selected_header_refuses_preview_release_and_retries_without_partial_source_or_history",
|
||||
"app::allocation_drag::tests::oa_sa_toolbar_identity_accepts_exact_receiver_and_collapsed_header_drag",
|
||||
"app::allocation_drag::tests::outside_release_is_cancel_and_does_not_remove_an_assignment",
|
||||
"app::allocation_drag::tests::pending_behavior_draft_refuses_actual_work_press_and_equal_document_replacement_retires_packet",
|
||||
"app::allocation_drag::tests::release_uses_ordered_native_position_before_later_motion_in_same_batch",
|
||||
"app::allocation_drag::tests::same_snapped_position_on_opposite_shared_border_rebuilds_semantics_even_if_layout_refuses",
|
||||
"app::allocation_drag::tests::source_and_modal_admission_reject_prebuilt_clean_press_without_selecting",
|
||||
"app::allocation_drag::tests::source_refusal_is_atomic_and_a_new_gesture_can_retry_against_live_revision",
|
||||
"app::allocation_drag::tests::stale_packets_do_not_cancel_a_newer_token_and_each_release_is_consumed_once",
|
||||
"app::allocation_drag::tests::toolbar_destination_names_transformed_target_whose_header_is_clipped",
|
||||
"app::allocation_drag::tests::toolbar_status_leaves_transformed_top_edge_work_header_readable"
|
||||
],
|
||||
"app::diagram_removal_tests::": [
|
||||
"app::diagram_removal_tests::captured_confirmation_rejects_selection_document_revision_and_placement_changes",
|
||||
"app::diagram_removal_tests::mounted_allocation_work_click_then_delete_without_redraw_removes_placement_once",
|
||||
"app::diagram_removal_tests::mounted_bend_delete_has_priority_and_semantic_edge_delete_is_confirmed",
|
||||
"app::diagram_removal_tests::mounted_clean_text_programmatic_focus_and_tab_remove_canvas_keyboard_ownership",
|
||||
"app::diagram_removal_tests::mounted_inspector_can_take_focus_during_passive_save",
|
||||
"app::diagram_removal_tests::mounted_oa_sa_delete_hides_exact_placement_and_round_trips_source_and_model",
|
||||
"app::diagram_removal_tests::mounted_passive_save_never_grants_canvas_focus_or_restores_window_lost_focus",
|
||||
"app::diagram_removal_tests::mounted_passive_save_retires_held_canvas_drag_but_allows_a_fresh_drag",
|
||||
"app::diagram_removal_tests::mounted_placement_properties_selection_supports_hide_and_model_delete",
|
||||
"app::diagram_removal_tests::mounted_programmatic_canvas_entry_needs_no_mouse_focus_boolean",
|
||||
"app::diagram_removal_tests::mounted_removal_intents_reject_stale_selection_revision_owner_and_document",
|
||||
"app::diagram_removal_tests::mounted_revision_and_history_preserve_the_actual_canvas_or_inspector_focus_owner",
|
||||
"app::diagram_removal_tests::mounted_shift_delete_captures_target_cancel_escape_and_confirmation_replay",
|
||||
"app::diagram_removal_tests::mounted_state_action_and_internal_rows_delete_relations_and_preserve_reused_work",
|
||||
"app::diagram_removal_tests::mounted_state_delete_uses_state_placement_and_preserves_architecture_placement",
|
||||
"app::diagram_removal_tests::mounted_window_modal_dirty_and_modifier_boundaries_retire_delete_focus",
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
+2895
File diff suppressed because it is too large
Load Diff
+1087
File diff suppressed because it is too large
Load Diff
+1119
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"source": "e1240295bd114d23d3f67a69e6b38bdb2e25bb0d",
|
||||
"scope": "Partial listing/focused/strict checkpoint; no full/native claim.",
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"bytes": 1994,
|
||||
"sha256": "22bc5a5191467544bf1dd5cb40acefc93ae7d394b4f9d2fb2bae46d256781441"
|
||||
},
|
||||
{
|
||||
"path": "gates/clippy-e124029.inputs.json",
|
||||
"bytes": 107751,
|
||||
"sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87"
|
||||
},
|
||||
{
|
||||
"path": "gates/clippy-e124029.log",
|
||||
"bytes": 336,
|
||||
"sha256": "f68709b04741e93b064896470518afd704da9db799ce26e874531a7e143a726c"
|
||||
},
|
||||
{
|
||||
"path": "gates/clippy-e124029.result.json",
|
||||
"bytes": 902,
|
||||
"sha256": "6676647cdb2df5790c608794053df01edc1449f5c27054d1b073db66fcebc57d"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-nav-e124029.admission.json",
|
||||
"bytes": 3185,
|
||||
"sha256": "5d50e095fd9323f5d1bdb2a3607d571377e2d82542252b54b8beff84f3e85a35"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-nav-e124029.inputs.json",
|
||||
"bytes": 107751,
|
||||
"sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-nav-e124029.log",
|
||||
"bytes": 2706,
|
||||
"sha256": "288e8ee230ebae709f71ba4a86a0ceb6e63fe16ceee5eff72f27d0a128b6e635"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-nav-e124029.result.json",
|
||||
"bytes": 1188,
|
||||
"sha256": "734cf663e70af4230b076edb46a0e22ff05e497b6dd852d8e375137a36aa645f"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-scroll-e124029.admission.json",
|
||||
"bytes": 1351,
|
||||
"sha256": "a161d8c5948b4293dd7e298e865d42469c2f20b05de70a68b378777db257b3ae"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-scroll-e124029.inputs.json",
|
||||
"bytes": 107751,
|
||||
"sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-scroll-e124029.log",
|
||||
"bytes": 826,
|
||||
"sha256": "b97a61c9479b18cd25a8d113040113deaaab35afd80b72459ae3b143a0c80575"
|
||||
},
|
||||
{
|
||||
"path": "gates/focused-scroll-e124029.result.json",
|
||||
"bytes": 1195,
|
||||
"sha256": "f1eadc08fd9104f480105c1e23a7b78e2f21dbb631ba37d0a63d3d01e658411d"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-659b7a6.inputs.json",
|
||||
"bytes": 107751,
|
||||
"sha256": "18ef6ae2766066f2cfbdb10e9c63e41b7f21f7ba676bd2c0b72b071b69196da2"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-659b7a6.log",
|
||||
"bytes": 1393,
|
||||
"sha256": "b24a575425ab16a84f68016f8303efc9d552e73cf6cf54e20029eee76fd97129"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-659b7a6.result.json",
|
||||
"bytes": 902,
|
||||
"sha256": "72326c9436742c50e049b6f7d4131c8bc0e149f9cccf00724e32f75a5e39145a"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-e124029.admission.json",
|
||||
"bytes": 23467,
|
||||
"sha256": "36cd297979d854db50add69f7bebd8225b73093c1c5d7c9feed95bbbd7fdb0e8"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-e124029.inputs.json",
|
||||
"bytes": 107751,
|
||||
"sha256": "a011170b83ddc0c835428c10b2079b0df02d2bd6f90167f16b1297c683601a87"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-e124029.log",
|
||||
"bytes": 117338,
|
||||
"sha256": "8dbd49a9c36a6eff682049e6a3a919666e75e4e312a53d4c1ff60b82e46b8404"
|
||||
},
|
||||
{
|
||||
"path": "gates/list-e124029.result.json",
|
||||
"bytes": 119298,
|
||||
"sha256": "f7fbb70f7984cd8adb089c0ad749d8240ec92f363679205a2d1adf805a15c2a6"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/admit-navigation-palette-gate.before-prefix-fix-20260913.py",
|
||||
"bytes": 4464,
|
||||
"sha256": "3e6874bab622e986c27d3de5e2babefe48092a7ba7976c11c9bcee653b46f4a8"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/admit-navigation-palette-gate.py",
|
||||
"bytes": 4849,
|
||||
"sha256": "de4263680118631e83bb8a78b5c12af48473a91f32b671d94fc666aba1a01058"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/archive-navigation-palette-e124029.py",
|
||||
"bytes": 4321,
|
||||
"sha256": "8bca1abfe045a1f0aed19df83124120b51dd70663793e6c68503672c2e5c210a"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/navigation-palette-gate-admission-review-20260913.md",
|
||||
"bytes": 13017,
|
||||
"sha256": "e1d62a771dcd6b49824a9c4e922e69821c8990f34d827754abe6b5f68b8d8608"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/navigation-palette-required-tests-20260913.json",
|
||||
"bytes": 3318,
|
||||
"sha256": "e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/navigation-palette-union-correction-independent-review-20260913.md",
|
||||
"bytes": 5640,
|
||||
"sha256": "2fc63099f34240b93117bad5c64f9e01a1b71c969d4e30d7c662c98a761e5c0b"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/navigation-palette-union-independent-review-20260913.md",
|
||||
"bytes": 7823,
|
||||
"sha256": "ec831e7a10f1f733adddc725905d522a8960e59ff2c02adf26ac92476dbc68c8"
|
||||
},
|
||||
{
|
||||
"path": "tools-and-reviews/run-navigation-palette-gate.py",
|
||||
"bytes": 3928,
|
||||
"sha256": "fc14c81020c55eb8edf9a65eb260a0c4c870ec48ed9c95304f2be74e741068a4"
|
||||
}
|
||||
]
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
"""Strict membership admission, separate from the raw gate result recorder."""
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timezone
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
root = Path(__file__).resolve().parent.parent
|
||||
folder = root / '.local/navigation-palette-gates-20260913'
|
||||
name = sys.argv[1]
|
||||
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
|
||||
result_path = folder / (name + '.result.json')
|
||||
record = json.loads(result_path.read_bytes())
|
||||
source = record['source']
|
||||
assert record['exit'] == 0 and not record['changed_inputs'] and record['head_after'] == source
|
||||
assert subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip() == source
|
||||
inputs_path = folder / record['inputs']
|
||||
inputs = json.loads(inputs_path.read_bytes())
|
||||
assert inputs['source'] == source
|
||||
for item in inputs['inputs']:
|
||||
raw = (root / item['path']).read_bytes()
|
||||
assert len(raw) == item['bytes'] and hashlib.sha256(raw).hexdigest() == item['sha256']
|
||||
assert len(record['artifacts']) == 1, 'The actual test executable must be identified'
|
||||
artifact = record['artifacts'][0]
|
||||
raw = Path(artifact['path']).read_bytes()
|
||||
assert len(raw) == artifact['bytes'] and hashlib.sha256(raw).hexdigest() == artifact['sha256']
|
||||
log_path = folder / (name + '.log')
|
||||
log = log_path.read_text(encoding='utf-8', errors='strict')
|
||||
required_path = root / '.local/navigation-palette-required-tests-20260913.json'
|
||||
assert hashlib.sha256(required_path.read_bytes()).hexdigest() == 'e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a'
|
||||
required = json.loads(required_path.read_bytes())['groups']
|
||||
if record['command'][-1] == '--list':
|
||||
names = record['listing_members']
|
||||
assert names and len(names) == len(set(names)) == record['listing_count']
|
||||
totals = re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M)
|
||||
assert totals == [(str(len(names)), '0')], totals
|
||||
expected = {'navigation_union': 17, 'preview_scroll_tests': 4,
|
||||
'scenario_activation': 14, 'scenario_lifecycle': 36,
|
||||
'context_menu': 12, 'reference_chooser': 14, 'style::tests': 10,
|
||||
'allocation_drag::tests': 32, 'diagram_removal_tests': 18}
|
||||
groups = {prefix: [n for n in names if prefix in n] for prefix in expected}
|
||||
for prefix, count in expected.items():
|
||||
assert len(groups[prefix]) == count, (prefix, len(groups[prefix]), count)
|
||||
for prefix, exact_names in required.items():
|
||||
assert set(groups[prefix]) == set(exact_names) and len(exact_names) == len(set(exact_names)), prefix
|
||||
mode = 'list'
|
||||
else:
|
||||
listing_name, selector = sys.argv[2:4]
|
||||
assert re.fullmatch(r'[a-zA-Z0-9-]+', listing_name)
|
||||
listing_path = folder / (listing_name + '.result.json')
|
||||
listing = json.loads(listing_path.read_bytes())
|
||||
admitted = json.loads((folder / (listing_name + '.admission.json')).read_bytes())
|
||||
assert admitted['source'] == listing['source'] == source and admitted['mode'] == 'list'
|
||||
assert admitted['result_sha256'] == hashlib.sha256(listing_path.read_bytes()).hexdigest()
|
||||
assert admitted['artifact'] == artifact, 'Focused execution must use the admitted test executable'
|
||||
assert admitted['required_names_sha256'] == hashlib.sha256(required_path.read_bytes()).hexdigest()
|
||||
assert selector in record['command']
|
||||
expected_names = {n for n in listing['listing_members'] if selector in n}
|
||||
actual = re.findall(r'^test ([^\r\n]+) \.\.\. ok\s*$', log, re.M)
|
||||
assert expected_names and len(actual) == len(set(actual)) and set(actual) == expected_names
|
||||
assert re.search(rf'test result: ok\. {len(actual)} passed; 0 failed; 0 ignored;', log)
|
||||
groups = {selector: sorted(expected_names)}
|
||||
mode = 'focused'
|
||||
receipt = folder / (name + '.admission.json')
|
||||
assert not receipt.exists()
|
||||
with receipt.open('x', encoding='utf-8', newline='\n') as stream:
|
||||
stream.write(json.dumps({'utc': datetime.now(timezone.utc).isoformat(), 'source': source,
|
||||
'mode': mode, 'result_sha256': hashlib.sha256(result_path.read_bytes()).hexdigest(),
|
||||
'log_sha256': hashlib.sha256(log_path.read_bytes()).hexdigest(),
|
||||
'inputs_sha256': hashlib.sha256(inputs_path.read_bytes()).hexdigest(),
|
||||
'required_names_sha256': hashlib.sha256(required_path.read_bytes()).hexdigest(),
|
||||
'verified_inputs': len(inputs['inputs']), 'artifact': artifact, 'groups': groups}, indent=2) + '\n')
|
||||
print(json.dumps({'admission': str(receipt), 'source': source, 'groups': {k:len(v) for k,v in groups.items()}}))
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
"""Strict membership admission, separate from the raw gate result recorder."""
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timezone
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
root = Path(__file__).resolve().parent.parent
|
||||
folder = root / '.local/navigation-palette-gates-20260913'
|
||||
name = sys.argv[1]
|
||||
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
|
||||
result_path = folder / (name + '.result.json')
|
||||
record = json.loads(result_path.read_bytes())
|
||||
source = record['source']
|
||||
assert record['exit'] == 0 and not record['changed_inputs'] and record['head_after'] == source
|
||||
assert subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip() == source
|
||||
inputs_path = folder / record['inputs']
|
||||
inputs = json.loads(inputs_path.read_bytes())
|
||||
assert inputs['source'] == source
|
||||
for item in inputs['inputs']:
|
||||
raw = (root / item['path']).read_bytes()
|
||||
assert len(raw) == item['bytes'] and hashlib.sha256(raw).hexdigest() == item['sha256']
|
||||
assert len(record['artifacts']) == 1, 'The actual test executable must be identified'
|
||||
artifact = record['artifacts'][0]
|
||||
raw = Path(artifact['path']).read_bytes()
|
||||
assert len(raw) == artifact['bytes'] and hashlib.sha256(raw).hexdigest() == artifact['sha256']
|
||||
log_path = folder / (name + '.log')
|
||||
log = log_path.read_text(encoding='utf-8', errors='strict')
|
||||
required_path = root / '.local/navigation-palette-required-tests-20260913.json'
|
||||
assert hashlib.sha256(required_path.read_bytes()).hexdigest() == 'e426be35c31925d91b5ce6df15abe30f814ba6134a8013ce47208c365df7127a'
|
||||
required = json.loads(required_path.read_bytes())['groups']
|
||||
if record['command'][-1] == '--list':
|
||||
names = record['listing_members']
|
||||
assert names and len(names) == len(set(names)) == record['listing_count']
|
||||
totals = re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M)
|
||||
assert totals == [(str(len(names)), '0')], totals
|
||||
# Two intentionally cross-module groups use exact independently fixed sets.
|
||||
# Retained module suites must use anchored prefixes: e.g. an unrelated test
|
||||
# name containing context_menu is not a context_menu module test.
|
||||
expected = {'navigation_union': 17, 'preview_scroll_tests': 4,
|
||||
'behavior::scenario_activation::': 14, 'behavior::scenario_lifecycle::': 36,
|
||||
'context_menu::': 12, 'forms::reference_chooser::': 14, 'style::tests::': 10,
|
||||
'allocation_drag::tests::': 32, 'app::allocation_drag::tests::': 32,
|
||||
'app::diagram_removal_tests::': 18}
|
||||
groups = {prefix: [n for n in names if (prefix in n if prefix in required else n.startswith(prefix))]
|
||||
for prefix in expected}
|
||||
for prefix, count in expected.items():
|
||||
assert len(groups[prefix]) == count, (prefix, len(groups[prefix]), count)
|
||||
for prefix, exact_names in required.items():
|
||||
assert set(groups[prefix]) == set(exact_names) and len(exact_names) == len(set(exact_names)), prefix
|
||||
mode = 'list'
|
||||
else:
|
||||
listing_name, selector = sys.argv[2:4]
|
||||
assert re.fullmatch(r'[a-zA-Z0-9-]+', listing_name)
|
||||
listing_path = folder / (listing_name + '.result.json')
|
||||
listing = json.loads(listing_path.read_bytes())
|
||||
admitted = json.loads((folder / (listing_name + '.admission.json')).read_bytes())
|
||||
assert admitted['source'] == listing['source'] == source and admitted['mode'] == 'list'
|
||||
assert admitted['result_sha256'] == hashlib.sha256(listing_path.read_bytes()).hexdigest()
|
||||
assert admitted['artifact'] == artifact, 'Focused execution must use the admitted test executable'
|
||||
assert admitted['required_names_sha256'] == hashlib.sha256(required_path.read_bytes()).hexdigest()
|
||||
assert selector in record['command']
|
||||
expected_names = {n for n in listing['listing_members'] if selector in n}
|
||||
actual = re.findall(r'^test ([^\r\n]+) \.\.\. ok\s*$', log, re.M)
|
||||
assert expected_names and len(actual) == len(set(actual)) and set(actual) == expected_names
|
||||
assert re.search(rf'test result: ok\. {len(actual)} passed; 0 failed; 0 ignored;', log)
|
||||
groups = {selector: sorted(expected_names)}
|
||||
mode = 'focused'
|
||||
receipt = folder / (name + '.admission.json')
|
||||
assert not receipt.exists()
|
||||
with receipt.open('x', encoding='utf-8', newline='\n') as stream:
|
||||
stream.write(json.dumps({'utc': datetime.now(timezone.utc).isoformat(), 'source': source,
|
||||
'mode': mode, 'result_sha256': hashlib.sha256(result_path.read_bytes()).hexdigest(),
|
||||
'log_sha256': hashlib.sha256(log_path.read_bytes()).hexdigest(),
|
||||
'inputs_sha256': hashlib.sha256(inputs_path.read_bytes()).hexdigest(),
|
||||
'required_names_sha256': hashlib.sha256(required_path.read_bytes()).hexdigest(),
|
||||
'verified_inputs': len(inputs['inputs']), 'artifact': artifact, 'groups': groups}, indent=2) + '\n')
|
||||
print(json.dumps({'admission': str(receipt), 'source': source, 'groups': {k:len(v) for k,v in groups.items()}}))
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
"""Preserve this partial Windows checkpoint, including the rejected first build."""
|
||||
from pathlib import Path
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
root = Path(__file__).resolve().parent.parent
|
||||
gate = root / '.local/navigation-palette-gates-20260913'
|
||||
dest = root / 'harness/experiments/navigation-palette-e124029-windows-20260913'
|
||||
assert not dest.exists()
|
||||
payloads = {}
|
||||
for name in ('list-659b7a6', 'list-e124029', 'focused-nav-e124029', 'focused-scroll-e124029', 'clippy-e124029'):
|
||||
result = json.loads((gate / (name + '.result.json')).read_bytes())
|
||||
assert result['changed_inputs'] == [] and result['head_after'] == result['source']
|
||||
for suffix in ('.inputs.json', '.result.json', '.log', '.admission.json'):
|
||||
path = gate / (name + suffix)
|
||||
if suffix != '.admission.json' or path.exists():
|
||||
payloads['gates/' + path.name] = path.read_bytes()
|
||||
for name in ('run-navigation-palette-gate.py', 'admit-navigation-palette-gate.py',
|
||||
'admit-navigation-palette-gate.before-prefix-fix-20260913.py',
|
||||
'navigation-palette-required-tests-20260913.json',
|
||||
'navigation-palette-union-independent-review-20260913.md',
|
||||
'navigation-palette-union-correction-independent-review-20260913.md',
|
||||
'navigation-palette-gate-admission-review-20260913.md'):
|
||||
payloads['tools-and-reviews/' + name] = (root / '.local' / name).read_bytes()
|
||||
payloads['tools-and-reviews/' + Path(__file__).name] = Path(__file__).read_bytes()
|
||||
strict = json.loads(payloads['gates/clippy-e124029.result.json'])
|
||||
payloads['README.md'] = f'''# Partial combined Windows checkpoint
|
||||
|
||||
Source e1240295bd114d23d3f67a69e6b38bdb2e25bb0d, Windows gnullvm,
|
||||
Rust 1.98.1, jobs1. All 578 captured committed inputs remained unchanged.
|
||||
|
||||
The original659b7a6 listing compile failed with E0583 for two nested test-module
|
||||
paths; it ran no tests. The source correction adds explicit paths only.
|
||||
Corrected e124 lists 1082 actual tests. Exact 17 cross-feature navigation tests
|
||||
and four mounted preview-scroll tests pass, with no failures or ignored cases,
|
||||
using the same captured executable. Retained module memberships are verified
|
||||
by the listing admission receipt. Strict all-target Clippy actual exit: {strict['exit']}.
|
||||
Read its preserved log for the actual outcome; no full-suite or GUI/native pass
|
||||
is asserted by this checkpoint.
|
||||
|
||||
The first local admission invocation rejected its own substring-based module
|
||||
count: `context_menu` matched 15 names, including three tests outside that module.
|
||||
The corrected helper anchors retained suites to module prefixes, while the two
|
||||
cross-module sets retain their independently fixed exact names. It also admits
|
||||
both distinct 32-test allocation modules. No test was removed or expected module
|
||||
count reduced. The original helper remains beside the correction. The original
|
||||
admission invocation produced an assertion in tool output, not an admission
|
||||
receipt; no missing result file is manufactured here.
|
||||
|
||||
Source reviews are scoped to their stated commits and cannot replace runtime
|
||||
checks. The first review missed Rust's inherited path resolution; that failed
|
||||
compile and subsequent explicit-path source review remain part of the record.
|
||||
Full intended combined acceptance also retains the shared Find Close word
|
||||
selection finding from Gitea issue13; its correction is a separate contribution.
|
||||
|
||||
This archive omits the large executable and dependency cache. Their identities
|
||||
are recorded in actual receipts. Commands and all test/build inputs are preserved
|
||||
by Git source pins and manifests. Linux remains deferred by user instruction.
|
||||
'''.encode()
|
||||
dest.mkdir(parents=True)
|
||||
rows = []
|
||||
for name, raw in sorted(payloads.items()):
|
||||
path = dest / name
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with path.open('xb') as stream:
|
||||
stream.write(raw)
|
||||
assert path.read_bytes() == raw
|
||||
rows.append({'path': name, 'bytes': len(raw), 'sha256': hashlib.sha256(raw).hexdigest()})
|
||||
with (dest / 'manifest.json').open('x', encoding='utf-8', newline='\n') as stream:
|
||||
stream.write(json.dumps({'source': 'e1240295bd114d23d3f67a69e6b38bdb2e25bb0d',
|
||||
'scope': 'Partial listing/focused/strict checkpoint; no full/native claim.', 'files': rows}, indent=2) + '\n')
|
||||
print(json.dumps({'archive': str(dest), 'payloads': len(rows), 'strict_exit': strict['exit']}))
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# 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](run-navigation-palette-gate.py), 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](admit-navigation-palette-gate.py), 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_sha256` to 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.
|
||||
|
||||
1. **OA/SA repeated and nested process navigation.** Open topology `oa_caller`, then `sa_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 containing `oa_r1`. Exercise keyboard chooser/Escape, canvas F6/Tab and return to editing, including minimum-window overflow. Whole Project/SourceBundle and model history remain unchanged.
|
||||
2. **Focused F12/F2 and Undo.** In `examples/source-project`, use the second `@assess_report` reference. 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 to `assess_report_union`; inspect preview/overflowing Details, then confirm six alias-token changes in `sa/reporting.arcadia` and `views.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.
|
||||
3. **State action navigation → Delete → Undo.** In compact source, target relation `delete_54`, UUID `de1e7e00-0000-4000-8000-000000000036`, through source/semantic diagram navigation to its entry-action row. Verify relation identity rather than reused function `delete_50` or state `delete_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.
|
||||
4. **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](delete-native-oracle.rs) 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
|
||||
|
||||
```text
|
||||
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
|
||||
```
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"source": "659b7a655a33e71e00b8d86a2674bcbd631681d2",
|
||||
"reviewed_parent": "633ec3a924e057dc9f185d679be28666d4406a40",
|
||||
"scope": "Expected Windows debug test members derived from source, not actual listing or runtime acceptance; explicit module-path correction does not change these functions.",
|
||||
"groups": {
|
||||
"navigation_union": [
|
||||
"app::allocation_drag::tests::navigation_union::old_chooser_envelopes_preserve_a_current_canvas_gesture",
|
||||
"app::allocation_drag::tests::navigation_union::stale_gesture_packets_preserve_navigation_and_a_new_live_cancel_still_works",
|
||||
"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::navigation_union_tests::document_reset_retains_all_three_worker_slots_until_their_exact_results_arrive",
|
||||
"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::loading_and_ready_diagram_choosers_reject_a_previously_captured_rename_begin",
|
||||
"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::captured_behavior_toolbar_cannot_retire_a_new_documents_navigation",
|
||||
"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::captured_old_source_query_and_find_close_preserve_the_new_destination",
|
||||
"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::current_source_query_and_checked_find_close_remain_live",
|
||||
"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::rename_modal_rejects_queued_diagram_and_source_navigation_without_losing_approval",
|
||||
"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::stale_begin_close_and_actual_confirm_leave_new_diagram_focus_and_pending_measurement_unchanged"
|
||||
],
|
||||
"preview_scroll_tests": [
|
||||
"app::source_rename::tests::preview_scroll_tests::delayed_page_and_approval_operations_cannot_reset_a_new_destination",
|
||||
"app::source_rename::tests::preview_scroll_tests::details_round_trip_retires_held_reset_without_changing_page_or_repeated_visibility_scroll",
|
||||
"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::repeated_page_visits_filters_and_fast_preview_completion_have_distinct_destinations"
|
||||
]
|
||||
}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
# Independent source re-review — navigation union correction
|
||||
|
||||
**No actionable finding in the bounded correction.** Reviewed immutable `633ec3a924e057dc9f185d679be28666d4406a40`, parent `4e51d68973da52cf057fab4983b9f112400b802c`, in `.local/navigation-palette-union-20260913`; worktree was clean and HEAD matched. This supersedes the P2 finding for the covered envelope family in [the original review](navigation-palette-union-independent-review-20260913.md), not its unrun/native limitations. No compiler, tests, UI, Gitea, production edits or commits by this reviewer.
|
||||
|
||||
## Admission and current-event behavior
|
||||
|
||||
- `app.rs:1252–1265` now admits source, chooser and allocation envelopes before reveal reconciliation, allocation retirement and source-interaction rotation. Existing early BehaviorControl/SourceRename guards remain. The fix does not make all user input passive.
|
||||
- `app/source_symbols.rs:34–49` shares the prior exact source session/path and Find context/instance/open/availability conditions. `app.rs:1398–1408` reuses the guard for direct inner dispatch; a checked Find-close is mapped only afterward. Bare legacy Close remains rejected. The earlier old-workspace query/Find-close reproduction can no longer reach either shared boundary.
|
||||
- `app/diagram_usages.rs:147–169` shares exact Open document/revision/subject admission and every panel-token variant. Old Open/Close/Choose and other old token messages are rejected before allocation/source rotation. Current-token model-change recovery remains at lines 202–208: it can refresh a stale panel revision rather than being silently suppressed by an overstrict outer revision check. Close retains its worker-slot semantics; completion identity and release logic at lines 89–124 are unchanged.
|
||||
- `app/allocation_drag.rs:440–462` rejects Cancel/Preview/Release unless their token belongs to the active gesture, and rejects old Refused epochs. A current-token packet still reaches its stamp validation and recovery; token equality is not substituted for geometry/model validity. KeyboardBoundary/Unfocused handling is unchanged.
|
||||
- Invalid Press is deliberately different: `app.rs:1260–1265` sends it through the existing allocation feedback path before shared boundaries. The unchanged active-gesture exclusion plus `allocation_press_owns_current_view` validation at `allocation_drag.rs:496–512` retain the changed-view or finish-edit explanation. Current valid Press still retires navigation and enters its ordinary capture/selection path; current Cancel still retires the active gesture. No added selection rewrite.
|
||||
- SourceSymbolsReady/SourceRenameReady/DiagramUsagesReady are unaffected by the new input guards and remain passive through the shared adapters; their completion dispatch still precedes modal handling in `app.rs:1412–1423`. No worker-slot or modal-admission weakening was found in this delta.
|
||||
|
||||
## Evaluator adequacy
|
||||
|
||||
Six added tests exercise actual App dispatch rather than only calling the new predicates. Four in `app/source_rename/navigation_union_tests/palette_union.rs:5–97` use captured old source/chooser envelopes, cover all seven chooser-token variants, and compare navigation/focus/camera, allocation epoch, source interaction, accepted snapshot identity and SourceBundle. Every rejected navigation case completes the valid first viewport through `first_measurement`, whose assertions check measured canvas size, centering and exact selected placement. Positive controls start a live source query, close the current Find instance, open/close the current chooser, and release its exact occupied worker without reopening it.
|
||||
|
||||
Two in `app/allocation_drag_tests/navigation_union.rs:105–203` capture Press through the existing actual DiagramCanvas event fixture (`allocation_drag_tests.rs:113–122`). They reject old Cancel/Preview/Release/Refused packets both after navigation and during a newer gesture, test old-Press feedback without consuming the pending reveal, complete the first viewport, then verify live Press/Cancel behavior. The chooser test proves stale envelopes preserve a live gesture while a current chooser Open retires it. Snapshot identity and full source equality guard against hidden document/history mutation. These are discriminating tests for the earlier P2, although all are **unrun**; retained motion/stamp/modal/worker tests remain necessary when executing the union gates.
|
||||
|
||||
## Ancillary delta and limits
|
||||
|
||||
The two peer lint files are exact blobs from `a49b0ec7ac4538a372139175386a881645c1a59e`: `app/diagram_usages/tests.rs` blob `95b0089d35230e66891e2a87af0022b4fbc542d9`; `behavior/scenario/usage/tests.rs` blob `145289ea088ca898339a21bedcf61fca78120a77`. Their condition collapsing and half-open range assertion preserve the prior assertions. No production peer change is imported in that lint subset.
|
||||
|
||||
`allocation_input.rs:68` adds `navigation_focus: None` to a temporary canvas used solely by `work_dirty_point` at line 77; this path does not draw. The analogous allocation test fixture field and test module declaration are narrow composition fixes. Typed lifecycle/paint, palette styles, real rendered focus wiring, source-editor dynamic IDs/F2/F12, root readonly tests and optional picker layout receive no change in this correction.
|
||||
|
||||
The union remains unbuilt/unrun. Root e44 full PASS874 and dd39 style/strict/native receipts validate their own identified sources, not this candidate. Proceed to combined focused/full/strict/build gates and matching native navigation/focus/rename/removal acceptance. Source review does not establish compiler success, race-test success or native usability.
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
# Independent source review: navigation/palette union
|
||||
|
||||
Reviewed immutable candidate **`4e51d68973da52cf057fab4983b9f112400b802c`** in `.local/navigation-palette-union-20260913`, based on root `e44f07565cc7599d5c5a15a6b5599b4f5d105718` with the scoped peer navigation/rename contribution through `10bd71197285a4ba894e6ed9398d2c5402ab463d`. Read its `harness/release-navigation-palette-union-20260913.md`, production composition and five new regressions. No compiler, tests, native UI, Gitea, source edits or commits by this reviewer. This is a bounded composition review, not a revalidation of every peer feature.
|
||||
|
||||
## Actionable finding
|
||||
|
||||
**P2 — Several stale envelopes still change a newer navigation/allocation boundary before their handlers reject them.** The early SourceRename and BehaviorControl checks solve two instances, but `App::update` at `crates/oa-desktop/src/app.rs:1280–1281` invokes `reconcile_pending_diagram_reveal` and `allocation_before` before the remaining envelope checks. Three concrete variants exist:
|
||||
|
||||
1. **Old source query / Find-close clears a new reveal.** Capture a `source_symbol_message(Query(Definition))` or `source_find_close_message()` from a prior source-workspace session; navigate a fresh App to an exact diagram usage and leave its first viewport pending; deliver that captured message. `app/diagram_reveal.rs:78–101` treats both as active actions, so it clears `pending_diagram_reveal` and `diagram_navigation_focus`; `app/allocation_drag.rs:397–415` retires the current allocation capability. Only afterward does `app.rs:1385–1407` reject the old SourceFindClose instance/context or SourceSymbols session/path. The new viewport can no longer finish the intended camera reveal. This is source-demonstrable even with completely unchanged accepted model/source and without forging an inner mutation.
|
||||
2. **Old work-drag cancellation clears a new reveal.** Deliver `WorkDrag(Cancel(old_token))` from a retired gesture after the same navigation. Only KeyboardBoundary and Unfocused are passive in the reveal adapter; Cancel clears the pending reveal/focus before `app/allocation_drag.rs:457–468` checks its active token and returns without an allocation action. A delayed old gesture event must not behave like a current user's cancel. Current valid gesture cancellation must still retire the reveal and gesture normally.
|
||||
3. **Old diagram-chooser action retires allocation.** Capture a DiagramUsage Open with an old document context or a Close/Choose with an old panel token. `app/diagram_reveal.rs` correctly classifies DiagramUsage as passive until the accepted handler takes ownership, but `allocation_before` does not. A queued rejected chooser action can retire the current work capability before `app/diagram_usages.rs:157–202` rejects its old document/token; `update_inner` also rotates source interaction before that rejection. This undercuts the handler's explicit intent that rejected/stale chooser envelopes leave the newer destination alone when combined with root allocation ownership.
|
||||
|
||||
**Fix at admission/dispatch ordering:** establish that the envelope belongs to the current owner/token/context before either boundary adapter changes state. Reuse the handler's semantic rules; do not simply classify all user actions as passive or suppress current valid cancellation. Add actual App regressions using captured old source/chooser/gesture envelopes, preserving pending reveal, focus identity, allocation epoch/active gesture, accepted snapshot and SourceBundle, then complete the first valid viewport. Include a positive current gesture cancellation case. This finding was sent directly to the implementation agent and parent before this report.
|
||||
|
||||
## Other requested composition checks
|
||||
|
||||
No additional actionable defect found within the inspected seams:
|
||||
|
||||
- Passive SourceSymbolsReady/SourceRenameReady/DiagramUsagesReady events are recognized before model/modal dispatch and by both relevant boundary adapters. Exact completion handlers retain occupied-worker identity and do not let an unrelated completion release a newer slot. Actual accepted navigation still changes the ordinary allocation/camera boundary.
|
||||
- KeyboardBoundary is passive for pending navigation but retires a genuinely active allocation gesture in its own handler. With no active gesture it leaves the epoch untouched; Unfocused retains its existing gesture-retirement behavior. The stale-token variant above is the uncovered distinction.
|
||||
- Root's busy execution admission remains separate from keyboard ownership; the diagram chooser additionally excludes canvas ownership. Root focus wrappers, pending form focus, pan/Space guards and state view's optional-picker stable widget slot remain. `state_view.rs` changes only navigation-focus presentation wiring.
|
||||
- Root typed activation/lifecycle modules, their tests, palette styles, readonly test source and custom overlay files are byte-identical to e44. `behavior.rs` changes only extraction/reuse of the existing label-bound calculation; precise message → activation → label → broad-hit priority and guide/backplate/activation/foreground painting remain. Navigation representation discovery does not add duplicate semantic entries for each typed activation segment.
|
||||
- Root BOUNDARY remains on ordinary topology preview boundaries; selected peer preview tiles/links use their explicit selected branch. State selected-row outlines and architecture warning/route semantics remain intact. New navigation outlines are presentation-only and do not enter hit/edit placement identity.
|
||||
- `views.rs:1216–1231` retains `style::source_editor` together with dynamic editor ID, captured key-binding context, existing highlighter and fonts. Focused F2 and F12/Shift-F12 bind to their intended envelopes; normal input falls back to Iced. Existing explicit Windows Alt-Space handling leaves AltGr/control combinations outside that exception. The stale source-envelope ordering finding above remains relevant to queued shortcuts.
|
||||
|
||||
## Evaluator adequacy and limits
|
||||
|
||||
The five new tests are meaningful but did not cover the reported envelope family. Three `palette_union` tests use actual App update, independently completed queries, exact navigation identity, allocation epoch, accepted snapshot identity and first valid viewport; their membership is only KeyboardBoundary, stale Rename Begin and stale BehaviorControl. They cannot establish safety for SourceSymbols, SourceFindClose, DiagramUsage or stale WorkDrag tokens by analogy.
|
||||
|
||||
The two mounted navigation/removal tests complete a real usage query, mount the production App tree, focus the public canvas widget, deliver actual Delete and Shift-Delete, cancel once, confirm the exact target, compare the whole Project against the core Delete command, and Undo to the complete original Project/SourceBundle. They retain owner/reused-work identity. No private focus seed or fabricated removal intent bypasses the canvas path. Their `refresh_draft` normalization assertions substantiate why the earlier port/state-row prediction was incomplete; **no selection rewrite is warranted by that prediction**.
|
||||
|
||||
All union tests and the union itself are **unrun**. Root e44's full PASS874 and later dd39 corrected style/strict/build evidence apply to their own sources; neither validates this navigation union. Before integration/acceptance, review the stale-envelope correction, run new and retained grouped/full/strict gates, and build the matching executable. Native checks remain necessary for dynamic editor focus/immediate typing and Undo, overflowing rename preview/Details return, exact diagram/port/state-row targets, canvas focus after navigation, shoulder/lifecycle selection and window/DPI behavior. Use deterministic event-order regressions for races; screenshots do not prove those boundaries.
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
"""Bind one serialized Windows union gate to committed inputs and actual output."""
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timezone
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
root = Path(__file__).resolve().parent.parent
|
||||
source, name, mode = sys.argv[1:4]
|
||||
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
|
||||
assert subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip() == source
|
||||
out = root / '.local/navigation-palette-gates-20260913'
|
||||
out.mkdir(exist_ok=True)
|
||||
assert not any((out / (name + s)).exists() for s in ('.inputs.json', '.log', '.result.json'))
|
||||
prefix = ['cargo', 'test', '--locked', '-p', 'oa-desktop', '--bin', 'arcadia-studio']
|
||||
commands = {
|
||||
'list': prefix + ['--', '--list'],
|
||||
'focused': prefix + [sys.argv[4] if len(sys.argv) > 4 else 'navigation_union', '--', '--test-threads=1'],
|
||||
'full': prefix + ['--', '--test-threads=1'],
|
||||
'clippy': ['cargo', 'clippy', '--locked', '-p', 'oa-desktop', '--all-targets', '--', '-D', 'warnings'],
|
||||
'gui': ['cargo', 'build', '--locked', '-p', 'oa-desktop', '--bin', 'arcadia-studio'],
|
||||
}
|
||||
command = commands[mode]
|
||||
paths = subprocess.check_output(['git', 'ls-tree', '-r', '--name-only', source, 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build', 'crates', 'assets', 'docs', 'examples', 'harness/fixtures'], cwd=root).decode().splitlines()
|
||||
blobs = subprocess.check_output(['git', 'cat-file', '--batch'], cwd=root,
|
||||
input=''.join(f'{source}:{p}\n' for p in paths).encode())
|
||||
offset, inputs = 0, []
|
||||
for path in paths:
|
||||
end = blobs.index(b'\n', offset)
|
||||
_, kind, size = blobs[offset:end].split()
|
||||
assert kind == b'blob'
|
||||
size = int(size)
|
||||
raw = blobs[end + 1:end + 1 + size]
|
||||
assert (root / path).read_bytes() == raw, path
|
||||
inputs.append({'path': path, 'bytes': size, 'sha256': hashlib.sha256(raw).hexdigest()})
|
||||
offset = end + size + 2
|
||||
assert offset == len(blobs)
|
||||
manifest = out / (name + '.inputs.json')
|
||||
manifest.write_text(json.dumps({'source': source, 'inputs': inputs}, indent=2) + '\n', encoding='utf-8', newline='\n')
|
||||
started = datetime.now(timezone.utc).isoformat()
|
||||
print(json.dumps({'start': started, 'command': command, 'source': source, 'inputs': len(inputs)}), flush=True)
|
||||
log_path = out / (name + '.log')
|
||||
with log_path.open('xb') as stream:
|
||||
run = subprocess.run(command, cwd=root, stdout=stream, stderr=subprocess.STDOUT)
|
||||
ended = datetime.now(timezone.utc).isoformat()
|
||||
changed = [i['path'] for i in inputs if hashlib.sha256((root / i['path']).read_bytes()).hexdigest() != i['sha256']]
|
||||
head_after = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip()
|
||||
log = log_path.read_text(encoding='utf-8', errors='replace')
|
||||
members = re.findall(r'^([^\r\n]+): test\r?$', log, re.M) if mode == 'list' else []
|
||||
artifacts = []
|
||||
for match in re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log):
|
||||
path = Path(match)
|
||||
if not path.is_absolute():
|
||||
path = root / path
|
||||
raw = path.read_bytes()
|
||||
artifacts.append({'path': str(path), 'bytes': len(raw), 'sha256': hashlib.sha256(raw).hexdigest()})
|
||||
record = {'source': source, 'head_after': head_after, 'start': started, 'end': ended,
|
||||
'exit': run.returncode, 'command': command, 'inputs': manifest.name,
|
||||
'changed_inputs': changed, 'artifacts': artifacts,
|
||||
'environment': {k: os.environ.get(k) for k in ['CARGO_TARGET_DIR', 'CARGO_BUILD_JOBS', 'CARGO_HOME', 'RUSTUP_HOME']},
|
||||
'listing_members': members, 'listing_count': len(members),
|
||||
'listing_scope': 'Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts.'}
|
||||
(out / (name + '.result.json')).write_text(json.dumps(record, indent=2) + '\n', encoding='utf-8', newline='\n')
|
||||
print(log[-14000:])
|
||||
print(json.dumps({k:v for k,v in record.items() if k != 'listing_members'}))
|
||||
sys.exit(run.returncode or int(bool(changed) or head_after != source))
|
||||
Reference in New Issue
Block a user