State transition multiline label verification
Issue #36, Codex-ytr83r/root. Tested production/test source is 70bdcdf8fe, based on released 715036e132. Subsequent commits containing this evidence are documentation-only. The September 24 prerelease remains unchanged. Integration ownership and status belong to the issue.
Outcome and boundary
The original Ready\nfor review title no longer collides with its summary. Routing prepares a shared, measured hard-line plan used by canvas paint, hit boxes, previews, focus/Fit and SVG. Opaque State labels receive hits before covered node/row pixels, in reverse paint order; exposed action rows retain their identity. Authored geometry and all semantic/source data remain unchanged. See the contract for the retained excerpt budgets, separators, measurement and scope.
The bounded Windows implementation passed its focused core gates, full desktop suite, formatting, strict workspace/all-target Clippy, product builds, and maximized-window native B/W/U Save/reopen checks. A later isolated trial also passed Home Open and all three transition text-row hits at restored1442×932/displayed79%, preserving all nine source files and the entire Project. The earlier unsuccessful restored1442×842 attempt and Home-button discrepancy remain explicit in observations and independent native review; the later success does not establish their cause. No all-window input or universal Unicode rendering claim follows. This is a follow-up contribution, not a replacement release or complete application acceptance.
Automated checks
Windows x86_64-pc-windows-gnullvm, Rust1.98.1, locked/offline dependencies, one build job, no incremental compilation. All completed successful gates preserve identical source inventories before/after.
| Gate | Source | Result |
|---|---|---|
cargo test --locked --offline -p oa-core --test state_label_layout -- --test-threads=1 |
2af40c7e |
4 passed |
cargo test --locked --offline -p oa-core --test group_movement --test release_routing --test release_states --test routing_geometry --test routing_labels --test state_diagrams -- --test-threads=1 |
2af40c7e |
64 passed |
cargo test --locked --offline -p oa-desktop --bin arcadia-studio -- --test-threads=1 |
70bdcdf8 |
1540 passed, 0 failed, 7 unchanged existing manual/diagnostic ignores |
cargo fmt --all -- --check |
70bdcdf8 |
passed |
cargo clippy --locked --offline --workspace --all-targets -- -D warnings |
70bdcdf8 |
passed, no warnings |
cargo build -p oa-desktop --bin arcadia-studio --locked --offline --message-format=json-render-diagnostics |
70bdcdf8 |
passed |
cargo build -p oa-core --example attachment_snapshot --locked --offline --message-format=json-render-diagnostics |
70bdcdf8 |
passed |
Core production/tests did not change after2af40c7e. Desktop adds12 passing regressions, with no removed or changed baseline outcomes. They cover width-dominating text and Unicode measurements, raw-prefix typed-reference provenance, covered/exposed row and overlapping-label selection, Shift/mixed-group refusal, generic fallback canvas, preview cancellation, fixed(+40,+40) complete-Project group commit/one-step Undo/Redo, and SVG line positions/order. These are scoped checks; the full workspace test suite was not repeated for this follow-up.
Preserved failure: desktop gate03 at66278ed3 failed compilation with E0382 in a new test; no tests ran. Commit70bdcdf8 adds row.clone() in that test only. Its failed receipt remains failed; later success does not relabel it. The source review also preserves and closes the earlier generic-fallback hit-order finding at the source-review level.
Native trial
The exact original nine-file fixture comes from peerbed7f825fd00ec32299032a664a5f5d753aad86d, harness/experiments/state-multiselect-20260923/native/evidence.zip, SHA2561d08c1bc6af4856a569ddd320ddf5403a302b8d9437750663a498541e489d663.
B is original; W changes only the transition title to40 W characters; U changes only that title to CRLF/CJK/combining/ZWJ/trailing-newline text. Independent complete-Project oracles and exact source bytes are frozen before GUI input. At the actual maximized1605×872 window, displayed68% and82% scales show separated/contained lines. Inspector aliases establish label-versus-exposed-action selection. Native group movement M is unexecuted; the fixed movement/history regression supplies that separate evidence.
All six pure-layout checkpoints passed: initial Save and fresh-process reopen/Save for B/W/U. Each preserves the entire Project and all nine source files byte-for-byte. Two isolated-profile processes exited0 after parent-observed Alt+F4, with empty logs and immutable binaries/source inputs unchanged. The independent review checks original images, complete models, every source-file hash and both process logs. Recorded zoom percentages are rounded; no exact100% or DPI calibration is claimed.
Preserved GUI:119440896 bytes, SHA2560401341388025544185455ad5520aa2c1b79ca1387d1a57c2bb0bddb8b23754a. Runtime libunwind.dll SHA256aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a. The supplemental bundle reader was built from the same candidate/compiler and is separate from the Cargo product artifacts.
Reusable evidence
Supplemental restored-window trial, September 25
The supplemental observations record the same
preserved70bdcdf8 executable, rechecked before launch, with a fresh isolated copy
of B and a private recent-model profile. At1442×932/displayed79%, Home Open loaded
the fixture. First title, second title, and summary clicks each selected stable
transition alias between; the latter two followed independently observed
selection of state_b. Pure Save preserved all nine source files byte-for-byte
and the complete expected Project. Alt+F4 termination was observed and both GUI
logs were empty, but the watcher returned a null exit code; this is not exit0
evidence. The initial incorrect direct snapshot invocation rejected includes;
the established converter-then-snapshot verification subsequently passed.
That invocation error is preserved narratively; its original stderr was replaced
by the successful rerun's empty log. The independent supplemental review
checks all ten original images, archive members, source/model comparisons and
tool hashes, and retains this evidence limitation.
Supplemental ZIP:888553 bytes,
SHA256f120509338fb0ac55480ce11929381fb1a46fecf7d3a1c8869c395335f0eba0a.
Its45 evidence members plus manifest include original captures, source copies,
verification scripts/results and launch/close records. Executables/DLLs are
excluded. The integrity receipt records successful
CRC and every member length/hash checks. Historical builder paths require local
relocation. Earlier failures remain unexplained; this bounded success does not
replace the previous evidence or establish acceptance at other window sizes.
A subsequent bounded attempt to obtain the original1442×842 size was
unexecuted: supported UI resizing yielded932→921→732 heights and tool
target/bounds errors. The fixture was never opened or saved. Its unchanged
bytes/model establish copied-fixture integrity only. Exact observations and
errors preserve this outcome without diagnosing an
application defect. Attempt ZIP:661746 bytes,
SHA2563efb41d79a9dab70d7026ba83a7f9ec60a319fab79a8f0a383f3ce7a71b0f42f;
integrity receipt. The original height-specific
acceptance gap remains open.
Original trial and automated gates
- Native evidence ZIP:2886914 bytes, SHA256
039add524eb99ce855c2dc5680eec01c1d5b7f23024025c428125b9771a8e687. - Native archive receipt and member/relocation index preserve original paths and hashes; these paths describe the builder machine and are not peer-accessible dependencies. The ZIP carries original captures, metadata, source fixtures/oracles, checkpoint/process/helper receipts and hash-bound scripts, plus unchanged parent observations and review. Binary/cache payloads are excluded with their hashes retained.
- Automated evidence ZIP:6244436 bytes, SHA256
7706302ef7ee5d160a23ff2d562bedb8911b4e6d7ad4c941544088974b539b6e,113 verified members. Its index, integrity receipt, and scope note retain both successful and failed command records, frozen build environment, exact source inventories, compiler/dependency receipts and reproducible helper sources. Consult original per-command results rather than adding counts from different scopes.
Native archive member bytes and exact member set were read back after creation; all six independent model comparisons and source-snapshot checks passed, both process receipts were clean, and no bound input changed. The collector establishes archive integrity, not visual correctness by itself.
To reproduce on another Windows machine: check out70bdcdf8, use the project Windows build instructions, run the commands above, obtain the pinned peer fixture, and use the preserved trial/launcher recipes with newly generated local build/admission paths. Never reuse the builder's historical absolute paths or claim its binaries were rebuilt locally. Linux remains excluded by the user's current instruction. External SVG viewer font substitution, authored label occlusion of nodes, dynamic State row/header sizing, and broader State/Process congestion remain limitations outside this fix.