Skip to content

fix(opencode): materialize every coverage lock input - #2286

Draft
seonghobae wants to merge 18 commits into
mainfrom
fix/opencode-coverage-lock-build-context
Draft

seonghobae wants to merge 18 commits into
mainfrom
fix/opencode-coverage-lock-build-context

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Current authority

Status: OPEN / Draft / Proposed / do not merge.

Canonical repair

Required OpenCode coverage failed before target-PR execution because the isolated Docker build context referenced requirements-noema-document-ci-hashes.txt without materializing it. This lane remains the canonical owner for that control-plane defect:

  • validate both trusted lockfiles as regular non-symlink files;
  • copy both lockfiles into the isolated coverage-tool build context;
  • pin the complete Dockerfile input boundary in executable contracts;
  • retain Gap/CHANGELOG traceability under this owner.

The source repair does not weaken coverage, read consumer source, synthesize status, or turn an infrastructure failure into a product finding.

Dependency-cycle repair

The predecessor exact head c4a73a174e6bf54cde1ac996bc7df1a94de949fa reached real hosted execution. SAST Semgrep 35663211484 and Security Scan 35663211642 succeeded. Python Security 35663211397 failed only because protected-main requirements-strix-ci-hashes.txt still pinned AnyIO 4.14.0; pip-audit reported CVE-2026-63374, CVE-2026-64847, and CVE-2026-63349, all fixed in 4.14.2. That exact dependency delta is owned by #2278.

At the same time, #2278 exact 8a5251bf... cannot obtain a valid OpenCode coverage/review receipt while protected main still has this #2286 build-context defect: run 35683820627, job 106642970542 failed at Dockerfile line 89 because /requirements-noema-document-ci-hashes.txt was absent, before any target-PR test execution; OpenCode explicitly reported no source-backed #2278 product finding.

To break that circular foundation dependency without copying source or weakening either gate, ordinary two-parent commit 42e4198f... adopts #2278 as ancestry and uses its exact requirements-strix-ci-hashes.txt blob while retaining the #2286 tree. Against protected main the effective delta is therefore the five #2286 owner paths plus the single #2278 dependency-owner path. #2278 remains open until this successor is verified/protected; it is not closed merely because its delta is now ancestral here.

Evidence boundary

Predecessor local/source evidence remains: focused GITHUB_ACTIONS=true 77 passed; full warnings-as-errors 3,369 passed / 28 skipped / 40 subtests; compileall and git diff --check passed. These receipts do not transfer as exact-head hosted acceptance.

Fresh exact-head hosted runs on unchanged 42e4198f... have now materially advanced:

  • SAST Semgrep 35937114873: SUCCESS
  • Agent Review Runtime Quality CI 35937114942: SUCCESS
  • Python Security 35937115044: SUCCESS
  • Security Scan 35937115071: SUCCESS
  • CodeQL PR 35937114953: queued

The four completed successes are genuine current-head evidence. The previous AnyIO 4.14.0 Python Security failure is therefore closed on this composite exact head, and Security Scan is likewise terminal-success. CodeQL remains nonterminal, so this is still not exact-head GREEN. There is still no qualifying independent APPROVED review on exact 42e4198f.... A real post-repair coverage-image canary is also still required; protected-main consumers must not be woken with no-op commits while the owner is unintegrated.

Landing boundary

Keep Draft until CodeQL and any other applicable exact-head gates are terminal, source-relevant failures are repaired, current-head independent review requirements are met, and the coverage-image repair has real acceptance. Then integrate normally into protected main and let #2278 and downstream consumers reconcile by ordinary/non-force ancestry.

No force push, destructive rebase, self-approval, review dismissal, synthetic status, no-op freshness commit, blind rerun, source copying, or gate weakening is authorized.

seonghobae and others added 12 commits September 18, 2026 18:39
Semgrep OSS and Bandit B310 Medium alerts on main flagged dynamic urllib
use in CodeQL identity and Strix evidence helpers. Fail closed unless the
URL is https://api.github.com so file:// and arbitrary hosts cannot reach
urlopen.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps [anyio](https://github.com/agronholm/anyio) from 4.14.0 to 4.14.2.
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Commits](agronholm/anyio@4.14.0...4.14.2)

