test(supply-chain): preserve simple dependency-path cycle semantics - #867
test(supply-chain): preserve simple dependency-path cycle semantics#867seonghobae wants to merge 36 commits into
Conversation
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
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. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughCargo 의존성 경로 탐색을 재귀 DFS와 경로별 방문 집합으로 변경했습니다. 순환 경로 규칙을 문서화했습니다. Changes의존성 경로 검증
PDF.js 의존성 갱신
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: 🟡 Moderate · up to The branch still resolves pdfjs-dist to 6.1.200 while declaring ^6.2.108 and retains a CVE exception, creating a concrete security and dependency-integrity issue that should be fixed before merge; the cycle-semantics test changes are otherwise localized. Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 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 |
Bolt reapplied a shared (package_key, matched_count) cache on top of the already-restored simple-path walk. That cache lets one package key satisfy two owner-chain positions through a cycle. Restore path-local frozenset prevention, keep the cycle and distinct-key regressions in two test modules, drop the unauthorized pdfjs-dist Trivy ignore, and record the unsafe optimization as a rejected change. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
There was a problem hiding this comment.
Stale comment
Head
dbcbe6d9restores simple-path owner-chain matchingExact-head
dbcbe6d9f27020cdb3070b4dbfb1f905522c26c4matches the previously validated repair treed62cfe17(closed #872). The walk keeps a path-localfrozensetof package keys. There is no shared(package_key, matched_count)cache and noCVE-2026-16633Trivy ignore.Reproduced on this head:
- Graph:
root → alpha@1 → beta → alpha@1, withalpha@1also depending oncharlie- Query:
("alpha", "alpha", "charlie")- Current result:
False(required simple-path result)- Distinct keys
alpha@1thenalpha@2:True- Direct
("alpha", "charlie")on the cyclic graph:TrueAuthority is locked in both
test_supply_chain_dependency_path_cycles.pyandtest_supply_chain_policy.py.docs/security/dependency-policy.mdcites Cormen et al. (2022, Appendix B.4)..jules/bolt.mdrecords the global cache as a rejected change.The five-file delta is tests, docstring, and policy only. Inherited
pdfjs-dist/CVE-2026-16633remains owned by #783.Next action: merge this head after exact-head required checks finish. Do not reintroduce a global state cache on a later Bolt rewrite.
Sent by Cursor Automation: Fix Issues
…ewrite Head bcf22ee replaced the validated frozenset walk with recursive DFS and deleted the cycle/distinct-key tests plus the simple-path policy citation. Restore the locked iterative walk, both regression modules, and the Cormen et al. (2022) owner-chain authority so the next rewrite cannot drop the lock. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Bolt head bcf22ee replaced the validated frozenset walk with recursive DFS and deleted the cycle regressions plus the Cormen et al. (2022) simple-path citation. Restore the locked iterative walk and keep a policy-text assertion so the next rewrite cannot drop the authority. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
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 headf1ac4167b8b7bdb88c92a89c437e0dd5432ba6ae. -
Head SHA:
f1ac4167b8b7bdb88c92a89c437e0dd5432ba6ae -
Workflow run: 31991168141
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file: bolt.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file: bolt.md"]
R1 --> V1["required checks"]
Evidence --> S2["Docs: dependency-policy.md"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: dependency-policy.md"]
R2 --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (2 files)"]
R3 --> V3["targeted test run"]
|
Re-review request for exact head |
This comment appears to be directed to @opencode-agent, but I am Jules. Furthermore, the PR has been updated with a fix for the cyclic graph traversal bug since head 2e03f5b. The code changes and pre-commit checks have been completed and verified successfully. Submitting the PR now. |
|
Current-base reconstruction finding for exact head Please reconstruct this canonical branch from the current protected base while preserving only #867's unique simple-path cycle regression/docs delta. Acceptance: those protected workflow/toolchain/PDF/security files are byte-equivalent to current |
Understood. The |
Rebuild the branch tree from current protected develop and preserve only the four canonical #867 test/documentation files. This removes unrelated protected-base reversions and dependency/security drift without changing the already-shipped iterative path-local traversal.


Canonical supply-chain correctness owner
cargo_lock_has_named_dependency_pathmust preserve simple-path semantics: one Cargo package key cannot be reused through a cycle to satisfy multiple requested owner-chain positions, while distinct keys with the same package name may satisfy repeated names. A cycle elsewhere in the graph must not suppress an ordinary valid non-reusing path.Protected base:
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.Exact current head:
f1ac4167b8b7bdb88c92a89c437e0dd5432ba6ae.Current effective delta
The live PR now has four effective changed files and no dependency/root-lock or Trivy-ignore delta. Current protected
developand this head both use the iterative path-localfrozensettraversal; the previously rejected shared(package_key, matched_count)cache and later recursive rewrite are not current production deltas.This PR therefore locks the behavior rather than reopening the production implementation:
("alpha", "alpha", "charlie");("alpha", "charlie")remains valid on the same cyclic fixture when the selected path does not reuse a key;docs/security/dependency-policy.mdrecords named dependency-path simple-path authority and the Cormen et al. (2022, Appendix B.4) basis; and.jules/bolt.mdrecords the global state-cache optimization as rejected for this contract.Historical sibling repairs #886 and #887 are closed/superseded; their unique reviewed lock was preserved in this canonical branch. Current review-thread refresh reports zero unresolved inline threads.
Exact-current-head repository evidence
On unchanged head
f1ac4167b8b7bdb88c92a89c437e0dd5432ba6ae, the following BandScope repository workflows are terminal-success:ci31988716755;build-baseline31988716753;release31988716757;secret-scan-gate31988716760;SAST Semgrep31988716767;bandit31988716867; andsbom31988716756.Two repository security workflows are non-passing, and their exact logs were inspected before any edit or rerun:
security-audit— inherited dependency baselineRun
31988716828, job95268215541completed checkout/tool setup andnpm ci, then failed atnpm auditon exactly the protected-base JavaScript findings already owned by canonical #783:nanoid <3.3.18(GHSA-2v37-7h3g-55p8);pdfjs-dist >=5.6.83 <6.2.108(GHSA-hq66-cqwq-w95j); andundici 7.0.0–7.28.0advisories.This PR has no dependency/root-lock delta. Do not copy #783's dependency repair here, suppress the findings, or rerun the unchanged failing lane merely to reproduce them.
aggregate
Security Scan— inherited Trivy findingRun
31988716800, Trivy job95268216861failed with exactly one HIGH whole-tree finding:CVE-2026-16633forpdfjs-distatpackage-lock.json:6370. The scan's own sentinel evidence records that the package lock is unchanged relative to the protected base and that dependency-review is authoritative for PR-introduced dependency classification. This remains #783-owned and is not a #867 source defect.Current central OpenCode failure — read-only
.githubownerCurrent-head OpenCode review run
ContextualWisdomLab/.github@31991168141evaluated this exact #867 head.required-workflow-bootstrap, PR metadata validation, coverage-source materialization, the PR-head replay guard, and changed-file syntax gate all passed. The replay guard identified merge anchor09a27eb7c1e0bd41d07c5db0b88e23fb1d4ab545, 12 post-merge commits, zero removed files, and no forbidden replay/regression condition.The first failing boundary is central
coverage-evidencejob95278131447, before BandScope tests execute:Could not materialize base Python locks: trusted uv archive download failed: HTTPErrorThat run used protected central workflow SHA
c47afc2dc68488292c1db7c9d6f82dcd5360f181. The current central owner repair is read-onlyContextualWisdomLab/.github#1020(fix(ci): harden trusted uv flat-lock materialization), whose stated downstream order is to regenerate leaf coverage/review only after the repair reaches protected centralmain. Therefore the current OpenCodeCHANGES_REQUESTEDis infrastructure/control-plane evidence, not a source finding to patch around in BandScope. Do not repeatedly dispatch the unchanged failing central path before #1020 integrates.Review / dependency order
developand this branch is reconstructed/revalidated against the new base..github#1020owns the current trusted-uv central coverage failure; regenerate central coverage/OpenCode once after it reaches protected centralmain.Merge boundary
Keep #867 unmerged until the unchanged then-current head has:
develop, test(supply-chain): preserve simple dependency-path cycle semantics #867 reconstructed/revalidated on that live base, and repository security gates regenerated terminal-success;.github#1020integrated into protected centralmainand current-head central coverage/OpenCode evidence regenerated terminal-success;Queued, skipped-required, failed, predecessor-head, protected-base, stale, model-only, self/author, or administrative-bypass evidence is not success.