219 lines
14 KiB
Markdown
219 lines
14 KiB
Markdown
# Ordinary saved-view multiple selection — verification report
|
||
|
||
**Verified branch contribution, not full issue acceptance.** This report covers the ordinary saved-view
|
||
subset of [issue 29](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/29).
|
||
Final source is `f6a6010baed9e6164a1fcc7ecd58256a562827d7` on
|
||
`codex/multiselect-9e8r6t-20260923`, based on the published State/attachment
|
||
checkpoint `b8685416f56e53e30bd11ecf93a54cea10ac8458`. The final Windows desktop
|
||
suite, strict lint, formatting, build and corrected-layout native run passed.
|
||
Integration with the release owner's later union remains separate work.
|
||
|
||
## Evaluated source and scope
|
||
|
||
Native run-1 used commit `12a7352ddef5f69a144ead8219a50916233d63a9` and the
|
||
729-file input map
|
||
`55a5f354bb5049a8c77ba9bafa833438ebf754649b0cf5d175d0c8dcfcedd7bb`.
|
||
Core-3, desktop-4, lint-2, format-1 and both native/checker builds share that
|
||
exact input map. Earlier test receipts record HEAD
|
||
`b8685416f56e53e30bd11ecf93a54cea10ac8458` because the feature was still
|
||
uncommitted; the captured source map, rather than HEAD alone, identifies their
|
||
tested contents.
|
||
|
||
The corrected layout verification uses a distinct 729-file input map,
|
||
`99dc46645236e674244e7c4867595a6000d3d85b54bcc9ab2b0c601923ecf66c`,
|
||
captured by desktop-5 at HEAD `12a7352ddef5f69a144ead8219a50916233d63a9`.
|
||
An exact Git-blob comparison subsequently confirmed the complete captured input
|
||
inventory equals commit `f6a6010baed9e6164a1fcc7ecd58256a562827d7`.
|
||
Results for the earlier map do not establish the changed layout's behavior.
|
||
Desktop-5, lint-3, format-2, native-build-2 and windows-build-2 all use the
|
||
corrected map. Native run-2 operated that Windows build; its 117,519,360-byte
|
||
executable has SHA-256
|
||
`49396ee5c24f749cbee54e1fd77e15f5d73b0e19cf246724216ce7464d3deba5`.
|
||
|
||
The implemented subset provides exact transient saved-view selection with a
|
||
primary Inspector target, Shift toggling and contextual Add/Remove, deferred
|
||
stationary-click versus group-drag behavior, simultaneous placement movement,
|
||
and group Hide that preserves model objects. The complete typed selection is
|
||
admitted or refused; ports/edges are not silently filtered from a group action.
|
||
Captured operations reject stale document, revision, surface and selection
|
||
generation. Ordinary property edits remain primary-only. Movement uses one
|
||
atomic transaction and the same pure plan for preview and commit.
|
||
|
||
Required behavior and remaining adapter families are defined by the
|
||
[contract](multiselect-contract-20260923.md). Design and detailed review evidence
|
||
remain in the [core review](multiselect-core-review-20260923.md),
|
||
[desktop review](multiselect-desktop-review-20260923.md),
|
||
[fresh review](multiselect-fresh-review-20260923.md), and
|
||
[native evaluator/layout review](multiselect-native-review-20260923.md).
|
||
|
||
## Closed gates
|
||
|
||
The closed receipts below report unchanged captured inputs and successful exit.
|
||
Windows used `stable-x86_64-pc-windows-gnullvm`, Cargo 1.98.1 and rustc 1.98.1,
|
||
locked/offline dependencies, and the supported headless desktop renderer.
|
||
|
||
| Gate | Command/result |
|
||
| --- | --- |
|
||
| core-3 | `cargo test --locked --offline -p oa-core --test group_movement --test state_diagrams --example multiselect_native -- --nocapture`: 7 movement + 13 existing State + 10 evaluator tests passed; zero failures. State test passage does not accept a State group UI adapter. |
|
||
| desktop-4 | `cargo test --locked --offline -p oa-desktop -- --nocapture`: 1,256 passed, zero failed, six ignored. Includes mounted focus, passive modifiers across I/O, selection/history and pointer-lifecycle regressions. |
|
||
| desktop-5 | Same desktop command, corrected layout: 1,257 passed, zero failed, six existing ignored. The added mounted regression preserves canvas bounds, fitted camera, complete Project, source and empty history across empty/single/group/mixed selection. |
|
||
| lint-2 | `cargo clippy --locked --offline -p oa-core -p oa-desktop --all-targets -- -D warnings`: passed. |
|
||
| lint-3 / format-2 | Strict all-target Clippy for core/desktop and `cargo fmt --all -- --check` passed on the corrected layout input map. |
|
||
| format-1 | `cargo fmt --all -- --check`: passed. |
|
||
| native-build-1 / windows-build-1 | Locked/offline checker example and Windows desktop executable builds passed, with matching input maps and recorded executable hashes. |
|
||
| native-build-2 / windows-build-2 | Both builds passed from final source `f6a6010`, with matching corrected-layout inputs and executable pins. |
|
||
|
||
Failures were retained and corrected, not counted as passing evidence:
|
||
desktop-1 exposed module visibility/menu-token compile errors; desktop-2
|
||
reported one Placement-properties selection regression (1,247 passed, one
|
||
failed, six ignored), corrected by recognizing the selected placement identity;
|
||
core-2 exposed the evaluator incorrectly rejecting ordinary fixture warnings;
|
||
oracle-2 then exposed an unqualified Severity type; lint-1 rejected an
|
||
unnecessary clone. Later closed gates above cover the corrected source.
|
||
Desktop-3's earlier 1,254/0/6 pass preceded the two passive-modifier suspension
|
||
regressions included in desktop-4. Full historical commands, inputs and logs
|
||
belong in the checks package, not this summary.
|
||
|
||
## Native behavior and saved-state evidence
|
||
|
||
The owning session operated each pinned Windows app through contextual Add for
|
||
A/B, one group drag, Save, movement Undo/Redo with Save, return to baseline,
|
||
group Hide, Hide Undo/Redo with Save, and reopening the hidden saved source.
|
||
These are actual Computer Use observations, not inputs independently replayed
|
||
by the evidence verifier. Run-1 retains 27 numbered native captures and run-2
|
||
retains 24. Each run has nine saved-source snapshots with evaluator receipts,
|
||
process/start/finish records and `history-bytes.json`.
|
||
|
||
Run-1 records PID 7540 / window 131836; run-2 records PID 5312 / window 20055002.
|
||
Each capture names the corresponding pinned executable path and consistent
|
||
window identity. Both closing receipts report exit zero, unchanged GUI/checker
|
||
binaries and fixture, and empty stdout/stderr. These are joined historical
|
||
records, not independent OS authentication of every captured input.
|
||
|
||
The independent checker compares the complete Project against explicit fixture
|
||
expectations and validates JSON/source roundtrips. All nine final snapshots
|
||
in each run (18 total) report PASS with stable source, baseline and checker pins:
|
||
|
||
| Saved state | Verified relationship |
|
||
| --- | --- |
|
||
| `baseline`, `move-undo`, `before-hide`, `hide-undo` | Equal to the complete baseline Project; all nine source files byte-identical to the fixture baseline. |
|
||
| `move`, `move-redo` | A, B and A's unselected child share delta `(100, 60)`; internal route pins translate once. C, one-ended pins, attachments, labels, semantic records, traces and other views remain exact. The two source inventories are byte-identical. |
|
||
| `hidden`, `hide-redo`, `reopened-hidden` | Only A/B placements are removed. The child placement, stored routes, model objects and other views remain exact. These three source inventories are byte-identical. |
|
||
|
||
Across both changed states, the only changed source file is
|
||
`views/diagram_oa_view.arcadia`; the other eight source files remain unchanged.
|
||
This supports precise saved-state restoration across the observed
|
||
one-step history sequence. Equality alone does not authenticate Undo button
|
||
presses or establish history behavior without those observations.
|
||
|
||
The fixture is deliberately incomplete engineering content. The parent observed
|
||
11 warnings: `missing_system` ×1, `unallocated_leaf` ×4,
|
||
`work_without_behavior_context` ×4, `exchange_without_behavior_context` ×1,
|
||
and `non_leaf_work_exchange` ×1. The native status shows 11 model checks; these
|
||
are not presented as new application defects or zero-warning acceptance.
|
||
The evaluator permits completeness warnings but rejects source errors and
|
||
compilation failures.
|
||
|
||
Run-1 also exposed a real layout issue: forming a group inserted a conditional
|
||
toolbar block, resized the canvas and shifted nodes without a geometry edit.
|
||
Independent inspection of captures 06 and 08 confirms the shift. The subsequent
|
||
correction reserves a fixed selection/status strip, adds a visible
|
||
Shift-click hint and includes a mounted bounds/camera regression. Run-1's pinned
|
||
binary is unchanged and cannot verify that correction. Desktop-5 passed, and
|
||
run-2 then confirmed the corrected behavior: captures 03/05/07 retain the same
|
||
canvas top (about y=341), 84% zoom, and node positions across empty/single/group
|
||
selection. The count, Hide/Clear controls, primary-only disclosure and Shift
|
||
hint are readable at the observed 1442×932 window size.
|
||
|
||
Run-2's drag was from `(405,533)` to `(489,583)` in window coordinates, an
|
||
84-pixel right / 50-pixel down movement at the displayed 84% zoom. The observed
|
||
geometry moves accordingly; the independent saved-model oracle finds the
|
||
grid-aligned common world delta `(100,60)`. One Ctrl+Z restores baseline, and one
|
||
Ctrl+Y restores the moved state. Save and complete-Project checks follow each.
|
||
Hide at `(377,287)` removes A/B placements while leaving the child and C at their
|
||
previous screen positions; Undo restores A/B without the former clipping or
|
||
viewport shift. Zoom remains 84% throughout those edits. Reopening the hidden
|
||
source performs the normal fresh fit (88%); camera is transient, and the saved
|
||
Project/source remain exact. Capture labels identify each stage.
|
||
|
||
The initial run-2 baseline checker invocation omitted the shell's GNU toolchain
|
||
runtime setup and exited `3221225781` with empty streams. The same checker and
|
||
byte-identical source passed after environment setup. The failed snapshot,
|
||
retry receipts and exact helpers are retained in the separate
|
||
[incident record](experiments/multiselect-20260923/incidents/README.md); it is not
|
||
counted as a successful checker attempt or an application crash.
|
||
|
||
## Reproduce and inspect
|
||
|
||
Use the repository's [Windows build/packaging guidance](../docs/windows-packaging.md)
|
||
and a configured Rust/GNU runtime environment. Captured runs used Rust/Cargo
|
||
1.98.1, LLVM-MinGW 20260826, one Cargo job and `CARGO_INCREMENTAL=0`.
|
||
`--offline` requires the dependency cache to be present. From the source checkout:
|
||
|
||
```text
|
||
cargo test --locked --offline -p oa-core --test group_movement --test state_diagrams --example multiselect_native -- --nocapture
|
||
cargo test --locked --offline -p oa-desktop -- --nocapture
|
||
cargo clippy --locked --offline -p oa-core -p oa-desktop --all-targets -- -D warnings
|
||
cargo fmt --all -- --check
|
||
cargo build --locked --offline -p oa-desktop --bin arcadia-studio
|
||
cargo build --locked --offline -p oa-core --example multiselect_native
|
||
```
|
||
|
||
Run the resulting desktop executable with the GNU runtime directory on PATH.
|
||
The built `multiselect_native` example accepts `generate NEW_DIRECTORY`; keep
|
||
the generated fixture unchanged, copy its `source` directory to a fresh working
|
||
directory, and open that copy's `project.arcadia` in the app. After saving each
|
||
observed operation, evaluate with:
|
||
|
||
```text
|
||
multiselect_native check unchanged FIXTURE/baseline.json WORKING/project.arcadia
|
||
multiselect_native check moved FIXTURE/baseline.json WORKING/project.arcadia
|
||
multiselect_native check hide FIXTURE/baseline.json WORKING/project.arcadia
|
||
```
|
||
|
||
Use the mode matching the table above. Preserve separate saved source copies
|
||
for the nine named stages and compare their exact inventories/bytes in the
|
||
three stated equality groups. Commands cannot substitute for the actual native
|
||
selection, movement, history and reopen actions.
|
||
|
||
Portable verification from a repository containing the named source commits:
|
||
|
||
```text
|
||
python -B harness/experiments/multiselect-20260923/checks/verify.py
|
||
python -B harness/experiments/multiselect-20260923/native/verify.py
|
||
python -B harness/experiments/multiselect-20260923/source/verify.py --repo . --checks harness/experiments/multiselect-20260923/checks
|
||
```
|
||
|
||
The packages retain original logs, inputs, captures, fixtures and snapshot
|
||
receipts. The source verifier freshly compares all captured Git blobs and the
|
||
complete filtered inventory at both named commits. These offline checks do not
|
||
execute archived code or rerun the GUI; consult their READMEs for precise limits.
|
||
|
||
## Acceptance limits and delivery
|
||
|
||
- Both native runs exercise OA Activities in an ordinary Overview, not a native SA
|
||
Function workflow. Native selection used contextual Add because the chosen
|
||
tool cannot inject held-Shift plus click; mounted tests provide separate
|
||
Shift-before-focus evidence. The App-level multiselect tests separately use
|
||
SA Functions, a nested Function and a FunctionalExchange in a Functional
|
||
Dataflow view; that automated coverage is not a native SA interaction claim.
|
||
- The checker infers a bounded common delta from saved A. It verifies group
|
||
invariants, not the exact intended pointer destination or drag magnitude.
|
||
Native action observations, model equality, byte equality and mounted tests
|
||
are distinct evidence and are not interchangeable.
|
||
- State, Allocation, derived Process/Scenario group adapters and aggregate
|
||
model deletion remain incomplete. This report does not close the full issue,
|
||
accept those families, claim Linux verification, or represent an integrated
|
||
release. The native runs do not cover every mixed-target, cancellation or
|
||
suspension scenario exercised by automated tests.
|
||
- Native layout review covers 1442×932, not every minimum-window, DPI or keyboard
|
||
accessibility condition. No broad usability acceptance is inferred from this
|
||
bounded fixture.
|
||
- Portable evidence is supplied under
|
||
[checks](experiments/multiselect-20260923/checks/README.md) and
|
||
[native](experiments/multiselect-20260923/native/README.md), with separate
|
||
[source identity](experiments/multiselect-20260923/source/README.md) and incident
|
||
records. The checks package retains 19 closed runs, including five nonzero
|
||
historical gates. Raw absolute paths in the receipts are historical labels;
|
||
the versioned packages make the evidence consumable on other machines.
|