fix(core): reject disabled semantic-node actions - #101
Draft
seonghobae wants to merge 2 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 was referenced Aug 12, 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.
Partial implementation of #28, stacked on exact PR #96 head
c93b90a316b83a160cf80008cc25c78aa32302f9.Buyer/correctness gap
SemanticNodeActionTarget::from_observationpreviously checked only whether an observation advertised the requested node-local action. An observation could simultaneously report an interactive action such asClickandenabled=false, allowing a known-disabled control to become an action target. The first real Chromium vertical slice should fail closed on that internally inconsistent semantic state instead of leaving a trusted adapter to rediscover it after policy authorization.Dependency
This Draft targets PR #96 branch
feat/semantic-node-dispatch-revalidation. Keep Draft while #96/#95/#93/#58/#57/#52/#40 remain active. No prerequisite check, review, status, or mergeability evidence transfers.TDD / implementation
Exact test-only head
f845e51c5f31d7b700aeaf65ce7818d9d5f940e8required known-disabled interactiveClickto fail as typedNodeNotEnabled, whileScrollIntoViewremained targetable because scrolling does not require the node itself to be enabled. Current exact production headbd75a43ddcd0a7afa4f032ecc2b930d742c3ece5implements that narrow invariant inSemanticNodeActionTarget::from_observationand exposes the stable credential-freeNodeNotEnablederror.The rule deliberately applies to every currently interactive node action (
Click,TypeText,SelectOption,SetChecked) while preservingScrollIntoView. The observation's advertised-action check remains separate and still fails first when the requested action was not observed as supported.Exact-head proof
On unchanged exact head
bd75a43ddcd0a7afa4f032ecc2b930d742c3ece5against unchanged exact prerequisite #96 headc93b90a316b83a160cf80008cc25c78aa32302f9:31552510321: success, including repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, rustdoc, and exact owned production function/line/region/branch coverage;31552510348: success;No predecessor-head result is transferred.
Truth boundary
This slice validates only the semantic observation presented when the target is constructed. It does not prove current enabled state at dispatch time, authenticate the browser adapter, rotate document epochs on semantic mutation, authorize policy, dispatch Chromium input, or prove a post-condition. Immediate current-authority/state observation remains a trusted runtime responsibility.