feat(workflows): add sandboxed OriginWeave browser evidence - #1857
seonghobae wants to merge 15 commits into
Conversation
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough재사용 가능한 GitHub Actions 워크플로가 호출 리비전에서 MV3 호환성 검사를 실행합니다. 고정된 Chrome과 ChromeDriver를 SHA256으로 검증하고, Chromium 샌드박스를 설정한 뒤 결과와 검증 파일을 보존합니다. 문서와 계약 테스트가 실행 조건을 명시합니다. ChangesOriginWeave MV3 증거
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Caller as 호출 저장소
participant Runner as Actions 러너
participant Chrome as Chrome for Testing
participant MV3 as OriginWeave MV3 실행기
participant Artifacts as 아티팩트 저장소
Caller->>Runner: 재사용 워크플로 호출
Runner->>Chrome: 고정 Chrome과 ChromeDriver 다운로드
Chrome-->>Runner: 아카이브 및 체크섬
Runner->>MV3: 샌드박스 환경에서 호환성 검사 실행
MV3-->>Runner: JSON 결과 생성
Runner->>Artifacts: 검증 파일과 결과 업로드
Merge Risk: ⚪ Minimal · up to This adds a read-only reusable MV3 browser-evidence workflow with pinned browser artifacts, sandbox configuration, and bounded evidence retention. No current merge-blocking risk remains. 🚥 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 |
Triage: resolved merge conflict against
|
Resolve the CHANGELOG.md conflict by keeping both sides: this branch's entry above main's, matching the file's newest-first convention. No entry dropped. Verified after resolution: 2891 passed, 1 skipped, coverage 100%, interrogate 100%; zero conflict markers; `ruff check --select F821` clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Noema LLM review
The PR adds a reusable OriginWeave sandboxed MV3 evidence workflow plus documentation and a contract test. The workflow itself implements sensible controls: workflow_call triggering, read-only permissions, egress hardening with explicit allowed endpoints, repository identity check, pinned dependency versions, SHA-256 verification of downloaded Chrome/ChromeDriver archives, preservation of the Chromium sandbox via CHROME_DEVEL_SANDBOX, and bounded artifact retention. The contract test bolsters regressions on these invariants. However, the independent adversarial validation could not confirm concrete blocking regressions to justify request_changes. The documentation lines flagged in the workflow evidence are semantically adequate but represent conservative documentation of boundaries rather than defects. A formal comment rather than approval is warranted because source-level review probes were not independently falsified with definitive evidence within the bounded allowed locations, and documentation claims about consumer-run acceptance should be held to a high bar before treating this as fully evidenced.
Reviewed changed lines
.github/workflows/originweave-mv3-evidence.yml:5 (RIGHT): permissions: contents: read grants least privilege for a reusable workflow that executes an untrusted consumer-supplied script at exact caller revision..github/workflows/originweave-mv3-evidence.yml:30 (RIGHT): Repository identity check fails closed if a non-OriginWeave repo invokes the reusable workflow..github/workflows/originweave-mv3-evidence.yml:57 (RIGHT): sha256sum --check verifies the two downloaded archives before extraction, reducing supply-chain tampering risk..github/workflows/originweave-mv3-evidence.yml:63 (RIGHT): Root-owned, mode-4755 chrome_sandbox configuration combined with CHROME_DEVEL_SANDBOX preserves Chromium's renderer sandbox.tests/test_originweave_mv3_workflow_contract.py:13 (RIGHT): Contract test asserts the pinned checksums and sandbox-related settings, reducing accidental changes.
Adversarial validation
.github/workflows/originweave-mv3-evidence.yml:57 (RIGHT)confirmed: The two hard-coded SHA-256 values could be silently out of date relative to the Chrome archive and cause the workflow to fail at download verification time. — Contract test asserts the exact checksums; the workflow runs sha256sum --check before unzip, so a mismatch would fail the run rather than slip through silently..github/workflows/originweave-mv3-evidence.yml:85 (RIGHT)falsified: Upload step with if: always() could publish files from a failed run, misleading reviewers about consumer-run success. — Artifact name includes head sha and if-no-files-found: warn; but the artifact merely stores sha and JSON output without an explicit success marker, so a failed run could still publish data indistinguishable from success.- Residual risk: Source-level independent falsification was not completed with definitive evidence. A source change usually requires at least two distinct probes, but the available bounded context did not permit concrete confirmed regression counterexamples at the workflow or test call sites. Documentation-level concerns are advisory and not blocking.
Findings
- [low] docs/doctoring/originweave-mv3-evidence.md:7 (RIGHT): The requirement that an OriginWeave caller pin the workflow to a specific reviewed protected-main commit is documented but has no automated enforcement in the workflow itself.
- [low] docs/doctoring/originweave-mv3-evidence.md:15 (RIGHT): Feature acceptance wording relies on a consumer-run success signal that is not machine-validated by this reusable workflow.
- [low] .github/workflows/originweave-mv3-evidence.yml:85 (RIGHT): Upload uses if: always() and can attach artifacts from failed runs; artifact metadata does not explicitly distinguish successful from failed browser evidence.
- Result: COMMENT
- Head SHA:
afeffe3b6a7a5494be1dae12322a0fc2a78c6efe - Reviewer credential:
noema-review-github-app-refresh - Actor:
cwl-noema-review[bot]
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
afeffe3b6a7a5494be1dae12322a0fc2a78c6efe. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- Strix Security Scan/strix: FAILURE (https://github.com/ContextualWisdomLab/.github/actions/runs/34320064083/job/102394819986)
- Strix Security Scan/strix: failure (https://github.com/ContextualWisdomLab/.github/actions/runs/34320064083/job/102394819986)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: originweave-mv3-evidence.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: originweave-mv3-evidence.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Repository file: AGENTS.md"]
S2 --> I2["repository behavior"]
I2 --> R2["Review risk: Repository file: AGENTS.md"]
R2 --> V2["required checks"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Repository file: CLAUDE.md"]
S4 --> I4["repository behavior"]
I4 --> R4["Review risk: Repository file: CLAUDE.md"]
R4 --> V4["required checks"]
Evidence --> S5["Docs: originweave-mv3-evidence.md"]
S5 --> I5["operator or user guidance"]
I5 --> R5["Review risk: Docs: originweave-mv3-evidence.md"]
R5 --> V5["docs review"]
Evidence --> S6["Test: test_originweave_mv3_workflow_contract.py"]
S6 --> I6["regression suite"]
I6 --> R6["Review risk: Test: test_originweave_mv3_workflow_contract.py"]
R6 --> V6["targeted test run"]
OpenCode Review Overview
|
|
Exact-head gate RCA for Canonical ownership is now handed to |
|
OriginWeave consumer revalidation (2026-09-15): this owner PR is still open/Ready at Please treat this as a repair finding, not a close condition: non-force adopt/restack the six valid #1857 deltas onto the current protected generation under live AGENTS/CLAUDE/workflow contracts, preserve the least-privilege sandbox-helper boundary, resolve any current-generation conflicts without copying stale workflow blobs, then regenerate owner RED→GREEN and immutable/versioned consumption evidence. OriginWeave will not work around this by adding |
|
Fresh owner review adds one repair requirement before any non-force current-generation restack can be considered complete. The PR's reusable |
|
OriginWeave current-head consumer evidence has now executed and sharpens this owner repair. On The leaf run intentionally does not infer sandbox/AppArmor/helper cause from redacted ChromeDriver text. However, this central PR already carries the owner-scoped mechanics that prior OriginWeave evidence validated causally: root-own the archive A second exact owner finding surfaced in that same current run and must not be ignored as a warning-only detail. The evidence upload step uses No workflow source was changed from the scheduled OriginWeave lane. This is an owner-path handoff: current-main semantic restack, preserve validated sandbox mechanics, replace the deprecated action pin after review, then obtain fresh exact-head central checks/review before any consumer replay. |
|
Focused re-review requested on exact Scope: ordinary/non-force protected-main adoption; Node 24 artifact-action RED Please treat this as source/static review only. Hosted exact-head checks and OriginWeave real-browser acceptance remain separate. |
|
I will review the protected-main adoption, the Node 24 artifact-action pin, and the unchanged sandbox, caller, egress, and evidence boundaries. I will not treat hosted checks or OriginWeave real-browser acceptance as review evidence in this pass.
|
|
Currentness handoff — supersedes only the stale gate snapshot in the PR body; exact source ownership and historical evidence remain unchanged. Exact head is still The immutable Chrome/ChromeDriver No rerun, no-op wake commit, runner-label change, sandbox weakening, force push, merge, tag, publication, or release was performed. |
Summary
150.0.7871.129archives before execution;Current authority — 2026-09-20 KST
Exact head is
a6d16c0f36e31da539ee98d550277d2169e33514on protectedmain@e6334e229581a918e2f22de18733b76fa65d7e71. The branch is ordinary/non-force reconciled: compare is ahead 15 / behind 0, merge base exactly protected main, and the effective diff is exactly three owner paths:.github/workflows/originweave-mv3-evidence.ymldocs/doctoring/originweave-mv3-evidence.mdtests/test_originweave_mv3_workflow_contract.pyReconciliation commit
09f3506b7ecc8f09ed766b3f7e804e05cc8a8139has ordered parents prior owner headafeffe3b6a7a5494be1dae12322a0fc2a78c6efeand protected maine6334e229581a918e2f22de18733b76fa65d7e71; no force push, destructive rebase, or stale whole-file restoration was used. GitHub reports mergeable and unresolved review threads are zero.Node 24 action-runtime repair
The previous owner workflow pinned
actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02(v4.6.2). Real OriginWeave browser-evidence execution had already emitted Node-20 deprecation pluspunycode/url.parse()warnings while GitHub forced that action onto Node 24. Warning suppression is not accepted as a repair.49fd0e3615ed0cfddca3af9c6d9ff011a6e00194changes onlytests/test_originweave_mv3_workflow_contract.py(+3/-0) to require the exact Node-24-native upload-artifact v7.0.1 commit and reject the old v4.6.2 SHA.5639dc6ab9b9575654dd2626bc06910c03952981changes only.github/workflows/originweave-mv3-evidence.yml(+1/-1) toactions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1.actions/upload-artifacttagv7.0.1resolves to that exact commit and itsaction.ymldeclaresruns.using: node24.a6d16c0f36e31da539ee98d550277d2169e33514records protected-main adoption, RED→GREEN, and the consumer replay boundary.The Chrome/ChromeDriver version and archive SHA-256 values, root-owned mode-4755
chrome_sandbox,CHROME_DEVEL_SANDBOX, declared egress, exact caller checkout, read-only permission set, evidence paths/retention, and no-secrets boundary are unchanged.Current gates
This PR remains Draft. Exact-head SAST Semgrep
35450581183is terminal success. CodeQL PR35450581222, Security Scan35450581194, and Python Security35450581337remain queued/nonterminal. The partial success is not aggregate hosted GREEN and predecessor evidence does not transfer.A focused CodeRabbit re-review was requested on
a6d16c0..., but the bot reported its included review limit exhausted for that review window; the last completed review is predecessor evidence and does not transfer. No exact-head qualifying independent approval is claimed.This central owner does not prove OriginWeave product acceptance. After this owner lands on protected main, the OriginWeave consumer must pin the immutable protected revision and rerun the real Chrome/ChromeDriver evidence. Browser GREEN still requires successful session creation, page-observed presentation post-conditions, native interaction, reset, page-observed return to baseline, and cleanup. Command ACK, repository CI, or this owner workflow's source acceptance alone is non-passing.
Chrome/ChromeDriver
150.0.7871.129is an immutable historical qualification target for this owner generation, not a claim that 150 is the current Stable browser. Any current-Stable browser qualification belongs in a separate versioned generation with its own exact archive digests, sandbox proof, session creation, page-observed behavior, reset, cleanup, and evidence receipt rather than mutating this historical receipt in place.The old branch-only AGENTS/CLAUDE
uv run pytestguidance and superseded CHANGELOG hunk were not restored as stale whole-file blobs during this owner reconciliation; the effective owner surface is intentionally the three paths above. If that generic guidance is still wanted, it belongs in a separately current-base documentation change rather than widening this browser-workflow owner lane.No self-approval, gate weakening, workflow/ruleset/secret mutation outside this owner delta, protected-main merge, tag, publication, or release is authorized by this state.
Refs #1792 and ContextualWisdomLab/OriginWeave#212.