fix(coverage): install npm workspaces from root lock - #1411
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: true📝 WalkthroughWalkthrough중첩된 npm 워크스페이스 패키지가 가장 가까운 검증된 조상 lock 파일을 사용하도록 설치 경로를 변경했습니다. 워크플로 검사 헬퍼와 관련 계약 검사를 갱신했습니다. Changesnpm 워크스페이스 커버리지 설치
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: 🔵 Low · up to The PR fixes workspace-root npm installation while preserving the existing trust and offline-installation safeguards. A quick-gate pattern may still falsely reject valid workflows by matching nested step conditions, so the change is mergeable with explicit follow-up to narrow that match. Sequence Diagram(s)sequenceDiagram
participant CoverageStep
participant npm_lock_project_dir
participant LockProject
participant npm
CoverageStep->>npm_lock_project_dir: npm lock 프로젝트 디렉터리 해석
npm_lock_project_dir->>LockProject: 일반 lock 파일 확인
LockProject-->>CoverageStep: 프로젝트 디렉터리 반환
CoverageStep->>npm: 해당 디렉터리에서 오프라인 npm ci 실행
npm-->>CoverageStep: 설치 완료 후 원래 디렉터리 복귀
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation 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 5 functions across 2 files. (3 skipped: 2 unsupported, 1 too large.) ✨ 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 |
…-workspace-coverage # Conflicts: # CHANGELOG.md
…space-coverage # Conflicts: # CHANGELOG.md # tests/test_pr_review_autofix_nvidia_nim_contract.py
|
Resolved the stale merge conflict against current Conflicts, both mechanical (no design decision involved):
The workflow file itself ( Test evidence (post-merge, in an isolated worktree):
No Generated by Claude Code |
|
Codex is reconciling this PR with current |
|
Reconciled current |
|
Current exact-head verification for |
|
Addressed CodeRabbit’s exact-head finding in |
|
Fresh full-suite verification on current exact HEAD |
|
Current exact-head evidence for |
|
@opencode-agent Review exact current head |
Resolves the five-file conflict against protected main (fb2ae81): - .github/workflows/noema-review.yml and tests/test_required_workflow_queue_contract.py: main's side. This branch's e09206b keyed the Noema concurrency group on cancelled workflow_run events; main has since removed the workflow_run trigger from noema-review entirely (Noema reviews PRs standalone; the contract now asserts `workflow_run:` is absent), so there is no cancelled-run eviction left to isolate and the branch's change has no object. Both files now equal main. - scripts/ci/test_strix_quick_gate.sh: both sides added required_workflow_bootstrap_has_if; kept this branch's exactly-four-space '^ if:' (job-level keys only, the CodeRabbit-driven narrowing from bc965ea) over main's '^[[:space:]]*if:', and took main's SIGPIPE comment and its #1848 concurrency assertions. main's 20 000-line pipe-buffer fixture uses a four-space if:, so both of main's own checks still pass. - tests/test_pr_review_autofix_nvidia_nim_contract.py: REVIEW_DISPATCH_BLOB_SHA recomputed from the merged workflow (fc05ee0); neither side's value could be right because both sides edit opencode-review-dispatch.yml and git auto-merged it. - CHANGELOG.md: kept both sides' [Unreleased] bullets. The branch's delta against main is now exactly its stated scope: the npm_lock_project_dir ancestor-lock search in opencode-review-dispatch.yml, its contract tests, the quick-gate regex, the blob pin and one CHANGELOG bullet. Touched contracts: 184 passed, 1 skipped. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPmJErfkcHer4UVEgrQxUX
|
Resolved the merge conflict against current
The branch's delta against Verification on the merged tree: touched contracts ( Left as Draft: the 2026-09-05 02:27Z Draft conversion (which retired this head's queued review scans) was not mine, so whether to mark it ready is the owner's call — it is mergeable now. Generated by Claude Code |
…ction measurement The 2026-09-06 follow-up now records the confirming evidence rather than leaving the effect unverified. .github#1946 run 34008655765 measured 180 s per gateway request (two 90 s tries on the one ready route) against 540 s under the old pin, and the three post-advance Strix scans show attempt=1/1 throughout, so contextual-orchestrator#1081 is closed. It also separates what remains from what was fixed: capacity (#1948), with a four-run census 08:27-09:11Z in which #1187, #1411 (noema-review and strix) and #1884 all report identical preflight evidence -- 6 probes, 6 x 429 across three accounts, 18 candidates skipped, 0 ready -- and contextual-orchestrator#1082, where a 90 s passthrough timeout surfaces as 500 internal_error with _record_failure unreachable, so the same silent route is re-selected on every retry. Measurements from a second lane's postings on #1948; job logs re-read directly for the four boots cited here. Documentation only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPmJErfkcHer4UVEgrQxUX
|
Both review failures on
The six rejections are 429 from Three other heads hit the same wall in the same 45 minutes: The two CodeQL compatibility failures are the designed dispatch-pending state ( Holding this head's re-runs: a re-run now would spend six more probes against the same exhausted keys, which is why other lanes are holding theirs too. I will spend one when an artifact on this pool shows Generated by Claude Code |
One conflict, in `tests/test_pr_review_autofix_nvidia_nim_contract.py`: both sides moved `REVIEW_DISPATCH_BLOB_SHA`, the content pin on `.github/workflows/opencode-review-dispatch.yml`. The workflow itself auto-merged (this branch's dispatch change plus main's `#1960` Strix sandbox finding), so neither literal describes the merged file. Recomputed from it: git hash-object .github/workflows/opencode-review-dispatch.yml a9b57d2 `test_review_dispatch_workflow_blob_is_pinned` re-derives the value from the working tree, so a mistaken pick fails rather than passing silently. Verification: full suite 2957 passed, 1 skipped, 21 subtests passed; `bash -n scripts/ci/test_strix_quick_gate.sh`; `git diff --check` clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPmJErfkcHer4UVEgrQxUX
|
Standing down on Read from this PR's own job ( The dispatch succeeded; only the terminal exact-head verdict is outstanding, and the shard fails closed while it waits. The No manual re-run — it would re-enter the same PR state is otherwise clean: Still a draft deliberately: the central review path ( Generated by Claude Code |
|
I read the Two hours of scanning across the changed scope, zero findings, then failed closed on provider exhaustion. The lock-resolution and symlink controls this PR adds were not implicated. Failure class: Taken with the same measurement on
No fix pushed and no re-run spent. The scan found nothing to fix, a re-run re-enters the same walk, and the upstream fix is Generated by Claude Code |
Summary
npm cifrom that lock project while keeping coverage scripts scoped to the changed nested package.Root cause
Central coverage discovered
apps/desktopas the JavaScript package for ContextualWisdomLab/bandscope#1057, then looked forpackage-lock.jsononly in that directory. BandScope owns the lock at the repository root, so coverage failed beforevitestcould resolve from the workspace install.Verification
python3 -m pytest -q— 1874 passed, 1 skipped, 17 subtests passed.python3 -m pytest -q tests/test_opencode_rust_coverage_toolchain_contract.py tests/test_pr_review_autofix_nvidia_nim_contract.py— 31 passed, 1 skipped.bash -n scripts/ci/test_strix_quick_gate.sh— passed.actionlintwas attempted with a 30-second bound but did not complete; it is not claimed as passing evidence.Security Notes
COVERAGE_SOURCE_WORKDIRand fails closed if the package path escapes it or no lock is present.Summary by CodeRabbit
개선 사항
버그 수정
테스트
문서