feat(policy): compose extension proposals with action policy - #76
Draft
seonghobae wants to merge 5 commits into
Draft
feat(policy): compose extension proposals with action policy#76seonghobae wants to merge 5 commits into
seonghobae wants to merge 5 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 #27, stacked on PR #74.
Buyer/security gap
PR #74 proves that exact
ProposeTypedActionextension authority and ordinary typed-action policy are separate fail-closed boundaries. It also identifies the remaining production-composition gap: without one narrow composition API, a future trusted extension adapter could accidentally check only extension access or only Agent action policy.Dependency
This Draft is stacked on unchanged exact PR #74 head
0d492564aa61c9094f1315ee4e234b46a1e63a6cand must remain Draft while #74 is active. It is not independently integrable before that prerequisite.TDD / RCA sequence
5c0e5be959fabe53367315a574840bdb1c4d175cexposed only canonical rustfmt drift, so it was not counted as the intended RED.af629d3aebadb67041ba28b97dfab0cc01dcf283established the real production-boundary RED in CI run31471940073, Rust contracts job93717027443: repository contracts and rustfmt passed, thencargo check --locked --workspace --all-targetsfailed because publicExtensionProposalDecisionandevaluate_extension_action_proposaldid not exist.dfb411c219a8d935cf0a99dab3f9585e2400e3d8added the smallest composition boundary; CI then exposed only canonical import wrapping inoriginweave-policy/src/lib.rs.c65a7c14036e052dee26b7fa6298a7d4e8353dbcapplied exactly that rustfmt delta and passed full Rust contracts plus exact owned production coverage in CI run31472397247.3d2fff3daa766e5e6d7f25e7727a18e01ff52a2eadds only the truthful Unreleased changelog entry. Fresh CI run31472688287succeeds on this exact head.Implemented boundary
evaluate_extension_action_proposalnow:ExtensionAccessRequestfor the supplied extension, browser session, browsing context andExtensionAgentCapability::ProposeTypedAction;ActionRequestunchanged through the existing deterministic Agent policy;ExtensionProposalDecisiondistinguishing extension-access denial from the ordinary action-policy result.Focused integration regressions prove missing grant denial, non-proposal-capability denial, exact proposal-grant success into ordinary policy, preservation of
WebContentas untrusted instruction, and preservation of the independent R3 approval requirement for broker-handle secret fill.Exact-current proof
On exact head
3d2fff3daa766e5e6d7f25e7727a18e01ff52a2eagainst unchanged exact prerequisite #74 head0d492564aa61c9094f1315ee4e234b46a1e63a6c:31472688287: success;93719296349: success, including repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy and rustdoc;93719296436: success, including exact owned production function/line/region/branch enforcement;No predecessor-head check or review is transferred to the current head.
Truth boundary
This is a pure policy-composition prerequisite, not a Chromium extension adapter. It does not parse extension messages, authenticate user/enterprise instruction provenance, transform arbitrary extension/page data into an
ActionRequest, execute browser input, resolve or disclose secrets, verify a post-condition, persist policy, alter managed-extension configuration, or close issue #27. A later trusted adapter must construct the typed request and its instruction-source classification from independently trusted context; extension-provided content/messages remain untrusted and cannot choose their own trust class. Chrome permission, extension proposal permission, Agent capability/origin authority, high-risk approval, secret authority, browser execution and verified success remain separate authorities.