feat(core): consume SemanticObservation proof in bind_current_nodes - #174
Draft
cursor[bot] wants to merge 43 commits into
Draft
Conversation
Close the locateNodes result-item gap by requiring the exact node remote type and a usable sharedId within the registry identifier budget before an untrusted adapter value can be retained as a later handle. Co-authored-by: Seongho Bae <[email protected]>
Require fail-closed rejection of whitespace and control injection in accessibility roles, accessible names, BiDi sharedIds, and registry external identifiers before production support exists. Co-authored-by: Seongho Bae <[email protected]>
Fail closed on whitespace or control characters in exact accessibility roles, accessible-name locators, BiDi sharedIds, and registry external identifiers so untrusted protocol text cannot become a later handle. Co-authored-by: Seongho Bae <[email protected]>
Require a fail-closed composition that revalidates the exact current session/context/origin/document epoch, rejects over-budget or non-node items, and translates admitted sharedIds into ObservedNodeHandle values before production support exists. Co-authored-by: Seongho Bae <[email protected]>
Correct a missing comma so the intended missing-production compile failure is not hidden by a test-harness syntax error. Co-authored-by: Seongho Bae <[email protected]>
Revalidate the exact current session, context, origin, and document epoch, admit every untrusted result item first, then translate shared node identities through the registry into ObservedNodeHandle values. Co-authored-by: Seongho Bae <[email protected]>
Add the failing contract that an untrusted locateNodes result cannot become ObservedNodeHandle values unless the adapter proves SemanticObservation on the exact current session, context, origin, and document epoch. Co-authored-by: Seongho Bae <[email protected]>
Consume a non-cloneable SemanticObservation protocol-use proof before bind_current_nodes can translate untrusted sharedId values into current ObservedNodeHandle values. Navigation-only and TypedInput-only adapters fail closed. Co-authored-by: Seongho Bae <[email protected]>
Keep CHANGELOG, doctoring, API, architecture, ADR 0010, and the roadmap aligned with the same-call proof that observation handles require QueryNodes capability and current document authority. Co-authored-by: Seongho Bae <[email protected]>
Add the failing contract that zero-width and bidi-override format characters cannot be admitted in accessibility roles, accessible names, BiDi sharedId values, or registry external identifiers. Co-authored-by: Seongho Bae <[email protected]>
Fail closed on reviewed Default_Ignorable and bidirectional format characters in accessibility locators, BiDi sharedId values, and registry external identifiers. Ordinary spaces in accessible names remain valid. Co-authored-by: Seongho Bae <[email protected]>
Record the local fail-closed format-character policy and cite the current Unicode security-mechanisms standard, the bidirectional algorithm, and the superseded UTR 36 report. Co-authored-by: Seongho Bae <[email protected]>
RED: bind_current_nodes must consume a non-cloneable protocol-use proof and reject TypedInput and Navigation proofs before minting observation handles. Navigation-only and TypedInput-only adapters can still call the public no-proof API on the predecessor head. Co-authored-by: Seongho Bae <[email protected]>
Transfer the non-cloneable QueryNodes protocol-use proof by ownership into locateNodes admission and reject Navigation, TypedInput, and NetworkObservation proofs before minting ObservedNodeHandle values. Co-authored-by: Seongho Bae <[email protected]>
Co-authored-by: Seongho Bae <[email protected]>
seonghobae
changed the base branch from
main
to
test/browser-context-origin-epoch-protocol-dispatch
August 16, 2026 15:55
This was referenced Aug 16, 2026
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.
Successor to #172 on exact prerequisite #127 head
65f51937ff2af64d9c157666e7c3b7df89cbb89a.Buyer/security gap
#172 adds
admit_query_nodes, but publicbind_current_nodesstill mintedObservedNodeHandlevalues from an untrustedlocateNodeslist without consuming the exactSemanticObservationprotocol-use proof. Navigation-only and TypedInput-only callers could bypass the intended semantic-observation gate.admit_query_nodesalso dropped the non-cloneableValidatedBrowserProtocolUseinstead of transferring it into binding.Current exact implemented boundary
Current exact contributor head is
761d4be7ba6297e3c8078b947bd68cedafd56976; exact feature-base tip remains65f51937ff2af64d9c157666e7c3b7df89cbb89a.This lane now:
ValidatedBrowserProtocolUseby ownership inbind_current_nodes;SemanticObservationproof and rejects TypedInput/Navigation proofs;admit_query_nodesinto binding;BrowserAuthorityRegistry::bind_nodecrate-private so external callers cannot bypass protocol admission;TDD / repair sequence
c0e3d8eestablished the missing-production RED:bind_current_nodesmust take a protocol-use proof and reject TypedInput and Navigation proofs.d6a7998implemented proof consumption and capability gating;d83fec0formatted the original slice.bind_node, and another test file was not canonically formatted.expect()calls. The final repair added the repository-standard test-only#![allow(clippy::expect_used)]to that integration test rather than weakening the workspace gate.Exact-current proof
On unchanged exact head
761d4be7ba6297e3c8078b947bd68cedafd56976:31969931127: success;31969931159: success;Feature-base organization workflows that did not execute on this exact head are not represented as passing. No predecessor-head check/review/status is transferred.
Truth boundary
This still does not serialize a BiDi command, authenticate Chromium, observe a live accessibility tree, authorize typed input, or prove a post-condition. The public handle-minting path in this slice is now protocol-admitted; a later trusted adapter must still sample the query result from a trusted transport and revalidate returned handles immediately before action.
Keep Draft while #127 and its prerequisite stack remain active. Prefer this branch over #172, #171, and #138 for QueryNodes admission. This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.