feat(core): admit correlated locateNodes results fail-closed - #184
Draft
seonghobae wants to merge 14 commits into
Draft
Conversation
|
Important Review skippedDraft detected. 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on exact PR #183 head
13a8a1a799a8098b1305876c9d0f318d0acaa6d1.Buyer/security gap
The WebDriver BiDi stack could prove that a success envelope belongs to the exact consumed
browsingContext.locateNodescommand and retain the command's serializedmaxNodeCount, but downstream code still needed one composition boundary that admitted the exact returned node batch and bound those nodes to current OriginWeave browser authority without allowing a stale/missing origin binding to mint handles.The W3C WebDriver BiDi contract makes the
locateNodesresult an array of remote node values bounded bymaxNodeCount. This child consumes exact command-correlation evidence, checks the exact result budget before item normalization, requires every admitted item to be a node with usablesharedId, and then binds admitted nodes only through exact current session/context/origin/document-epoch authority plus a validated WebDriver BiDiSemanticObservationproof.Test-first lineage
32069128415, Rust contracts job95508200722, which reached workspace compilation and failed becauseWebDriverBiDiLocateNodesResultAdmissionErrorandValidatedWebDriverBiDiLocateNodesResponse::admit_result_nodesdid not exist.fe8bbf2b3fc57ebb5d7c95ec684d2ad77b9ff89cadded/exported the non-cloneable correlated result batch and typed admission errors, checking exact result budget before remote-node normalization.cfee13a04ac4ff7d51321d539035f979fc8dfebf, adding current OriginWeave authority binding for the admitted result. Exact CI32075342997showed Rust contracts green but Production coverage failed by exactly one LLVM region while functions/lines/branches remained complete.exact-coverage-cfee13a04ac4ff7d51321d539035f979fc8dfebflocalized the sole uncovered region to the error arm ofBrowserAuthorityRegistry::require_context_origin(...)insideValidatedWebDriverBiDiLocateNodesResult::bind_current_nodes.31faaac806ed98384fc84a759b96af94573a3955addscorrelated_result_rejects_missing_current_origin_binding: afteradvance_document, binding fails closed asBrowserRegistryError::ContextOriginNotBoundrather than minting a node handle. No production behavior or gate was weakened.Implemented contract
Current exact head
31faaac806ed98384fc84a759b96af94573a3955:maxNodeCount;nodewith a usablesharedId;SemanticObservationcapability proof before current-node binding;The result/binding evidence is non-cloneable where consumption matters and does not make raw protocol identifiers durable Agent authority.
Exact-current GREEN evidence
On unchanged exact head
31faaac806ed98384fc84a759b96af94573a3955against unchanged exact prerequisite13a8a1a799a8098b1305876c9d0f318d0acaa6d1:32076614947: success;95531086443: repository contracts, canonical formatting, locked workspace check, full tests, strict Clippy, and rustdoc success;95531086494: exact owned production function/line/region/branch measurement and enforcement success;32076615049: success;Skipped formatting-diagnostic helper steps are not passing evidence. Required protected-main central Security/SAST/OpenCode/Noema/Strix workflows not generated for this stacked Draft remain absent, not passing. No predecessor-head, prerequisite-head, stale, synthetic, status-only, or model-only evidence is promoted.
Truth boundary
This slice now proves structured correlated-result admission and current OriginWeave session/context/origin/document-epoch binding for node handles. It still does not parse/authenticate a raw BiDi JSON envelope, authenticate Chromium or the adapter process, perform browser transport I/O, prove that a structured result actually came from the authenticated browser wire, authorize an Agent policy decision or typed input, execute a browser action, or verify a post-condition. Those remain separate reviewed boundaries.
Keep Draft while #183 and its prerequisite stack remain active. No predecessor checks/reviews transfer. This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.