Uh oh!
There was an error while loading. Please reload this page.
fix: repair CI broken by #1880 (format + platform-independent e2e signal) - #1887
Merged
Conversation
The PR1880 entry for main.ts exceeded the line width; biome format required splitting it. format:check was failing CI on main.
The regression test for the ESM startup deadlock treated 'CDP evaluate never settles within 1s' as the proof that the repair dialog was open. That holds only on macOS, where modal loops block CDP evaluation; on Linux (CI) the modal keeps answering evaluation, so the test failed even though the app parked correctly — and a deadlocked main process would have been accepted as a pass. Replace the heuristic with an explicit contract: boot.ts prints '[storage-root] root-identity conflict; parking at repair dialog' synchronously before the modal (printed only after ready, only when the gate fired), and the test waits for that console event. The workspace write-free assertion is unchanged. Deadlock and gate-removal both never print the signal, so both still fail the test on every platform.
Astro-Han
marked this pull request as ready for review
August 2, 2026 06:45
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR #1880 merged with its own CI red, breaking
main(run 30734948700). Both failures come from #1880's changes:typecheckjob:scripts/check-console.mjs— the newmain.tsallow-list entry exceeded the line width and was never formatted (npm run format:checkfails).e2ejob: the newstorage-root-conflict.spec.tsregression test treats "CDP evaluate never settles within 1s" as proof the repair dialog is open. That holds only on macOS, where modal loops block CDP evaluation; on Linux CI the modal keeps answering evaluation, so the test failed even though the app parked correctly — and a deadlocked main process (the exact regression the test guards) would have been accepted as a pass on Linux. The signal is fundamentally platform-dependent: macOS and Linux modal dialogs behave oppositely under CDP evaluation, so no evaluate-based heuristic can be portable.Fix: replace the heuristic with an explicit contract.
boot.tsprints[storage-root] root-identity conflict; parking at repair dialogsynchronously before the modal — only reachable afterreadyand only when the root-identity gate fired — and the test waits for that console event (Playwright forwards main-process console via CDP). The workspace write-free assertion is unchanged. Deadlock and gate-removal never print the signal, so both still fail the test on every platform.Also:
mainhas no branch protection (404 on the protection API), which is why #1880 could merge with red checks.Verification
npm run format:check— clean (1381 files)npm run lint— clean (2252 files)npm run typecheck— clean (all workspaces)storage-root-conflicttest (macOS, 5.5s)mainand must now pass