feat(policy): classify raw extension proposals as untrusted - #78
Draft
seonghobae wants to merge 10 commits into
Draft
feat(policy): classify raw extension proposals as untrusted#78seonghobae wants to merge 10 commits into
seonghobae wants to merge 10 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 #76.
Buyer/security gap
PR #76 composes exact extension proposal authority with ordinary action policy, but it accepts an already-constructed
ActionRequest. A raw extension-message adapter must not be able to construct that request withInstructionSource::UserorEnterprisePolicymerely because extension transport delivered the message, and it must retain the parent’s current origin and trusted-time/expiry authority checks.Live dependency / stack state
This Draft is stacked on current exact PR #76 head
fc9c7348d367a0b6295d8e2f0289b0262ef3675f. Current exact contributor head is663eb89c55cf6c2505c2cc115b491bda49d89bf5.Fresh exact compare is ahead 10 / behind 0, with merge base exactly equal to the live prerequisite. Relative to #76 the child delta is limited to:
CHANGELOG.md;crates/originweave-policy/src/lib.rs; andcrates/originweave-policy/tests/extension_message_action_proposal.rs.Keep Draft while #76/#74 remain active. No prerequisite check, review, status, coverage, mergeability, or predecessor result transfers to this child.
TDD / dependency repair lineage
dbe06efc006fda316201ba295af4b933a4b41f14established the missing raw-message trust boundary before production exposed it.ExtensionMessageActionProposalandevaluate_extension_message_action_proposalso raw extension-produced message content has no instruction-source selector and is internally classified asInstructionSource::WebContent.0579e7a27c6dadd56b653938ed0fcd1ff08fef93had diverged from the new parent: exact compare from live feat(policy): compose extension proposals with action policy #76 to that child was ahead 5 / behind 8 with an obsolete merge base.581ff56d91212b12c66ce9e20a95442a7949924freached full tests/Clippy/rustdoc behavior but exposed only canonical rustfmt import wrapping. Current head663eb89c55cf6c2505c2cc115b491bda49d89bf5applies only that formatting correction; no authority or evidence gate was weakened.Implemented boundary
ExtensionMessageActionProposalandevaluate_extension_message_action_proposalnow:ActionRequestinternally withInstructionSource::WebContent;now_epoch_secondsremains a trusted caller input; extension/page content cannot provide or attest it through this API.Exact-current GREEN evidence
On unchanged exact head
663eb89c55cf6c2505c2cc115b491bda49d89bf5against unchanged exact prerequisitefc9c7348d367a0b6295d8e2f0289b0262ef3675f:32084014823: success;95552634445: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;95552634441: exact owned-production function, line, region, and branch measurement and enforcement success;Security Scan, SAST, and central OpenCode/Noema/Strix/required-workflow evidence are not returned for this exact stacked head and are therefore absent, not passing. No predecessor, prerequisite, pre-reconstruction, queued, skipped, cancelled, absent, synthetic-merge, stale, status-only, or model-only evidence is promoted as current proof.
Truth boundary / remaining #27 work
A separately trusted future adapter may authenticate independent user or managed-policy provenance through a different explicit boundary. This lane does not parse Chromium extension messages, establish transport sender authenticity beyond the existing extension/session/context/origin/time grant, execute browser input, resolve secrets, verify post-conditions, persist managed-extension policy, or complete issue #27.
This scheduled actor does not merge, self-approve, alter workflows, add secrets, weaken checks, tag, or publish.