Skip to content

test(sidebar): preserve stale ProjectPanel RAF proof refs #3107 - #3109

Closed
mblua wants to merge 2 commits into
mainfrom
test/3107-projectpanel-stale-raf
Closed

mblua wants to merge 2 commits into
mainfrom
test/3107-projectpanel-stale-raf

Conversation

@mblua

@mblua mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner

The stale same-session reclamp test assumes the global RAF queue contains exactly one callback. A concurrent halo tick makes that precondition fail before the test exercises the reopened menu (PR #3102, both preserved CI failures). The same failure already occurred in P02; this does not establish the dynamic owner of the tick or exclude indirect timing effects from P03.

Capture the finite frame queued while menu A is open and execute that batch only after reopening menu B for the same session. Keep every existing position, identity, labels and listener assertion. This changes one existing test, with no product or harness changes and no added or removed test cases.

Validation on head 86d6ec2 (Windows, Node22.23.3/npm11.6.2; no worker override):

  • Existing stale and positive reclamp cases: 2 passed.
  • Negative control: temporarily removed only the product epoch comparison, preserving kind/session guards. The stale case failed at line2086 because B moved from210px to8px, proving the regression assertion remains effective. Negative output retained; no retry.
  • Product file restored byte-for-byte before the complete test file:108 passed. Case count unchanged (61 declarations/108 expanded cases).
  • Independent Rust Grinch and architecture Grinch reviews: PASS for the exact base103ecbdf..head86d6ec24. No blocking findings; test-only and nonvisual.
  • Latest target fetch: origin/main103ecbdf matches the candidate base; no incoming delta.

Full Linux frontend CI is requested with ci:full using the existing workflow, concurrency and reporters. Local proof does not substitute for that gate. No merge until required checks pass and the plan's separate merge authorization is obtained. Room24's branch and New Team implementation remain outside this PR.

Precedent: issue #3069 / PR #3076 adapted the neighboring positive case to a finite frame batch. Original test: #1673 / #1684. Historical red CI retained: https://github.com/mblua/AgentsCommander/actions/runs/39089324848 (attempts1 and2); prior P02 occurrence: https://github.com/mblua/AgentsCommander/actions/runs/39076334013.

Plan/evidence: .ac/plans/3107-projectpanel-raf/plan-v7-projectpanel-raf.md v7/r1 SHA256c3f9373f94ed48cd0f0d96ce52d6491c842be334ba0aecb1fe30e8c1dc811e8d; consensus-v7-r1.md and execution-gate-v7-r1-20261018.md. Local immutable proof and reviews in room22 room-shared/pr3102-projectpanel-raf: ui-execution-results-v1.json, ui-implementation-report-v1.md, review-3107-rust-grinch-v1.md, grinch-architect-review-3107-v1.md.

Closes #3107

@mblua mblua added the ci:full Run the full PR regression gates on this PR label Oct 18, 2026
@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Step9.5 triage after the notification that this branch is3commits behind main:

Feature head remains86d6ec2469d9b335a04e8cbe3ab6b97cf82054ab, active checkout clean and equal to PR head. New main b127c4e adds b6c54fd, f5f59e7 and merge b127c4e over base103ecbdfed5c6a3b2c6a8d54f441fb127e3ff6bf.

Independent Rust Grinch verdict: UNRELATED to this test-only change and its proof. Incoming paths:

  • src-tauri/src/cli/coding_agent.rs (test assertions)
  • src-tauri/src/commands/config.rs (test assertions)
  • src-tauri/src/config/coding_agent_mutations.rs (test assertions)
  • src-tauri/src/config/settings.rs (populate existing optional id_hash_debug metadata and associated assertions)

No changes in src/, package.json/lock, Vitest config, .github/workflows, Cargo.toml/lock or tauri.conf.json. The stale test supplies SettingsAPI.get via its own FakeTransport get_settings fixture at test.tsx:2038; Vitest does not execute the Rust backend. No frontend id_hash_debug consumer exists. Incoming paths do not overlap this PR, its frontend imports/dependents or build configuration. Thus the local positive, discriminating negative and restored full-file evidence remains valid.

Decision under the unrelated-delta delivery rule: keep the same feature head, no branch update and no extra CI invocation solely for this main advance. All required/applicable checks on that head must still pass; no red is waived. Record the actual checkout/merge-ref used by CI when the native completion notice arrives. This triage does not claim main contains the fix, whole-product safety or completion of CI. Merge still requires the plan's separate authorization.

Planv7/r1 unchanged. Independent report: room22 room-shared/pr3102-projectpanel-raf/delta-main-b127c4ed-rust-grinch-v1.md.

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

CI completed for head86d6ec2469d9b335a04e8cbe3ab6b97cf82054ab: run39136973081 attempt1 is FAILURE. Merge remains blocked; no rerun or waiver performed.

  • Linux frontend-regression job117703374379: SUCCESS,272files/4132tests passed, including the corrected test file. Ubuntu24.04 image20261012.334.1, Node22.23.3/npm11.6.2, existing concurrency/reporters.
  • Windows rust-regression job117703352109: FAILURE,6402passed/1failed/26ignored. agent_update::tests::agent_install_2736_in_flight_entry_is_released_on_every_outcome at src-tauri/src/agent_update.rs:9281: echo released-ok-2736 payload ok=false, expectedtrue. The500ms deadline in that test does not establish the cause of this assertion failure.
  • Other15jobs in the completed full run succeeded. Initial opened-event regressionrun39136973045 cancelled; preserved, not counted as green.

Both jobs checked out e2e412f. GitHub commit parents verified: originalbase103ecbdfed5c6a3b2c6a8d54f441fb127e3ff6bf + candidate86d6ec24. Latermainb127c4ed is excluded and its unrelated-delta triage is recorded separately above.

This PR changes only the existing ProjectPanel test, with no Rust/workflow/config edits. No direct causal route to the new failure has been identified; recurrence and cause are unknown. No claim of preexistence or whole-product innocence. The frontend proof and the required Rust blocker remain separate. No additional repair is included in issue3107.

Raw logs preserved in room22 room-shared/pr3102-projectpanel-raf/ci-{rust-job117703352109,frontend-job117703374379}-v1.log; hashes and complete decision in plans/3107-projectpanel-raf/ci-result-run39136973081-v1.md. Automatic retries are excluded by the approved plan. A single unchanged-job recurrence is proposed separately for explicit authorization, not executed.

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

The single user-authorized Rust-job recurrence passed. Run39136973081 attempt2 is SUCCESS for unchanged head86d6ec2469d9b335a04e8cbe3ab6b97cf82054ab.

  • Actual rerun rust-regression job117718949330: SUCCESS; previously failing agent_install_2736_in_flight_entry_is_released_on_every_outcome passed, main suite6403passed/0failed/26ignored. Same checkoute2e412f3f20a478442bb9689afc5274f2dc6069d and Windows runner image20261007.264.1. Source/config unchanged. Actual host load equivalence is not claimed.
  • First result remains preserved: attempt1/job117703352109 failed6402/1/26. Failure did not reproduce in this authorized recurrence; cause remains UNKNOWN. No repair or further diagnosis is included in this issue.
  • All current required and applicable checks are SUCCESS, verified individually against active ruleset15279066. All16 effective workflow jobs success. Historical canceled opened-event run remains recorded.
  • Only Rust was executed again: GitHub's reused jobs have new IDs but original14:39 timestamps. Frontend job117718950723 retains the original272files/4132PASS result, not another suite execution.

Executed synthetic merge remains originalbase103ecbdf + head86d6ec24. Latest main is stillb127c4ed; independent unrelated-delta triage above remains valid. Local proof (2focalPASS, discriminating negative, byte-restored guard,108full-filePASS) and both independent reviews cover this same unchanged head. One existing test changed3+/3-, no case-count reduction or product changes.

Technical acceptance is complete. Merge is awaiting the explicit separate authorization required by approved planv7/r1 step7; no merge yet. Raw attempt1/2 logs and their hashes, current statuses, checkout and reuse evidence preserved in room22 room-shared/pr3102-projectpanel-raf and plans/3107-projectpanel-raf/ci-acceptance-attempt2-v1.md.

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

User explicitly approved merging PR3109. The immediate premerge fetch found main advanced to8118af2761599dcabddbce4195edd9961181b576 via PR3112: shared types and transport-test inputs changed, so the old CI could not certify that combined frontend tree.

Performed normal integration on the existing feature branch, without conflicts. New published head23348634913386cc2aaf2efe87d22354d3d5ecdd has parents oldhead86d6ec24 and main8118af27. The exact approved test blob and ProjectPanel runtime blob are unchanged from86d6ec24. Relative to the integrated target, this PR still changes only the existing context-menu test3+/3-; no new product implementation or test cases from this issue.

Independent focused Grinch review: PASS on23348634, proving both parent-side deltas preserved byte-for-byte and clean tree. Original two implementation reviews and discriminating negative-control/restoration proof remain valid for the unchanged fix. No local suite/control rerun was added merely for the conflict-free merge.

Head23348634 is pushed, active checkout matches it, ci:full remains set. Existing workflow will validate this new head; previous greens remain historical evidence for86d6ec24. No retry of the original failure or new repair is being attempted. Awaiting native CI completion; all required/applicable checks must pass before the already-authorized merge. No duplicate merge approval will be requested for this mandatory in-scope integration. Room24 adoption remains after delivery.

@sonarqubecloud

Copy link
Copy Markdown

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

The integrated-head CI is blocked again by the same Windows Rust assertion. No merge or additional rerun performed.

Run39153632740 attempt1, head23348634913386cc2aaf2efe87d22354d3d5ecdd:

  • frontend-regression job117752220865: SUCCESS,272files/4148tests passed, including ProjectPanel. This is validation of the newly integrated tree; the approved existing ProjectPanel case and its108-case file are unchanged.
  • rust-regression job117752205862: FAILURE,6402passed/1failed/26ignored. agent_update::tests::agent_install_2736_in_flight_entry_is_released_on_every_outcome at agent_update.rs:9281: echo released-ok-2736 payloadok=false, expectedtrue. Other15 workflow jobs succeeded; other current checks green.
  • Both checkout11ec3ecd464240dbe42f6a2c0443379cec9a36ea, merge of head23348634 into target8118af27. Windows image remainswindows-2025-vs2026/20261007.264.1; actual host/load equivalence unproven.

History remains preserved: oldhead86d6ec24 run39136973081 attempt1 failed the same assertion; the single explicitly authorized recurrence attempt2 passed. The current integrated-head run now records the same failure again. This establishes recurrence across the two heads, not a cause or deterministic reproduction. agent_update.rs itself is byte-identical between86 and233; no direct causal link to the frontend test change has been demonstrated. It also does not prove harmlessness or rule out indirect effects.

The user's merge approval remains valid, but cannot waive a required red check. The earlier single-job recurrence permission was specific to the old run and has been used. No further retries, issue creation, Rust repair, threshold change, instrumentation or new tests are authorized here. Recommend a separate bounded read-only investigation of this one Rust test and its runner outcome path, using all three preserved results first. Any execution/instrumentation or product correction would need a concrete scoped proposal and authorization. Do not expand issue3107 silently.

Logs saved in room22 room-shared/pr3102-projectpanel-raf:

  • ci-233-rust-job117752205862-api-v3.log SHA2561c9081ceb02e758dbe75d2c80fa483ef0c131f9cfc4ef4a69c8193c80f4d4cf4
  • ci-233-frontend-job117752220865-v1.log SHA25607e0df69dd8ffc6bf8e641723f7f8c5a64ab8d3091c57f1d89425a132a59e7bc
  • ci-233-run39153632740-v1.json
    Original failed download artifacts retained; cache/escape-guard command errors logged separately, no runtime changes. Main also advanced to3b73455c4b8feccb53aaa2588b2153d505da73d6 during CI; fresh delta triage remains a future delivery prerequisite, not performed while this red already blocks merge.

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

User requested checking whether origin/main already contains a fix for the recurring Rust failure. Latest fetched origin/main:3b73455c4b8feccb53aaa2588b2153d505da73d6. Own branch remains23348634913386cc2aaf2efe87d22354d3d5ecdd, clean; no checkout, source changes or tests.

Rust result: no explicit merged fix found for agent_install_2736_in_flight_entry_is_released_on_every_outcome. agent_update.rs is byte-identical between our integrated head233 and origin/main (git diff --exit-code0). The first echo assertion and500ms install timeout remain unchanged at9253-9284. Latest-main delta from8118 contains only4paths: settings.rs, instance_artifacts.rs, regressionworkflow, and ProjectPanel.context-menu.test.tsx. Workflow adds two Linux/macOS focused P41 blocks; no Windows rust-regression change. No claim that indirect settings changes cannot affect runtime; no evidence credits them as the Rust fix.

Important separate discovery: main DOES contain another fix for the exact ProjectPanel stale same-session callback case. Commit a77f8a8, “test(sidebar): isolate stale menu response reclamp callback”, landed with PR3056, merge3b73455c at2026-10-18T18:23:21Z. It installs RAF/cancelRAF spies before setup/opening, records a response offset, retains the callback requested after settings resolves, explicitly invokes it after reopen despite cancellation, and adds nested cleanup. Existing functional assertions remain in the diff. PR3056 body explicitly describes the stale RAF proof. This is a different implementation from our finite-batch change, not evidence of a Rust repair.

The main alternative's complete sensitivity evidence has NOT been independently qualified in this check. No automatic claim of equivalence, replacement, harmlessness or whole-product safety. PR3109 now directly overlaps an already-landed modification to the same case. Do not merge over it or silently resolve that conflict under the old plan. Neither PR3109 nor issue3107 has been closed; merge approval remains recorded but requiredRustred and overlap need disposition before landing. No further rerun/investigation/repair initiated. Original logs and tests preserved.

Sources:
#3056
a77f8a8
#3056 (comment)

@mblua

mblua commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the existing correction in a77f8a8, landed through #3056 and present in main 3b73455c4b8feccb53aaa2588b2153d505da73d6. Closing this competing PR without merging or deleting its branch/history.

The existing fix intercepts RAF before setup and isolates the settings-response request interval. It retains a strict one-request assertion for that controlled interval and all reopened-menu checks; it does not depend on a global single RAF. The saved stale callback is delivered deliberately after the same session reopens, even if cancelled. See test:2025 and epoch guard:1526.

Missing mutation proof has now been obtained under exact four-party consensus on plan v10/r1, SHA256 81f584d54ac89edc9b00e89aefbe92cbf2434567b87278828b205af48208f999:

  • Epoch comparison alone removed (kind/session retained): one bounded negative, exit1, B position fails at test2100:38: 8px versus 210px. Capture/cardinality passed first.
  • Runtime restored: one bounded focal, exit0, stale + existing expanded-menu positive both PASS. No retries or new permanent tests; all108 file cases remain.
  • Both source originals restored byte-for-byte, HEAD/branch unchanged, staged content unchanged and clean checkout. Known child/writer processes settled. Both independent proof reviews PASS; all21 artifact hashes checked. Raw index byte identity is unverified; staged identity is verified. No claim about the cause of the index digest delta.

Accurate execution attribution: Windows Node22.23.3/npm11.6.2, actual HEAD 23348634913386cc2aaf2efe87d22354d3d5ecdd plus exact main3b test blob 9da44f167b85dfe3a8e083609c6377e1bfada1ae, with relevant frontend-input equivalence verified. This is not a whole-main/Linux/Rust/CI qualification.

Historical failures remain red, including PR3102 run39089324848 attempts1/2 and our required Windows Rust failure run39153632740. That Rust cause remains UNKNOWN and unrepaired. Original [clamp,tick] dynamic tick ownership/frequency remains unknown; P02 preexistence means P03 is not necessary to produce it. This closure bypasses no red check because no merge occurs.

Room24 receives the qualified existing main fix and retains responsibility for its own integration and exact-HEAD validation. This does not declare PR3102 green or authorize more retries. #3107 is fulfilled by the already-landed correction and this accepted proof.

@mblua mblua closed this Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:full Run the full PR regression gates on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: preserve stale ProjectPanel reclamp proof with concurrent halo RAF

1 participant