---
updated-dependencies:
- dependency-name: anyio
  dependency-version: 4.14.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Replace retired urllib urlopen monkeypatches with direct CodeQL and Strix dedicated-opener patches. Remove the PR-specific global conftest bridge so both security helpers exercise the same explicit transport boundary without live network access.
Clears Bandit/Semgrep B310 on shared scripts/ci urlopen so the anyio bump is not blocked by unrelated SAST.
Restore the unrelated #2269 URL-opener paths to protected main while retaining the AnyIO 4.14.2 pin and hashes. The URL/redirect responsibility remains in canonical #2279; this PR owns only the dependency security update.

Validated with 56 focused tests, 3,335 full tests plus 28 skipped/40 subtests, warnings-as-errors, diff check, and pip-audit reporting no known vulnerabilities.
@coderabbitai

coderabbitai Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Understand this PR’s impact

Explore downstream dependencies and potential security impact with Blast Radius.

View blast radius →

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7de87243-6609-4ca1-b22c-2df406857e9a

📥 Commits

Reviewing files that changed from the base of the PR and between e6334e2 and c4a73a1.

📒 Files selected for processing (5)
  • .github/workflows/opencode-review-dispatch.yml
  • CHANGELOG.md
  • docs/product-technical-gap-baseline.md
  • tests/test_opencode_agent_contract.py
  • tests/test_pr_review_autofix_nvidia_nim_contract.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

OpenCode coverage 이미지 빌드가 requirements-noema-document-ci-hashes.txt를 신뢰된 빌드 컨텍스트에 포함합니다. 워크플로는 파일 유형을 검증하고, 계약 테스트와 문서가 이 동작 및 후속 검증 조건을 반영합니다.

Changes

OpenCode coverage lock context

Layer / File(s) Summary
신뢰된 lockfile 빌드 컨텍스트
.github/workflows/opencode-review-dispatch.yml, tests/test_opencode_agent_contract.py, tests/test_pr_review_autofix_nvidia_nim_contract.py
워크플로가 requirements-noema-document-ci-hashes.txt를 일반 비심볼릭 링크 파일인지 검증하고 빌드 디렉터리에 0644 권한으로 복사합니다. 계약 테스트가 경로, 검증 조건, 복사 동작을 확인합니다. 리뷰어 workflow blob SHA도 갱신합니다.
Coverage lock context 기록
CHANGELOG.md, docs/product-technical-gap-baseline.md
Changelog와 기술 기준 문서가 두 lockfile의 검증, 복사, coverage 게이트를 기록합니다.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: claude

Merge Risk: ⚪ Minimal · up to c4a73

