chore(stack): adopt current #252 into #255 - #294
Conversation
Reuse the existing sealed-reader integration checks and preserve pending commands after event or missing-provenance rejection. Apply canonical formatting observed in exact-head CI. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Preserve the failed compile attempt and use the existing evidence accessor without widening production authority. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Replace the superseded unit fixture with the existing loopback response path and verify original correlation remains usable. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Keep generic and connection-bound completion separate while reusing exact event and null-id rejection. Projection and provenance remain prerequisites to consumption. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Require pending-state preservation and acceptance of the original connection reply after rejection. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Adopt bbdc6ac with both histories and retain all child sender and failure-test blobs. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Require exact replacement-connection rejection without claiming stream liveness or end-response provenance. Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
Co-Authored-By: OpenAI Codex <noreply@openai.com> Signed-off-by: Seongho Bae <me@seonghobae.me>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
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: Team 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.
🔍 Legacy assembly path remains public
Raw frame reads and WebDriverBiDiWebSocketMessageAssembler still permit transport-detached assembly. Review whether retaining this public path leaves the provenance migration incomplete.
(Refers to this code)
Was this helpful? React with 👍 or 👎 to provide feedback.
| WebDriverBiDiWebSocketMessageAssembly::Control(message) => { | ||
| WebDriverBiDiConnectionMessageRead::Control { | ||
| reader: Self { | ||
| established, | ||
| assembler, | ||
| connection_generation, | ||
| }, | ||
| message, | ||
| } |
There was a problem hiding this comment.
🟡 Ping replies become impossible
When read_next returns a Ping, it keeps the established connection private inside the returned reader. The only Pong writer requires that connection, so callers cannot acknowledge the Ping. Standards-compliant peers can close the WebSocket and strand pending commands.
Prompt for agents
WebDriverBiDiWebSocketMessageReader surfaces Ping control messages while retaining the established transport privately, but WebDriverBiDiWebSocketEstablished::write_pong_frame consumes that transport. External callers therefore have no API path to send the required Pong and continue with the same fragmentation state. Add a connection-bound Pong operation or a control outcome that safely supports writing the Pong while preserving the assembler and connection generation. Cover both standalone and interleaved Ping frames, including continued completion of a fragmented text message.
Was this helpful? React with 👍 or 👎 to provide feedback.
| let (command_id, outcome) = response_route(envelope)?; | ||
| self.complete(command_id, expected_kind, outcome) |
There was a problem hiding this comment.
🟥 Connection-bound replies remain bypassable
A caller can pass a replacement connection's matching envelope to correlate_response_for. The generic path consumes connection-bound commands without checking their stored generation. The replacement reply can therefore complete the protected request.
Was this helpful? React with 👍 or 👎 to provide feedback.
be85f04
into
feat/webdriver-bidi-teardown-transport-binding
Bounded parent-adoption PR for the existing #255 sole-writer lease. Merge current #252 exact
363a78e36e7690e9ed5bf49829567e00e2ec5d59into #255 branchfeat/webdriver-bidi-teardown-transport-bindingwithout rewriting history. Preserve #255's stronger connection-bound teardown/closure provenance and all valid #253/#254 successor deltas. This PR exists only to let GitHub perform the ordinary three-way integration; it does not authorize protected-main merge, gate weakening, force updates, self-approval, or release mutation. After integration, #255 must remain Draft and receive fresh exact-head full verification before any acceptance claim.