Skip to content

feat(core): bind semantic node action targets to browser authority - #58

Draft
seonghobae wants to merge 6 commits into
feat/semantic-node-queryfrom
feat/semantic-node-action-target
Draft

feat(core): bind semantic node action targets to browser authority#58
seonghobae wants to merge 6 commits into
feat/semantic-node-queryfrom
feat/semantic-node-action-target

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Partial implementation of #28.

Buyer/security gap

The active semantic-observation and typed-query stack can identify bounded node evidence, but the first real Chromium vertical slice also needs a narrow bridge from an observed node to one node-local typed action while preserving stale-node authority checks. Without that bridge, later browser adapters risk carrying an unvalidated node/action pair or conflating descriptive NodeActionKind evidence with policy authorization.

Exact TDD evidence

This Draft remains stacked on exact PR #57 head b4fa49953cbbb21c879a3340e264a6e132e41634.

The first test-only head 308fa77a5ea84ad428101792da9d8a7a0b9fcdac exposed only canonical rustfmt drift, so it was not accepted as the intended RED. Formatting-only head f2bb6db04488e4bfa873e290eb8b6283e1238fdf then passed repository contracts and rustfmt and established the intended compile RED in CI run 31430805418: cargo check --locked --workspace --all-targets failed specifically because public SemanticNodeActionTarget and SemanticNodeActionTargetError did not exist.

The narrow production implementation provides an authority-bound target that:

  • accepts only a NodeActionKind actually advertised by an already validated SemanticNodeObservation;
  • clones the exact OriginWeave-owned ObservedNodeHandle rather than retaining a raw browser/protocol selector;
  • exposes the selected node-local action as descriptive execution input, not authorization;
  • delegates immediate-use validation to the existing exact browser session/context/origin/document-epoch authority boundary; and
  • returns a stable credential-free typed error when an unadvertised action is requested.

Current exact head efe440c7a609cac187faacfa03a4df904a99386f additionally exercises same-authority success plus cross-session, cross-context, cross-origin, and stale-document rejection through the action-target boundary.

Exact-head acceptance

On unchanged exact head efe440c7a609cac187faacfa03a4df904a99386f:

  • CI run 31431277478: success, including repository contracts, formatting, locked workspace checks/tests, strict Clippy, rustdoc and exact owned production function/line/region/branch coverage;
  • Manifest V3 Compatibility run 31431277521: success;
  • CodeRabbit exact-head commit status: success;
  • GitHub reports the PR mergeable; and
  • no unresolved inline review threads are currently returned.

No predecessor-head result is transferred to this exact head.

Scope boundary

This lane adds no browser I/O, policy approval, capability grant, mapping from node-local actions to coarse business-risk ActionKind, CSS/XPath/raw DOM selectors, arbitrary JavaScript, persistence, secrets, network authority, workflow mutation or release claim. In particular, a node advertising Click cannot by itself determine whether the business action is submit/purchase/delete/legal-consent/etc.; business intent and policy risk classification remain a separate explicit boundary.

Keep Draft while #57/#52/#40 remain active. Canonical whole-product documentation remains owned by PR #44.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 85bf9aff-2eb3-4898-a0e5-048da61582d2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant