test(policy): prove extension grants cannot bypass secret authority - #63
test(policy): prove extension grants cannot bypass secret authority#63seonghobae 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)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review. 📝 WalkthroughWalkthrough확장 프로그램의 Changes확장 프로그램 비밀 격리
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This localized regression test verifies that extension proposal permission cannot bypass the required R3 approval boundary. No actionable merge-blocking risk remains after normal checks and 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 headb80963fb81bed1ac4a01c1118f498af9765e2b79. -
Head SHA:
b80963fb81bed1ac4a01c1118f498af9765e2b79 -
Workflow run: 32132762660
-
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_secret_isolation.rs"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: extension_secret_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_secret_isolation.rs"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: extension_secret_isolation.rs"]
R1 --> V1["required checks"]
|
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 headb80963fb81bed1ac4a01c1118f498af9765e2b79. -
Head SHA:
b80963fb81bed1ac4a01c1118f498af9765e2b79 -
Workflow run: 32139218511
-
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_secret_isolation.rs"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: extension_secret_isolation.rs"]
R1 --> V1["required checks"]
Partial implementation of #27 and security evidence for #10.
Buyer/security gap
OriginWeave separates Chromium extension permission from Agent capability, and protected main requires brokered secret delivery plus ordinary risk approval for
FillSecret. PR #62 independently covers extension proposal isolation for origin, capability, untrusted instruction, raw-secret delivery, and unexpected secret material. This PR remains deliberately narrowed to the non-duplicate approval-composition proof.Current unique scope
Current protected main is exact SHA
0841d2ab3d8b5e60a03c0a8e818cf438e2716829. Current exact contributor head isb80963fb81bed1ac4a01c1118f498af9765e2b79.GitHub currently reports the PR open, Ready and mergeable, directly based on current protected main. The only changed path is
crates/originweave-policy/tests/extension_secret_isolation.rs.The exact current regression proves:
ProposeTypedAction;FillSecret, exact readable/writable origin authority, and a broker-handle delivery request; butRequireApproval(RiskClass::R3)rather thanAllow.The grant is asserted first so the result cannot pass vacuously because the extension lacked proposal authority.
Concurrent-movement reconciliation
The predecessor body described head
a4595c393f459f57bfe2199ace44271f246751c4against an older protected-main lineage. Before this scheduled writer attempted the expected compatibility repair, the branch had independently advanced tob80963fb81bed1ac4a01c1118f498af9765e2b79. The intervening delta was inspected rather than raced or overwritten.That current head already applies the exact required compatibility adaptation from protected-main #179:
ExtensionAgentGrant::newnow carries the canonical extension origin plus exclusive expiry, andExtensionAccessRequest::newcarries the same origin plus trusted evaluation time. The other writer therefore already satisfied the intended repair; this lane adopts and verifies that implementation instead of duplicating it.Duplicate-avoidance lineage
The original branch also tested raw-secret rejection and unexpected secret material. Those cases became owned by PR #62, so they were removed here to avoid parallel duplicate maintenance while preserving this PR's distinct approval-boundary proof. Historical predecessor heads are lineage only and are not promoted as current evidence.
Exact-current-head evidence
On unchanged exact head
b80963fb81bed1ac4a01c1118f498af9765e2b79:31976481133: success;31976481161: success;31976481139: success;31976480255: success;31976480232: success;31976480270: success;31976480260: success;31976480223: success;31976479561: success;Skipped diagnostic-only steps are not represented as passing evidence. No predecessor-head, synthetic-merge, queued, skipped, cancelled, absent, stale, status-only, or model-only evidence is promoted as current proof.
Integration gate
Active organization ruleset
18156473requires the central required workflows, one approving review, dismissal of stale approvals after pushes, latest-push approval, and resolved review threads. Passing automation and author activity are not substitutes for the qualifying independent current-head approval.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.Truth boundary
This PR adds no secret broker, protected value, browser adapter, extension API, new capability, production API, persistence, workflow mutation, model call, approval evidence, or release claim. It proves only that extension proposal permission cannot manufacture the separate R3 approval required by protected-main Agent policy. Issue #10's trusted broker and issue #27's real extension/runtime boundaries remain open.
Summary by CodeRabbit