No concrete implementation or documentation defect remains. Hosted exact-head acceptance is pending but does not establish a current failure.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (3 skipped: 3 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 모든 coverage lock 입력을 빌드 컨텍스트에 materialize하는 핵심 변경을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exact-head COMMENT review for canonical OpenCode prerequisite e43a75b31177b2348b4f7afbf8298eea29a0c334 (tree 804448e51a518375c2856cbcd5907cac69021bf5).

The isolated coverage-image Dockerfile copied two lockfiles while staging only one. This head validates and stages both trusted regular non-symlink lockfiles before build. Focused GITHUB_ACTIONS=true: 77 passed. Full warnings-as-errors: 3,369 passed / 28 skipped / 40 subtests. compileall and diff check PASS. Five effective canonical-owner paths; no new source finding.

COMMENT only, not approval. Keep Draft until exact-head hosted evidence and real coverage-image acceptance complete.

Copy link
Copy Markdown
Contributor Author

Exact-head prerequisite receipt

Replacement Checks are queued: Runtime, Security, Python Security, SAST, CodeQL. Draft / Proposed; no merge or auto-merge.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exact-head traceability repair review for c4a73a174e6bf54cde1ac996bc7df1a94de949fa (tree 654b0b80d7e276057a314a4b124934c9352ffe28).

RCA: the Gap row named downstream failure carrier .github#2266 as the PR where the canonical RED/GREEN repair was prepared. The actual central owner repair is this PR, .github#2286; #2266 remains consumer evidence and prerequisite beneficiary.

Ordinary-forward commit c4a73a17… changes only docs/product-technical-gap-baseline.md (+1/-1), preserves the five-path workflow/test repair tree, and updates the PR body to the live head/tree. Direct exact-blob verification confirms the Gap row now names #2286. No force update or predecessor evidence transfer was used.

This is COMMENT evidence, not approval. The five fresh exact-head workflows are queued/nonterminal, real coverage-evidence image-build acceptance is still absent, and independent approval remains required. Keep Draft/Proposed; do not merge, auto-merge, bypass, or rerun unchanged evidence.

Copy link
Copy Markdown
Contributor Author

Current exact-head evidence update: 42e4198fa012eb24596e7984d77e27f0905348d6 now has Python Security run 35937115044 terminal SUCCESS in addition to SAST Semgrep 35937114873 and Agent Review Runtime Quality CI 35937114942 SUCCESS. CodeQL PR 35937114953 and Security Scan 35937115071 remain queued. The head is therefore still not GREEN and remains Draft; no downstream #2291/#2109/#2275/#2276 reconciliation is justified yet. Real post-repair coverage-image acceptance and qualifying independent current-head approval also remain required.

Copy link
Copy Markdown
Contributor Author

Current exact-head authority update for 42e4198fa012eb24596e7984d77e27f0905348d6: the required CodeQL wrapper has moved from queued to first-pass terminal FAILURE, but the evidence does not establish a #2286 source/SARIF finding.

CodeQL PR 35937114953 detected languages successfully. Its Actions and Python compatibility jobs both completed Read current-head CodeQL dispatch verdict and then failed at the fail-closed enforcement step because no authenticated terminal dispatch verdict was yet available. The coordinator job subsequently completed Dispatch current-head CodeQL scan successfully and created exact producer run 35991991716, bound to this PR/head/base/required-run tuple. That producer is still queued at this fresh read. Direct statuses on this head contain no codeql-dispatch/actions or codeql-dispatch/python terminal verdict yet.

So the current acceptance boundary is: Semgrep, Runtime Quality, Python Security, and Security Scan remain exact-head SUCCESS; CodeQL remains non-accepted pending canonical producer + settlement, not a proven source RED and not GREEN. Keep Draft. Do not blind-rerun, synthesize status, no-op wake, or move downstream #2291/#2109/#2275/#2276. Real post-repair coverage-image acceptance and qualifying independent current-head approval remain separate requirements. Canonical lifecycle/publication tracking is .github#1929.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Coverage-owner handoff: Draft #2363 carries this PR’s exact 42e4198fa012eb24596e7984d77e27f0905348d6 delta onto #2333’s remote 9c6d053742856f4969504474f7e8f4c6378aaffc without changing either owner branch. Its merged workflow pin is ca90c602d95512ccba3daa581d44464e8871c63c; focused route, coverage-context and pin tests pass 5/5 normally and in GITHUB_ACTIONS=true. This PR remains the coverage owner and OPEN. The #2333 owner has 28 separate unpushed local commits, so re-evaluate #2363’s diff and pin after that branch advances. Exact-head hosted checks and independent approval are still required; #2291 binder and #2276 CodeQL permission remain separate.

seonghobae added a commit that referenced this pull request Sep 26, 2026
Preserve #2385, #2359, and #2286 as explicit parents while composing their byte-identical overlapping locks and endpoint contract. This creates one exact-head bootstrap stack for the coverage-image, 100% coverage, AnyIO audit, and CodeQL dispatch failures without force-push, rebase, or delta disposal.

Copy link
Copy Markdown
Contributor Author

Foundation convergence receipt: #2385 exact head 950ab88553fe7415a73401c7ccc2e4749554395e preserves this exact head f229816183d864af30b6c6f28d3c47ae17ae4b72 as an explicit parent. Recursive-tree comparison confirms every #2286 effective path is present byte-for-byte in the 18-path composite; its overlaps with #2359 and #2385 were identical before composition. #2286 remains OPEN/Draft; this is not retirement or transferred check/review evidence. Await independent exact-head acceptance and protected integration before any successor/closure decision.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant