feat(policy): classify raw extension proposals as untrusted - #78
feat(policy): classify raw extension proposals as untrusted#78seonghobae wants to merge 11 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
…olicy' into codex/restack-pr78-v2 Signed-off-by: Seongho Bae <me@seonghobae.me> # Conflicts: # CHANGELOG.md # crates/originweave-policy/src/lib.rs
|
Conflict RCA: parent PR #76 advanced from the child base |
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.