feat(policy): gate semantic-node actions on deterministic policy - #95
Draft
seonghobae wants to merge 4 commits into
Draft
feat(policy): gate semantic-node actions on deterministic policy#95seonghobae wants to merge 4 commits into
seonghobae wants to merge 4 commits into
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 11, 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 PR #93.
Buyer/security gap
PR #93 binds exact semantic-node authority to the business
ActionRequest, but deliberately does not authorize that request. A later browser adapter needs a type-level boundary that makesDecision::Allowmaterially different fromDenyandRequireApproval; otherwise a caller can retain a valid node binding and accidentally dispatch after inspecting policy without proving that policy actually allowed the same bound request.Dependency
This Draft is stacked on unchanged exact PR #93 head
c150e2daa0c890c8e2797ebb4c88a6220be13019, transitively on #58/#57/#52/#40. Keep Draft while those prerequisites remain active. No prerequisite check, review, status, or mergeability result is transferred.TDD / RCA sequence
3dfab9eeeee2e7dbc280bc69b2c8f04451df9dbfintroduced the policy-authorization contract, but CI run31543271705stopped first at canonical rustfmt. That setup failure is not counted as the intended RED.6c26e5d84e274f74d252ce70695ff2c2535ef57freached the intended missing-production boundary. CI run31543469473, Rust contracts job93950819527, passed repository contracts and canonical formatting, thencargo check --locked --workspace --all-targetsfailed E0432 because publicPolicyAuthorizedSemanticNodeActionandSemanticNodePolicyAuthorizationErrordid not exist. This is the valid RED.daf94aebc657658a93fb99a84e61b22db9ac67a1added the narrow typed authorization boundary. Exact production coverage was already successful, but CI run31543863426exposed one canonical rustfmt-only tuple layout in the new test. No production behavior was changed for that formatting failure.e26a2d07ae731ff35271299036fa1f43c8550039applies only that canonical formatting delta.Implemented boundary
PolicyAuthorizedSemanticNodeActionnow:SemanticNodeActionBinding::request()toDecision::Allow;Decision::Denyas typedSemanticNodePolicyAuthorizationError::Denied;Decision::RequireApprovalas typedApprovalRequiredrather than treating approval-required as authorization;The tests exercise allow, approval-required, untrusted-instruction denial, stale-document revalidation, and every current denial-error rendering branch.
Exact-head proof
On unchanged exact current head
e26a2d07ae731ff35271299036fa1f43c8550039against unchanged exact prerequisite #93 headc150e2daa0c890c8e2797ebb4c88a6220be13019:31544103569: success;93952783400: success;93952783458: success, including exact owned production function/line/region/branch enforcement;No predecessor-head check, review, status, or mergeability result is transferred.
Truth boundary
This slice proves only deterministic policy authorization of an already source-origin-bound semantic-node/business-action pair. It does not map
NodeActionKindto businessActionKind, authenticate the browser adapter, execute browser input, authorize destination/DNS/TCP/TLS/HTTP, resolve or disclose secrets, mint approval, prove a post-condition, establish trusted telemetry/provenance, or claim the real Chromium vertical slice complete. Policy allow does not replace the required immediate browser-authority revalidation or any later execution boundary.