feat(network): send bounded WebDriver BiDi session.status command - #249
feat(network): send bounded WebDriver BiDi session.status command#249seonghobae wants to merge 39 commits into
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 |
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first reconstruction review: #248 4b9a04e... is now exact-head GREEN, so this child was rebuilt from that verified tree and only its four session.status command files were reapplied. This avoids carrying the predecessor parent's uncovered impossible branch or duplicating the parent repair. Fresh exact-head CI 33771106565 is still required before any child result or descendant restack can be accepted.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head source verification on 3c9124b: the parent-first topology remains exact (#248d835c35 merge base, 0 behind, four semantic paths). The invalid-deadline repair now rejects both zero and above-MAX_WEBSOCKET_FRAME_TIMEOUT before command registration, while preserving the existing rule that a failure after valid registration/emission begins leaves the id outstanding. This removes the local-precondition/correlation-capacity leak without making frame ACK a command post-condition or widening authority. CI 33851946207 is non-terminal (Rust 100956517128, coverage 100956516744 queued), so this is not an approval or exact-head GREEN claim.
seonghobae
left a comment
There was a problem hiding this comment.
새 causal finding: send()는 invalid timeout은 correlation 등록 전에 거부하지만, frame owner의 다른 local preflight인 adjacent masking-key reuse는 correlation 등록 뒤 write_text_frame() 안에서 거부됩니다. ClientMaskKeyHistory::reserve()는 socket write 전에 같은 key를 거부하므로 이 경우 원격 side effect가 없는데도 command id가 outstanding으로 남아 bounded correlation capacity를 소모합니다. Timeout repair와 같은 invariant로 수리해야 합니다: frame owner가 side-effect-free preflight를 canonical하게 제공하고, session.status는 timeout/payload/mask-key-history preflight가 모두 끝난 뒤 correlation을 등록해야 합니다. Partial/ambiguous write 이후에는 기존 outstanding 보존 규칙을 유지합니다.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head source verification: the adjacent masking-key regression is now realistic and names only the observable invariant. Exact test-only b293b35535b463a15b42b18ae35b178a418d9249 first required a seed client text frame followed by the same masking key on session.status to fail without leaving correlation outstanding. Causal 8c7b9750d81d1fb6d9b75437b4eda0c605d45929 keeps registration before possible emission but, when the frame owner's current MalformedFrame pre-write guard proves the frame never began, retires only the exact just-registered SessionStatus id through the correlation owner's typed retirement API. Partial/ambiguous write errors still retain correlation. Final b9e38b4ca535470122b98fabd93929c6292af299 only corrects the regression name. Exact parent remains #248 d835c35b..., 0 behind, four semantic paths. CI 33857014776 is non-terminal (coverage 100972555193, Rust 100972555474, both queued/no runner/steps), so this is not approval or GREEN.
seonghobae
left a comment
There was a problem hiding this comment.
Separate merge-readiness finding from protected-main AGENTS.md: the current exact semantic delta is still four code/test paths and does not update docs/doctoring.md or CHANGELOG.md, although this slice introduces a standards-bound WebDriver BiDi command and changes transport/correlation behavior. Keep Draft even after native CI becomes GREEN until the branch carries a truthful changelog entry and standards doctoring for the current WebDriver BiDi Editor’s Draft plus RFC 6455 client-mask obligation. Do not describe the 1 June Working Draft as current; the live W3C Editor’s Draft is dated 1 September 2026. This is documentation repair, not a reason to weaken or duplicate the code boundary.
seonghobae
left a comment
There was a problem hiding this comment.
Standards-date correction to the preceding documentation finding: fresh authoritative retrieval now shows the live WebDriver BiDi Editor’s Draft is dated 3 September 2026, not 1 September. session.status remains a static command with EmptyParams and required StatusResult { ready: bool, message: text }. The merge-readiness finding is unchanged: this exact four-path code/test delta still lacks the docs/doctoring.md and CHANGELOG.md updates required by protected-main contributor instructions. Doctor the 3 September 2026 Editor’s Draft and RFC 6455 §5.3; do not present the older 1 June Working Draft as current. This comment supersedes only the date in review 5111284918, not its gate.
seonghobae
left a comment
There was a problem hiding this comment.
Current-head documentation repair on 117d7593d66243c391bde04791cf521a92a34e18: fresh primary-source retrieval shows the live WebDriver BiDi Editor's Draft is dated 1 September 2026; the earlier 3 September date in review prose was incorrect. docs/doctoring.md now records that live draft, the exact static session.status / EmptyParams / StatusResult { ready, message } contract, and RFC 6455 §5.3's fresh unpredictable client masking-key obligation while explicitly separating OriginWeave's adjacent-key rejection as stronger local policy. CHANGELOG.md now records the typed outbound command and distinguishes pre-I/O retirement from ambiguous-write retention and transport write from command completion. Base→head compare remains exact #248 as merge base, 0 behind, six semantic paths, no .github/**. CI 33858777817 is non-terminal (coverage 100978123412, Rust 100978123617, both queued/no runner), so this is not approval or GREEN.
seonghobae
left a comment
There was a problem hiding this comment.
Superseding my earlier date correction: direct retrieval of the rendered W3C WebDriver BiDi Editor's Draft header now shows 3 September 2026. Commit 588514bfa2150381bff8f3ccbb81e6072fde6218 corrected docs/doctoring.md to that authoritative date and APA reference; commit 422ac8cce072cb016af16ed37e0de357a9ce854d restored an unrelated RFC 5280 author citation that was accidentally transcribed while replacing the whole documentation file. Current base→head remains exact #248, 0 behind, six semantic paths. Fresh CI 33859271719 is still non-terminal: Production coverage 100979703576 and Rust contracts 100979703825 are queued without runner/steps. This is a correction/verification comment, not approval or GREEN.
seonghobae
left a comment
There was a problem hiding this comment.
Parent-first stack update after this head's documentation repair: canonical common-envelope #247 has now moved to test-only 1bdfb42b35f1bda118e4b4b1a4d331db2190c3bc for the finite WebDriver BiDi ErrorCode repair. Direct parent #248 is consequently non-mergeable against its live base until that ancestor is fixed and reverified. This #249 branch remains structurally a child of the old exact #248 generation, so even if CI 33859271719 later completes successfully it can prove only this commit's own delta on that old generation, not the live parent-first stack. Keep Draft. Required continuation is #247 RED→minimal fix→exact GREEN, then non-force #248 restack+GREEN, then non-force #249 restack+fresh GREEN. Do not copy the common ErrorCode rule into this command sender or force-push. This is a dependency note, not approval.
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Current-parent reconstruction and exact-head RCA on
This PR remains draft and stacked on #248. |
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact-head repair evidence for
The newly queued GitHub checks remain authoritative for this changed head; this comment does not claim protected merge or shipment. |
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact-head child refresh evidence for
|
Commit-Message-Assisted-by: Claude (via Claude Code) Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Verified PR #248 current exact head |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-head focused review for stacked child 017d6e816f5a86544a63821b3ceaba94d5f17f44 over parent #248 7d6db16b2ead201fcec320854923f90d3ad0d8bc: no actionable defect found in the bounded session.status sender. The command has static method/params serialization, enforces the WebDriver BiDi js-uint ceiling, registers typed correlation before I/O, rejects invalid deadlines before registration, retires only proven preflight failures, and consumes the established stream on ambiguous write failure. Local exact-head evidence: rustfmt passed; all 5 focused integration tests passed; strict all-target/all-feature Clippy passed. Keep Draft and parent-first: its two hosted checks are queued and #248 has not reached protected main.
Update the live queue to 12 Ready and 113 Draft PRs after #248's parent repair. Preserve the zero-test RED, exact local gates and coverage, current parent lineage, and #249's remaining dependency adoption without claiming hosted or protected delivery. Commit-Message-Assisted-by: Codex (via Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
Preserve the session-status sender and Rust tests while integrating the owning fixture and native release-check repairs. Retain both conflicting changelog entries and record exact ancestry and discovery evidence. Commit-Message-Assisted-by: Codex (via Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
Preserve the five status-response owner blobs while merging the canonical opening fixture and discoverable correlation release contract from current #249. Verify the integrated tree without transferring predecessor hosted evidence. Commit-Message-Assisted-by: Codex (via Codex) Signed-off-by: Seongho Bae <me@seonghobae.me>
Boundary
This Draft owns the narrowly typed outbound WebDriver BiDi
session.statuscommand over the bounded RFC 6455 stream. It serializes only the fixed method and empty parameters, uses typed command correlation and adds no generic dispatch, policy/secret authority, retry, reconnect or completion-by-write semantics. A successful frame write is transport progress, not a browser post-condition.Current exact topology
Current head
84b9407978ae0f6c115f01170b6069c601b21104ordinarily merges current #248b386f17c4826adabebda084bff2fba35aee94dd0into predecessor017d6e816f5a86544a63821b3ceaba94d5f17f44. The required parent is an ancestor; no force push or destructive reconstruction was used.The only conflict was adjacent CHANGELOG additions. Both release records are preserved. The four session-status source/export/Rust-test blobs are unchanged; owning peer-lifetime and native release-test repairs are inherited intact. Before integration, the required parent was absent and the inherited correlation release module collected zero native unittest checks. It now collects and executes one.
Existing causal contract
Invalid deadlines fail before command registration. Proven preflight rejection, including adjacent masking-key reuse, retires only the exact just-registered command. Once a write may have begun, errors retain correlation because the remote effect is ambiguous and the consumed stream is not reusable. No received-response generation or browser completion is inferred.
Fresh local verification — 5 September 2026
nightly-2026-08-01production verifier passes: 989/989 functions, 9978/9978 lines, 12717/12717 regions, 1098/1098 branches (100% each).017d6e81...exactly.Fresh native CI
33954334610binds this exact head and is non-terminal. Prior run33942378277, earlier parent runs and predecessor review prose do not transfer. Draft and parent-first protected integration remain mandatory; the previously conflicting dependency is repaired locally/on the PR, not shipped to protected main.No PR merge, closure, self-approval, bypass, force push, workflow/ruleset/secret mutation, weakened check, tag, release or publication is included.