Files
ARCADIA-Studio/harness/release-semantic-conflict-diagnostics-20260906.md

9.0 KiB
Raw Permalink Blame History

Semantic conflict diagnostics — 2026-09-06

Current verification result

The final combined diagnostic and reserved-label implementation is now verified on Windows with one Cargo build job. These results supersede the earlier interrupted/unrun statuses below:

Check Result Evidence
cargo test --workspace --locked semantic_review 108 desktop tests passed, 419 filtered; also two matching core tests passed; desktop runtime 72.71 s .local/semantic-diagnostics-final-tests.log
Full desktop suite, using the exact workspace-compiled arcadia_studio-58e30cee1fd51a8b.exe test binary 527 passed, none failed/ignored/filtered; 107.30 s .local/desktop-diagnostics-final-tests.log
cargo clippy --workspace --all-targets --locked -- -D warnings Passed, 44.99 s .local/diagnostics-final-clippy.log
cargo build --workspace --bins --locked GUI/server build passed, 38.64 s .local/diagnostics-final-build.log

The new binaries were copied, not launched, into .local/native-qa/bin-source6-diagnostics. That directory contains exactly the GUI, server, and libunwind.dll. The running native process 2540 was untouched. SHA-256:

  • arcadia-studio.exe: 2D183AAA66445E002AB1FBADBC532FE99AF97B3C62937CB018901B4F9E84B147
  • arcadia-server.exe: 1F98F02DBC9FB2D9AFA3C42BB0CB4038BAAE81C85EF17365B5CB486669E749F8
  • libunwind.dll: F45604A12E8BCD839FD86F667C1BE1CC7C4F9DA2B3C69FF381AC708F0E1AE7D4

Hash evidence: .local/diagnostics-staged-sha256.txt. Native verification of the corrected labels remains root-owned and pending at this handoff. This is not a new full-workspace test pass: only the semantic filter and complete desktop suite ran, followed by workspace Clippy/build. Source files stayed frozen through the chain; deferred guide issues below are not included.

Finding and implementation history

Native artifact review exposed a misleading diagnostic: Keep Presence plus an Owner move in the same review was described as disagreement between independent rows. Its actual-slot selector also rendered an artificial missing side, and owner values appeared as raw JSON UUIDs.

The change preserves the originating reviewed facet alongside each proposal's actual mutation slot, for diagnostics only. Same-row conflicts now start “Decisions in this review disagree”; distinct rows retain “Independent row proposals disagree.” Messages identify both original facets, source/target/trace aliases, and named artifact owners. UUID-shaped URI/text values remain literal text. Actual slot equality, proposal comparison, candidate composition, and commands are unchanged. Synthetic metadata retirements retain their originating Presence decision.

Three focused tests passed under the Windows workspace feature graph:

. .local/toolchain/env.ps1
cargo test --workspace --locked diagnostic_tests

.local/semantic-conflict-diagnostics-tests.log: exit 0, three passed, 522 desktop tests filtered, 0.16 seconds test runtime. Tests cover the real State path for Keep Presence versus Owner Candidate, retained drafts and successful explicit repair; distinct traces with equal display names; and typed Owner versus UUID-shaped text/absent/optional-value rendering.

The subsequent cargo test --workspace --locked semantic_review was interrupted, not passed, at the root's host-memory guard while the Linux build was active. Compilation had finished; no assertion failure was observed before Ctrl+C. .local/semantic-conflict-diagnostics-regressions.log retains the partial run, exit 1. Free host memory recovered to 1,770,632 KiB after stopping, and no Windows Cargo/rustc/test process remained. Strict Clippy and GUI/server builds had not started. Resume broader checks only when root grants resources.

Native verification of the revised wording is pending; parent native evidence was obtained from the preceding binary.

Reserved artifact labels

A subsequent native creation review correctly labeled the fresh destination in its picker, but the facet header showed “Deleted reference” for the same reserved UUID. Facet titles and reference-pair displays used the accepted-project-only resolver and therefore lacked the row's reservation context.

