feat(browser): prove forced-close recovery evidence - #132
Draft
seonghobae wants to merge 5 commits into
Draft
Conversation
|
Important Review skippedDraft detected. 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 |
This was referenced Aug 12, 2026
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 unchanged exact PR #129 head
d199a0d1f30746aafc67986bf9dbc3ca88d802c6.Buyer/reliability gap
The controlled pinned-Chromium Agent Task proves a successful observation/input/post-condition path and profile cleanup, while PR #67 defines typed interruption metadata on a separate prerequisite lane. The executable compatibility path still needed to force a real browsing-context close and prove that the next browser command fails deterministically instead of being normalized as success. Issue #28 explicitly requires renderer/tab crash or forced-close failure and recovery evidence.
Dependency
This Draft targets unchanged exact #129 head
d199a0d1f30746aafc67986bf9dbc3ca88d802c6and must remain Draft while #129/#128/#105 and their prerequisites remain active. No prerequisite check, review, status, coverage, mergeability, or synthetic-merge evidence transfers.TDD and RCA sequence
0b8c9c722c154a0eb08011420a4d502dc4324408defined the forced-close runner, exactno such windowfailure, surviving-session, profile-cleanup, evidence, and overall-gate contracts before runner support existed. CI run31633625919, Rust contracts job94238352919, failed in the Python repository-contract suite with the intended missing_force_close_agent_task_context, missing browser-pass/trial functions, and absent forced-close evidence/gate boundaries. The unrelated Rust production-coverage job succeeded because this Python runner slice did not alter owned Rust production code; that result is not promoted as source GREEN. This is the valid RED.138ad51b7fbc4c5b7b02c98d99ac798297049337refined the contract so closing one disposable context must preserve a separate survivor context and the WebDriver session rather than accepting whole-session termination.2e0fb4db866a591e7c7bce68691462130b1f4c48added the real pinned-Chrome/ChromeDriver forced-close probe, repeatable isolated-profile trials, bounded evidence, and fail-closed aggregate gate.34a29faf05794736ea3bfc6d15961a5e23a61ec8added hostile regressions proving that an arbitrary message containing the wordsno such windowis not accepted as structured interruption evidence.5a352a05ade9e902e6729bcb40ad37b69b485db3parses only exact direct WebDriver error framing or a structured HTTP 404 WebDriver payload whosevalue.erroris exactlyno such window.Implemented contract
The compatibility runner now:
no such windowevidence;The helper recognizes only exact direct
WebDriver error: no such window: ...framing or structuredWebDriver HTTP 404JSON withvalue.error == "no such window"; substring lookalikes and malformed payloads remain failures.Exact-head proof
On unchanged exact head
5a352a05ade9e902e6729bcb40ad37b69b485db3against unchanged exact prerequisited199a0d1f30746aafc67986bf9dbc3ca88d802c6:31641185937: success;94263782640: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;94263782478: exact owned production function/line/region/branch enforcement success;31641185948: success;No predecessor-head or prerequisite evidence is promoted as current proof.
Remaining branch-local closure
The implementation and acceptance evidence are exact-green, but this branch's changed-file set does not include a dedicated Unreleased changelog entry. PR #136 already depends on this exact head, so moving #132 only for release-note prose would invalidate descendant ancestry and exact evidence. That release-note debt must be reconciled through dependency-ordered stack alignment rather than silently treated as complete.
Truth boundary
This lane exercises one controlled forced close before an external effect. It does not synthesize or attribute a renderer crash, prove interruption handling in arbitrary Chromium processes, reconcile an ambiguous external mutation, authorize automatic retry or quarantine in the product runtime, authenticate a browser adapter, or complete #28. It is compatibility/acceptance evidence; a trusted runtime still must compose actual interruption facts with the separate typed recovery policy/evidence boundary before making retry, reconciliation, or quarantine decisions.