fix(browser): prove exact crash-root termination before crash credit - #151
Open
seonghobae wants to merge 7 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
seonghobae
marked this pull request as ready for review
August 14, 2026 05:40
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 free
to 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.
Partial implementation of #28, stacked on exact PR #148 head
a249607ea2ab0ca23740dad90f8a2e67b9fa8fb2.Falsifiable defect
The controlled browser-crash lane previously credited
browser_process_crash_detected = Trueafter SIGKILL by waiting for a generic WebDriver URL probe to fail. That boundary could mislabel an unrelated ChromeDriver/transport failure as direct browser-process crash observation. The first attempted contract then exposed a deeper Linux lifecycle problem: polling/proc/<pid>/statfor disappearance is not an exact termination proof before parent reaping, because a killed child can remain present as the same PID/start-time zombie.RED -> RCA -> GREEN
7e218fc56b1adb738e67c8c5869612afe8413a23failed CI run31768982111: all four focused exact-exit contracts failed because_signal_and_wait_for_linux_process_identity_terminationdid not exist. Its Manifest V3 Compatibility run31768982105also failed browser-crash recovery 0/3 while ordinary and forced-close Agent Task trials remained green._wait_for_linux_process_identity_exitpolls procfs identity disappearance/reuse. A SIGKILLed child may already be kernel-terminated yet remain at the same/proc/<pid>/statidentity until its parent reaps it, so procfs lifetime cannot prove pre-reap termination at this boundary.43d39197ab10be73a69c4a4816b51e893804d67fadds the smallest root-cause-changing authority: open a pidfd only after exact PID/start-time validation, revalidate the same identity, signal through that pidfd, and wait for that same pidfd to become readable under the existing bounded timeout. Crash credit is assigned only after that same-handle termination observation. The existing post-cleanup sampled Chromium process-set teardown remains a distinct recovery proof.CHANGELOG.mdrecords that exact behavioral boundary, as required by repository policy.Current exact-head evidence
At exact head
43d39197ab10be73a69c4a4816b51e893804d67fagainst exact prerequisite #148 heada249607ea2ab0ca23740dad90f8a2e67b9fa8fb2:31773832003: success on the exact checkout SHA;31773831971: success on the exact checkout SHA with pinned Chrome/ChromeDriver150.0.7871.129;forced_close_detected=true, surviving-session proof, root/process-set termination, and profile cleanup;browser_process_crash_detected=true,browser_process_terminated=true,chromium_process_set_terminated=true, and profile cleanup;The PR is Ready for review. Passing automation is not independent approval, and the scheduled actor does not merge or self-approve.
Truth boundary
This proves controlled Linux/pinned-Chromium crash evidence only. It does not claim cgroup/task ownership, discover processes created after the sampled set, prove OS-wide orphan absence, authenticate Chromium/ChromeDriver provenance, implement automatic retry or mutation reconciliation, provide cross-platform supervision, or turn this CI compatibility runner into a product browser API.