The bounded presentation fix adds row-aware facet titles and identity choices, backed by the existing artifact seed name/alias. Facts list/detail, history captions, reference pairs/selected controls, and existing reference-choice label mapping use that resolver. Truly missing identities retain “Deleted reference”; an accepted artifact takes precedence over a retained reservation. No picker membership/filter policy, stored DTO, creation decision, or accepted model changes.

view_reserved_artifact_tests.rs exercises both directions through normal Reserve/Stage events and stored JSON restoration, then checks reserved headers/reference labels, exact snapshot retention, missing-identity fallback, accepted-record precedence, and unchanged accepted model. This new test is formatted but unrun, pending root's Windows Cargo resource grant. Native observations describe the previous binary; revised labels require later native verification.

Independent review found a residual diagnostic route: Take Presence plus Keep destination Owner for a reserved destination still passed through accepted-base-only identity/facet formatting. The conflict formatter now receives the immutable review State and resolves each originating proposal through its exact RowAddress. Accepted identities retain precedence; a row can use only its own reservations. This is display context only; slot keys and observation equality remain unchanged.

Added reserved_creation_conflict_uses_its_rows_seed_instead_of_a_deleted_reference to the diagnostic module. It authors that partial-creation conflict in both directions, repeats after exact recovery, requires seed name/alias rather than Missing/Deleted labels, verifies unknown-row lookup cannot borrow the active reservation, and checks the accepted model stays unchanged. This fourth diagnostic test and the latest formatter revision are unrun while Linux owns heavy build resources; the earlier three-test pass does not verify this later change.

Deferred minor guide wording

During the later frozen verification chain, root observed that First Project step 06 says “Save project,” while the current toolbar says “Save all.” Root judged the minimum-size guide layout usable and requested deferring this wording correction to preserve the running checks' source boundary. No guide source change was made in this diagnostic slice.

Root then found a navigation defect at 1100×700: open Scenarios through search, scroll its article to the bottom, and select related “Exchanges & dataflow.” The sidebar changes correctly, but the new article retains the old scroll offset, hiding its heading/introduction. The next guide slice should reset article scroll on a changed topic (including a search-selected topic), while preserving same-topic search behavior. This report records the observed reproduction; no guide source fix is included in the staged diagnostic binaries.

Subsequent guide fix and final staging

The separately authorized guide slice is now implemented: the article scrollable has the explicit engineering-guide-article identity; State reports whether its topic changed; the App event sends an article-only snap-to-start when it did. Explicit related-topic navigation and search auto-selection of another topic reset scroll. Same-topic search, an empty-result query, clearing that query, and reselecting the same topic do not schedule a scroll reset. First Project step 06 and the Ctrl+S reference now say “Save all.” Existing Fill/wrapping layout constraints remain.

cargo test --workspace --locked guide::tests passed all three tests, 525 desktop tests filtered, 0.06 s runtime (.local/guide-navigation-tests.log). The new test runs actual App messages and consumes the emitted Iced widget operation against article and unrelated-scroll probes; it checks exact start offsets and accepted model/source/revision/Undo invariance. Strict workspace all-target Clippy passed in 13.11 s; workspace GUI/server build passed in 14.72 s (.local/guide-navigation-clippy.log, .local/guide-navigation-build.log). This localized follow-up did not repeat the full 527-test desktop run above; the new test brings compiled desktop inventory to 528.

Final guide-stage directory .local/native-qa/bin-source6-guide contains exactly:

  • GUI SHA-256 A5A741349B49D0C90A6BDB0FA7871415133CBCC1B8A4ECF0C4EDDDB99313F2D2
  • Server SHA-256 1F98F02DBC9FB2D9AFA3C42BB0CB4038BAAE81C85EF17365B5CB486669E749F8
  • libunwind.dll SHA-256 F45604A12E8BCD839FD86F667C1BE1CC7C4F9DA2B3C69FF381AC708F0E1AE7D4

.local/guide-staged-sha256.txt preserves hashes. Binaries were staged, not launched; the running native app was untouched. Root still needs native verification of the fixed Scenarios→Exchanges related-link scroll and same-topic search behavior, plus diagnostic/reservation wording using this latest binary. Windows Cargo lease was released after staging.