Files

11 KiB

Rename Details scroll: prepared gates, no execution

Candidate bebf9f594c, worktree .local/rs, branch codex/rename-details-scroll-956atf-20260913. This includes the source-reviewed022 fix and the reviewed follow-up that handles validated display reports before shared source/camera/allocation boundaries. Parent357 is 357da24542eaa519c2a01c465be6c7d1acbc8126 (440 production plus AGENTS). Parent owns the compiler lease, integration and native acceptance. All commands below are prepared, UNRUN. AST parsing and source/hash inspection are not executable gate evidence.

There are still581 gate inputs and615 build inputs, with three desktop files changed from357: app.rs, app/source_rename.rs, and app/source_rename/preview_scroll_tests.rs. Expected listing1099 is the actual440 listing1098 plus exactly one named mounted regression. Preview5, rename-test37, navigation-union17 and source-navigation51 are exact retained names in expected.json. Full expectation is1096 passed, zero failed, three preexisting named timing/scale ignores. No ignore may be added to make this pass.

All originals under .local/navigation-palette-gates-20260913 and their original helpers/configs remain unchanged. Fresh output is .local/rename-scroll-gates-20260913, absent at preparation. Runner/admitter/build scripts reject optimized Python before any evidence writes. Use fresh run names after any failed attempt; exclusive receipt writes prevent overwriting history.

Environment and lease

Run from the repository root only after the parent grants the serialized compiler lease and accepts this source/preparation review. The following names are task-local PowerShell variables. No toolchain version override or Cargo dependency update is requested.

$scrollRepo = 'C:/Users/User/Documents/Git/ARCADIA-Studio'
$scrollPython = 'C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe'
$scrollPrep = "$scrollRepo/.local/rename-scroll-gate-preparation-20260913"
$scrollSource = 'bebf9f594c6722200e95e92be2734acbea0dd700'
$env:CARGO_HOME = "$scrollRepo/.local/toolchain/cargo"
$env:RUSTUP_HOME = "$scrollRepo/.local/toolchain/rustup"
$env:CARGO_BUILD_JOBS = '1'
$env:CARGO_TARGET_X86_64_PC_WINDOWS_GNULLVM_LINKER = 'clang.exe'
$env:PATH = "$env:CARGO_HOME/bin;$scrollRepo/.local/toolchain/llvm-mingw-20260908-ucrt-x86_64/bin;$env:PATH"
$env:CARGO_TARGET_DIR = "$scrollRepo/target"
if ($env:PYTHONOPTIMIZE) { throw 'Use unoptimized Python for this gate.' }
Set-Location -LiteralPath $scrollRepo
function Invoke-ScrollPython {
    & $scrollPython -B @args
    if ($LASTEXITCODE -ne 0) { throw "Scroll gate stopped with exit $LASTEXITCODE" }
}

Revision2: parent explicitly authorized reuse of the existing root target cache for fixed gates after all root compiler gates closed; its native GUI runs from an immutable separate stage. Do not create a second target on this disk. Use the existing root target only under this serialized lease; every run checks its committed inputs and hashes the actual emitted executable. Complete/admit each result immediately before another compile can replace that test executable. Root target outputs are mutable under this authorization; preserve original440 receipts and already preserved GUI/server artifacts. No global environment/config mutation is needed. The GUI builder checks the actual Rust host and tools against the existing Windows gnullvm setup and preserves its own Cargo-reported PE artifact.

Before-fix proof on real357 production

The portable overlay adds only measured bounds, a real WheelScrolled helper and one mounted test to357's existing test file. It contains no PreviewScrolled event or preview_offset field reference; it accepts whichever messages/tasks the original controller returns. It asserts that wheel input moves the preview, actually mounts Details so the preview subtree disappears, returns, then measures the visible offset before any second scroll. Thus the predicted failure is behavioral, not a missing API or a source mutation that disables only the fix. This portable test is distinct from the stronger committed fixed test (which additionally checks callback ownership and stale-report boundaries).

The following worktree and test-only local commit do not exist yet. If .local/rr or the branch already exists, stop and inspect ownership rather than reuse or delete it.

if (Test-Path -LiteralPath "$scrollRepo/.local/rr") { throw 'Red worktree already exists; inspect before reuse.' }
git -c core.longpaths=true worktree add -b codex/rename-scroll-red-proof-956atf-20260913 .local/rr 357da24542eaa519c2a01c465be6c7d1acbc8126
if ($LASTEXITCODE -ne 0) { throw 'Red worktree creation failed' }
Copy-Item -LiteralPath "$scrollPrep/red-preview_scroll_tests.rs" -Destination "$scrollRepo/.local/rr/crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs"
git -C .local/rr diff --check
if ($LASTEXITCODE -ne 0) { throw 'Overlay whitespace check failed' }
git -C .local/rr add crates/oa-desktop/src/app/source_rename/preview_scroll_tests.rs
if ($LASTEXITCODE -ne 0) { throw 'Overlay staging failed' }
git -C .local/rr commit -m 'Test-only proof of rename Details scroll loss on357'
if ($LASTEXITCODE -ne 0) { throw 'Overlay commit failed' }
$scrollRedSource = (git -C .local/rr rev-parse HEAD).Trim()
if ($LASTEXITCODE -ne 0) { throw 'Cannot freeze red source' }
& $scrollPython -B "$scrollPrep/run-red.py" $scrollRedSource red357-details focused app::source_rename::tests::preview_scroll_tests::details_remount_preserves_visible_offset_without_controller_assumptions
$scrollRedExit = $LASTEXITCODE
if ($scrollRedExit -ne 101) { throw "Expected test failure101; inspect actual result ($scrollRedExit) before proceeding" }

