fix(browser): bound forced-close teardown to one deadline - #147
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 |
There was a problem hiding this comment.
📝 Info: Two-deadline teardown remains in the non-forced-close pass
The non-forced-close pass still calls _wait_for_linux_process_identity_exit then _wait_for_linux_process_identity_set_exit in sequence (run_mv3_compatibility.py), each with its own full PROCESS_EXIT_TIMEOUT_SECONDS. This is the same double-budget shape the PR fixes for forced-close, left unchanged here. Out of scope for this partial PR, but a candidate for the same combined-waiter treatment.
(Refers to this code)
Was this helpful? React with 👍 or 👎 to provide feedback.
Partial implementation of #28. This Draft adds a shared-deadline forced-close teardown observer for the pinned Chromium Agent Task lane.
Falsifiable defect and repair lineage
The forced-close pass previously waited for the browser-root identity and sampled Chromium process set through two sequential helpers. Each helper could consume the full
PROCESS_EXIT_TIMEOUT_SECONDSbudget, allowing one nominal teardown phase to approach twice the intended deadline.Test-only head
2abcfacf8181ba51d905026e7fe085cb4a0bd149required one combined observer with separate root/process-set evidence and one monotonic deadline. CI31694255612, Rust-contract job94428272804, reached the intended RED because_wait_for_linux_process_teardownwas absent. Production then added the narrow shared-deadline observer and routed forced-close teardown through it; root/process-set outcomes remain distinct and fail closed.Fresh stack truth
Current contributor head is exact
962e179b53ed0342fde5b50c3deac0e7454b0d4f. The live prerequisite branchtest/agent-task-forced-close-failure-teardown-evidenceis exact48435b9d7e74ae932f03248c41833c684b1be411.A fresh compare reports the current child 10 commits ahead / 0 behind that live prerequisite, with merge base exactly
48435b9d7e74ae932f03248c41833c684b1be411. The intervening production reconciliation deliberately preserves the prerequisite's WebDriver diagnostic redaction/narrow-exception hardening while retaining this child's one-deadline teardown semantics. GitHub reports the PR open, Draft, and mergeable against the exact live parent.Exact-current evidence
On unchanged exact head
962e179b53ed0342fde5b50c3deac0e7454b0d4f:32773795820: success;97580050351: Python repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;97580050162: success, explicitly checking out exact SHA962e179b53ed0342fde5b50c3deac0e7454b0d4fand reporting owned production functions, lines, regions, and branches all exactly 100% covered;9537217522,exact-coverage-962e179b53ed0342fde5b50c3deac0e7454b0d4f, uploaded ZIP SHA-25698b0cf9f9f365446024e90577d74c64e1e73da0316e526dd0b2da092890845b1;32773795778: success; andCOMMENTEDreviews only; no qualifying independent approval is inferred.No exact-head SAST or Security Scan is claimed because the exact workflow inventory exposes only CI and Manifest V3 Compatibility for this head. Predecessor checks/reviews are not transferred.
Truth and authority boundary
This branch proves a bounded Linux/pinned-Chromium forced-close teardown observation for an exact root PID/start-time identity and already sampled Chromium PID/start-time set under one deadline. It does not establish cgroup/task ownership, discover later-created processes, prove OS-wide orphan absence, implement cross-platform supervision, or turn the CI runner into a product browser API.
Protected-main
AGENTS.mdremains authoritative. This scheduled writer does not merge, self-approve, force-push, alter workflows/rulesets/secrets, tag, release, or publish.