Inspector Apply/Revert: fixed actions and native verification
Candidate 14e7e6aa46f59346c7a9a478fc9498fd0b496aaf keeps Apply/Revert visible above the scrolling Properties form. In the recorded Windows trial, the parent operator edited lower Call payload fields and applied, rejected or reverted drafts without scrolling back to the top. Strict desktop Clippy, 18 selected existing tests and the candidate GUI build passed; eight exact saved-Project comparisons support the bounded native result.
The published source branch is codex/scenario-inspector-actions-ytr83r-20260922; the linked commit pins the tested version.
This is a one-file presentation change relative to b10b28cefd1d0794073ba241a0c8de9a83e85f68: only crates/oa-desktop/src/views.rs differs. Action messages and model handlers remain unchanged. The source review preserves an initial defect in superseded e2536f6: shifting the Properties Scrollable to a different child index recreated its state across Connections. The reviewed 14e7 follow-up groups tabs/actions in the header and keeps the Scrollable sibling at the same outer position in both tabs. That resolves the structural reset; exact internal scroll offsets and independent state per tab are not promised.
Current build and test evidence
The closed gate summary binds 15 successful commands and exact candidate inputs. Independent gate review includes its final closed-output addendum; the earlier mid-run paragraph is retained as history.
- Strict check:
cargo clippy -p oa-desktop --all-targets --locked --offline -- -D warnings. - Candidate test executable built once with Cargo's JSON artifact output, then its actual test list was checked. All 18 selected tests passed: six Scenario inspector-selection tests, six mounted Scenario Details tests and six property Apply/Revert/draft/history cases. selection.json records exact names and membership; the archived individual test output confirms the selected passes.
- Candidate desktop GUI built with
cargo build -p oa-desktop --bin arcadia-studio --locked --offline --message-format=json.
All 2,619 bound input files were rehashed during archive preparation; before/after input manifests match. All 18 Cargo configuration search slots retain their recorded presence/absence and hashes. The 651 raw dependency fingerprint JSON files are a cache snapshot, not proof that every cached dependency was rebuilt or tested. Registry/compiler caches were reused; their source contents are not independently certified immutable. No unchanged full server/core/desktop suite was rerun solely for this layout change, and no broader suite result is inferred.
The resulting GUI is 116,721,152 bytes, SHA-256 011396752205af88d812106693007aa3dd24f4fc949652fdf0d26d0a371ea04f. Packaged/test LLVM runtime is 190,464 bytes, SHA-256 aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a. Direct tests used the recorded LLVM/Windows-only child PATH and checked earlier DLL search locations; the distinct Rustup runtime was not substituted. Binary payloads are excluded from this evidence archive.
Native workflow and saved-state results
The parent observation record describes actual actions and asynchronous reobservation. The independent native review viewed all 17 current images and checked all eight comparisons, finding no concrete discrepancy in the bounded claims.
At 1442 × 932, the parent opened the exact new candidate working file, selected Saved “Service calls - Details trial”, and opened the first Call through Focus → Details → Properties. Lower Scope and Postcondition remained visible while Apply/Revert stayed above the scroller. The expression changed from quoted primary to quoted secondary; disk checkpoint 01 remained baseline before Apply. Fixed Apply accepted from that low scroll position, followed by Save, one model Undo/Save and one Redo/Save. Focus was on the Save button for history commands, according to the operator's action record.
| Immutable checkpoint | Observed action/state | Independent expected Project |
|---|---|---|
| 01 | Draft before Apply; disk still baseline | baseline |
| 02 | Apply from lower form, then Save | 1 |
| 03 | One model Undo, then Save | baseline |
| 04 | One model Redo, then Save | 1 |
| 05 | Lower-field discard draft, fixed Revert | 1 |
| 06 | SetLimit with incompatible retained Scope, fixed Apply rejected | 1 |
| 07 | Fixed Revert recovers ReadStatus/Scope/secondary | 1 |
| 08 | Final Save after smaller-window and focus checks | 1 |
The rejection diagnostic is the incompatible carried-field error; raw quoted secondary remains recoverable. This does not isolate Reply-only invalidity. Connections shows references without Properties actions; returning to Properties retains the visible lower Scope/Postcondition position. These are observed visual states, not internal offset-bit equality.
At 1102 × 732, the parent reached lower fields with the action row unobscured, entered a new draft and reverted it using the fixed row. No valid Apply transaction was performed at this size. Tab then visibly focused Name and scrolled it into view; a second Tab focused Alias, without entering characters. The short Project form and its action row were fully visible. This tests a long Call form and short Project form, not a relation form or action-button keyboard activation. The size-operation targeting warning and subsequent reobservation remain in the notes; it is not reported as successful input to another window.
All eight complete admitted saved-Project comparisons pass, preserving all other records, IDs, names/aliases, operation/reply/control pair, Steps and saved layout. All 80 receipt-listed artifacts and exact canonical actual/expected bytes were independently rechecked during archiving. Final source is 6,134 bytes, SHA-256 4cafcf18e45703b03b3c997080a0ed7fbbbee02d386062da3c6c00504e7be75e; baseline is 6,132 bytes, SHA-256 0e4325222a451b9d4e503974ce86bb95a9931edd0d2d65b8cd9db8d0f99d69e5.
The native GUI pin is 14e7, while the reused saved-Project evaluator pin is b10. Core tree, Cargo.lock and manifests are unchanged; only inspector composition differs. The frozen comparator is SHA-256 996803f938b7503db8508adf9b7fc2dd379852b5b603463edf6987dd1e5270a6, build receipt 5c700a6b63ce1060c0091d6370d6e07b824fd871adb6bf89fd8c4a155b1c1c18. Its independent expected catalog predates the native output. This reuse does not imply a candidate-built comparator or rerun of the old GUI. Source comparisons alone do not prove transient draft, focus or history-stack behavior; native observations provide the corresponding interaction evidence.
Process, archive integrity and reproduction
Run 1 PID 2632 started at 23:18:16.518500 UTC on 2026-09-22. The parent's close action records Alt+F4 at 23:41:36.738; the observer records exit 0 at 23:41:39.183549, empty stdout/stderr and unchanged immutable inputs. Launch, stage, plan, recipe, package and close hashes agree. Exit records alone do not establish close cause; the parent notes and close-action record supply it. This trial did not perform a fresh reopen.
archive-manifest.json inventories 863 originals, 8,285,235 bytes, plus generated archive metadata and the byte-exact independent native review. It includes the current recipes/gates, 651 raw fingerprint snapshots, native plan/baseline, every closed native run file and all comparison outputs. All original source/archive pairs were compared by bytes, length and SHA-256. All 17 JPEGs have distinct hashes matching metadata/signatures; independent review verified their actual dimensions. Original JSON—including 64-bit fingerprints—was copied raw, never rewritten. There are 48 intentional .log files requiring forced Git addition. Executables, DLL payloads, profile, mutable working source and duplicated old build archives are excluded.
Peers must retrieve the exact candidate source commit and published prerequisite history, then use machine-local paths. The gate recipe, native recipe and native plan describe new output directories, admitted toolchain/runtime, private staging and selected checks. Rebuild from the identified source; verify and record the resulting artifacts rather than assuming another machine's absolute paths or binary hashes. The native source must be saved to immutable checkpoints before running the pinned evaluator. Do not reuse another run's private profile or mutable files as independent reproduction. The candidate source is published at the linked commit. Any distributed runnable package must be published separately; this archive supplies evidence and recipes.
Pinned prerequisites:
- Frozen b10 comparator and build/admission evidence.
- Independent expected Project catalog.
- Prior service trial and original inspector friction.
The archive preparer performed read-only verification and copying; no compiler, comparator, test executable or GUI was rerun during packaging.
Remaining limits
The recorded improvement is narrower than full issue or release acceptance. Valid Apply/model Undo/Redo were exercised only at the larger size; Revert at both sizes; rejection and tab return at the larger size. No new relation form, dedicated busy/modal race, keyboard activation of action buttons, broad accessibility, fresh reopen, other platform or broad lifecycle result is claimed. Linux checks are user-paused. Distant footer errors, historical save text and truncated labels remain. This evidence does not complete issue 24 or the product goal.