test(policy): prove extension grants cannot widen Agent authority - #62
test(policy): prove extension grants cannot widen Agent authority#62seonghobae wants to merge 5 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough브라우저 확장 프로그램 권한 격리 테스트를 추가했다. Changes확장 프로그램 정책 격리
Estimated code review effort: 2 (Simple) | ~10 minutes Mergeability Score: ⚪ Minimal · up to This PR adds regression tests enforcing extension and Agent authority boundaries; the supplied checks pass, and no actionable merge-blocking risk remains after normal review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head3690bf0a351b77957071f5399e9a31cec5f39e0b. -
Head SHA:
3690bf0a351b77957071f5399e9a31cec5f39e0b -
Workflow run: 32053097886
-
Workflow attempt: 1
Coverage evidence
Coverage Decision
- Result: FAIL
- Test evidence: not proven passing
- Docstring evidence: not proven passing when configured
- Failure count: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file: extension_policy_isolation.rs"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: extension_policy_isolation.rs"]
R1 --> V1["required checks"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage Decision
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file: extension_policy_isolation.rs"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: extension_policy_isolation.rs"]
R1 --> V1["required checks"]
|
Partial implementation of #27.
Buyer/security gap
OriginWeave has an explicit extension-to-Agent grant boundary and an independent typed action policy engine, but it needs integration regressions proving that permission to propose a typed action cannot widen Agent origin/action/secret authority or turn untrusted extension-produced content into trusted policy instruction material.
Exact current scope
Protected main is exact
0841d2ab3d8b5e60a03c0a8e818cf438e2716829. Current exact contributor head is3690bf0a351b77957071f5399e9a31cec5f39e0b.After protected main advanced through #179, this lane was reconciled non-destructively to the new protected-main lineage and then repaired for the strengthened extension-grant API. The sole semantic path remains
crates/originweave-policy/tests/extension_policy_isolation.rs.The current test boundary first proves that an exact extension/session/context/origin/unexpired grant genuinely allows
ProposeTypedAction, then independently proves five fail-closed Agent-policy outcomes:OriginNotReadable);Navigatecapability (MissingCapability(Navigate));WebContentcannot become a trusted policy instruction (UntrustedInstructionSource);RawValueinto an allowed secret fill (SecretBrokerRequired); andUnexpectedSecretMaterial).The grant-first assertion prevents a vacuous pass caused by an extension that lacked proposal authority in the first place.
Root-cause repair after protected-main movement
The reconciled predecessor head
3b002edf01d12f5d1dc943f44ed3517e2a9c606fcompiled against the old four-argument grant/request contract and failed current CI after #179 added canonical origin plus trusted-time expiry toExtensionAgentGrant/ExtensionAccessRequest. Current head3690bf0a351b77957071f5399e9a31cec5f39e0bapplies the narrow test-only repair: the grant and request now use the same canonical extension origin, an exclusive unexpired deadline, and trusted evaluation time. The five downstream denial expectations are unchanged.Exact-current evidence
On unchanged exact head
3690bf0a351b77957071f5399e9a31cec5f39e0b:31976441708: success;31976441644: success;31976441651: success;31976440068: success;31976440036: success;31976440134: success;31976440049: success;31976440071: success;31976439150: success;The earlier unassigned-runner SAST/Security queue was a transient control-plane condition routed to the existing organization incident
ContextualWisdomLab/.github#712; both exact-current-head runs later completed successfully without branch churn. That historical queue is therefore no longer a merge-readiness blocker and did not justify a source mutation merely to retrigger it.Architecture boundary
This PR adds no production API and no new authority. Chrome permission, an OriginWeave extension proposal grant, Agent capability, origin authority, approval, browser execution, secret resolution, trusted broker operation, and verified success remain distinct boundaries. The test does not claim that a real Chromium extension adapter or trusted secret broker exists.
Live governance / integration gate
Active organization ruleset
18156473, freshly re-read on 2026-08-17, requires the seven central required workflows, one approving review, stale-review dismissal after pushes, latest-push approval, and resolved review threads. There are no bypass actors. Passing automation is not an approving review.All currently applicable exact-head workflows are green and no review thread is open, but no qualifying independent current-head/latest-push formal approval is established. Protected-main
AGENTS.mdindependently forbids scheduled agents from merging, self-approving, altering workflows, adding secrets, weakening checks, tagging, or publishing. This scheduled actor therefore leaves the clean head unchanged while integration waits for qualifying independent approval; that wait blocks only integration.