Exit101 alone does not establish reproduction. Inspect the closed .result.json and .log: unchanged581 committed inputs, exact test-only child of357 and pinned overlay, one actual executable, exact requested --exact command, one test actually run/FAILED (zero passed/ignored;1098 filtered), and the panic must be Details remount must preserve visible offset with returned zero versus previously measured nonzero. Compile errors, no tests, wheel fixture failure, unrelated panics, timeout or missing result are failed evaluations. Record the actual overlay commit, all receipt hashes and this diagnostic; do not publish an expected failure as a passing product test. Keep the red checkout/evidence for review. No red failure has been observed yet.

Fixed executable gates

Parent accepted bebf source review and independently confirmed actual440 native failure as sufficient before-fix evidence. Skip the portable red build in this run to avoid rebuilding357 on the space-constrained disk; its overlay and commands remain prepared and UNRUN. Start the fixed gates directly. The fixed runner refuses another source. The admission helper verifies committed source bytes, no additional scoped inputs,581 exact membership, launcher/config/baseline pins, actual executable hash, exact command and individual outcome names. Focused/full execution must match the admitted listing executable and input manifest. It does not infer passing tests from listing counts.

Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource list-bebf9f5 list
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" list-bebf9f5 list
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource preview-bebf9f5 focused preview_scroll_tests
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" preview-bebf9f5 focused list-bebf9f5 preview_scroll_tests
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource rename-bebf9f5 focused app::source_rename::tests::
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" rename-bebf9f5 focused list-bebf9f5 app::source_rename::tests::
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource navigation-bebf9f5 focused navigation_union
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" navigation-bebf9f5 focused list-bebf9f5 navigation_union
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource source-navigation-bebf9f5 focused source_navigation::
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" source-navigation-bebf9f5 focused list-bebf9f5 source_navigation::
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource full-bebf9f5 full
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" full-bebf9f5 full list-bebf9f5
Invoke-ScrollPython "$scrollPrep/run-fixed.py" $scrollSource strict-bebf9f5 clippy
Invoke-ScrollPython "$scrollPrep/admit-fixed.py" strict-bebf9f5 clippy
Invoke-ScrollPython "$scrollPrep/build-gui.py" $scrollSource gui-bebf9f5

Rename37 includes preview5 and the source-rename envelope/navigation cases. Navigation17 adds the allocation/removal cross-module stale-envelope cases. Source-navigation51 includes departure-selection helpers. Overlap is intentional: preview5 gives the first decisive check; broader gates cover the new App dispatch path. Full1099 is warranted once because this change adds an App-level event/early return; it also executes the preserved final16 Find/departure-selection cases and other modal owners. Do not rerun full repeatedly after these receipts pass unless a new change/failure/risk requires it. Strict covers desktop all targets with -D warnings. The GUI build is only oa-desktop --bin arcadia-studio, preserving one Windows x64 artifact under its fresh receipt directory. Its result is not an unchanged dual-artifact440 build receipt.

Evidence reuse and remaining native/package work

The candidate changes only the three named desktop inputs, with all other581-scope and615-scope membership retained. Core/server production, Cargo manifests/lock/config/toolchain, assets and scripts must be compared as exact committed blob sets with440 before reusing those scoped results; record that equality with the original440 receipt hashes. Existing broad581/615 manifests themselves differ, so do not claim their whole input sets are equal or relabel a440 core/server build as built at bebf. An unchanged core/server test/build artifact remains evidence at its original source and scope. Parent owns any composite package manifest with a new GUI and unchanged verified server and must separately bind artifact bytes and packaging configuration; no existing native/package config has been edited here.

Native acceptance remains necessary on the preserved matching GUI: reproduce the same six-token assess_report_union_trial preview, measure/observe nonzero scrolling, Full details then Preview pane, require the same visible offset before new input and unchanged file/hunk/page and replacement. Check explicit page/filter/new-approval reset, stale queued report/reset behavior where practical, Cancel and unchanged completeProject/exactSourceBundle. Reuse prior valid saved rename/Undo/Redo/reopen and Find/selection/navigation evidence only within its documented scope; the new actual native return behavior is not established by that440 evidence. No GUI was launched and no evaluator/server/broker was invoked by this preparation.