Skip to content

feat(network): bind session.end ack to operational teardown evidence - #253

Draft
seonghobae wants to merge 12 commits into
feat/webdriver-bidi-session-end-responsefrom
feat/webdriver-bidi-session-teardown-evidence
Draft

feat(network): bind session.end ack to operational teardown evidence#253
seonghobae wants to merge 12 commits into
feat/webdriver-bidi-session-end-responsefrom
feat/webdriver-bidi-session-teardown-evidence

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Boundary and safe-successor topology

Draft child of #252. This intermediate assessment still accepts three caller-supplied booleans and can emit OperationallyComplete; review 5120013340 remains 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 predecessor 0d72082e... and #252 6569bf40b6595ac74c2f0a997d202137f07ba1db. 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 CI 33960670119 is 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.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Parent/base RCA completed for exact head 4c112e71f9a73edd27789b93460c55934543e072.

I merged the current #252 head (aa4af82806c3f7e3d0622c0025fbf1a8fadf3089) without rewriting history. The historical coverage failure was inherited from shared correlation and is repaired in the parent chain. The teardown assessment remains deliberately narrow: protocol acknowledgment, transport closure, process exit, and task-profile removal stay distinct, and caller-supplied observation booleans are not mislabeled as authenticated evidence. I added the missing buyer-visible changelog entry.

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>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact-head parent refresh: 5e2b17c7a8d1953bb06a41e0296f801f0d015a9a now adopts #252 881a599fb3a920b6bfd4f0a276f3cf24a61d8194 without conflict. Rustfmt, all-feature/all-target check, strict Clippy, rustdoc, 141 Python contracts, and CI-equivalent pinned-nightly production function/line/region/branch coverage all passed. Hosted checks remain authoritative; the PR stays Draft for ordered stack integration.

Commit-Message-Assisted-by: Claude (via Claude Code)
Signed-off-by: Seongho Bae <me@seonghobae.me>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Non-force restacked on PR #252 exact head 2015259529ada99af836989079cc85a15779a2d8; PR #253 is now exact head 0d72082e595c0e1fcc03d609ba337896ed14e2fc. Verification: rustfmt, all-feature/all-target check, strict Clippy, rustdoc, 141 Python contracts, and CI-equivalent pinned-nightly production function/line/region/branch coverage at 100%. Fresh hosted exact-head checks and ordered parent integration remain required.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
seonghobae added a commit that referenced this pull request Sep 6, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant