72 lines
9.0 KiB
Markdown
72 lines
9.0 KiB
Markdown
# 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:
|
||
|
||
```powershell
|
||
. .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.
|