feat(network): bind session.end ack to operational teardown evidence - #253
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Parent/base RCA completed for exact head I merged the current #252 head ( Exact-tree local evidence: documentation contracts 22 passed / 177 subtests; rustfmt clean; strict all-target/all-feature Clippy clean; full workspace tests and rustdoc with warnings denied passed after one retry of the existing macOS socket-timeout cleanup race; pinned-nightly LLVM production functions, lines, regions, and branches are 100% covered. Hosted exact-head checks remain authoritative. |
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact-head parent refresh: |
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Non-force restacked on PR #252 exact head |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head security finding on 0d72082e595c0e1fcc03d609ba337896ed14e2fc: the public API currently upgrades three unauthenticated caller booleans into WebDriverBiDiSessionTeardownDisposition::OperationallyComplete. WebDriverBiDiSessionTeardownObservations::new(true, true, true) is sufficient after any correlated session.end ack; the focused test correlated_ack_plus_all_operational_observations_is_complete confirms this exact path. The rustdoc caveat that observations are not authenticated does not survive the return type/name, so a consumer can accidentally treat a caller assertion as process-exit/profile-removal evidence.
Repair acceptance: keep protocol acknowledgment separate, but do not emit an operational-completion disposition from raw booleans. Require non-forgeable typed observations issued by the owning transport/process/profile boundaries and bound to the same session/task/profile identity, or keep the result explicitly named as unverified caller claims until those types exist. Add a RED proving raw booleans cannot mint operational completion, then preserve the existing missing-observation cases. Do not weaken parent-first ordering or claim teardown completion from the protocol ack alone.
Ordinarily integrate #252 6569bf4 and retain both release records. Preserve child assessment source, exports and loopback tests while inheriting the canonical native contract and fixture repairs. Native release-contract RED: zero tests discovered. GREEN: one executed contract, all 142 Python tests, compileall, complete Rust 1.97.1 gates and numerical 100% coverage (1054 functions, 10747 lines, 13787 regions, 1194 branches). Branch instrumentation warning remains explicit. The raw caller-boolean operational-completion review finding remains unresolved in this intermediate layer. Preserve the later #255 owner repair; local gates do not prove evidence authenticity, security acceptance or protected delivery. Commit-Message-Assisted-by: Codex (via Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
Retarget PR #255 directly to the verified #252 session.end response prerequisite so the unsafe caller-supplied teardown assessment in #253 is not a protected-main prerequisite. The tree is intentionally unchanged: #255 already contains #253/#254 valid deltas and the connection-provenance repair. This marker binds fresh exact-head checks to the repaired PR topology without force-pushing or discarding ancestor history. Signed-off-by: Seongho Bae <me@seonghobae.me>
Boundary and safe-successor topology
Draft child of #252. This intermediate assessment still accepts three caller-supplied booleans and can emit
OperationallyComplete; review5120013340remains an intentionally unresolved finding on this branch. A rustdoc caveat, passing structural tests, hosted CI, or numerical coverage does not authenticate those values. Do not integrate #253 into protected main as trusted operational-completion evidence.The valid typed teardown-assessment delta is preserved in successor #255. #255 now directly targets #252 and includes both #253/#254 valid deltas plus the later connection-bound provenance repair, so protected integration no longer needs to pass through this unsafe intermediate generation. Keep this PR open until that successor's inheritance and protected delivery are independently verified; do not Close it merely to reduce queue count.
Current source evidence
Exact head remains
afb623e4449b7cbf926fdcef7225ceaca822cfcf, ordinarily integrating predecessor0d72082e...and #2526569bf40b6595ac74c2f0a997d202137f07ba1db. Child assessment source, exports and loopback tests are unchanged. Local verification passed 142 Python contracts, compileall, Rust 1.97.1 fmt/check/workspace tests/strict Clippy/rustdoc, with numeric production coverage 1054 functions / 10747 lines / 13787 regions / 1194 branches at 100% and the known unstable branch-option warning. Exact-head CI33960670119is terminal success.That quality evidence does not resolve the caller-supplied-evidence defect. Browser process/profile cleanup and operational completion remain unavailable here. No workflow/ruleset/secret mutation, self-approval, bypass, force update, destructive rebase, protected merge, tag, release or publication is authorized.