Skip to content

build(deps): bootstrap hash-locked pip 26.2 - #82

Closed
dependabot[bot] wants to merge 15 commits into
fix/atheris-interpreter-lockfrom
dependabot/pip/pip-26.2
Closed

build(deps): bootstrap hash-locked pip 26.2#82
dependabot[bot] wants to merge 15 commits into
fix/atheris-interpreter-lockfrom
dependabot/pip/pip-26.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrade the repository-wide installer bootstrap to hash-locked pip==26.2 without treating pip as an incidental dependency of security or fuzz tooling, while preserving PR #96's provider-transport, response-trust, exact-head checkout, and portable Atheris boundaries.

Changes

  • Add requirements-pip-bootstrap.in and a two-artifact SHA-256 lock for pip==26.2.
  • Bootstrap and exactly verify pip 26.2 before Security and Fuzz dependency installation.
  • Keep pip outside tool-specific locks.
  • Preserve atheris==3.0.0 below Python 3.13 and atheris==3.1.0 on Python 3.13+.
  • Refresh the security-tool closure and retain its existing direct requirements.
  • Add repository contract tests for the direct pin, hashes, workflow bootstrap, exact runtime-version verification, and Atheris boundary.

Integration order

PR #96 supersedes closed-unmerged PR #76 and remains this PR's stacked base. This PR must remain Draft and must not merge before #96 reaches protected main.

The branch was refreshed on 2026-08-12 with a normal two-parent merge of the accepted stable PR #96 head. Conflicts were limited to fuzz/requirements-atheris.in and fuzz/requirements-atheris.txt; the reconciliation retained #96's interpreter-specific Atheris markers and moved pip exclusively to the repository-wide bootstrap lock. The resulting unique diff against #96 is nine intended workflow, lock, and contract-test files.

If #96 moves again, this evidence becomes historical and this branch must be refreshed once more. No predecessor-head check, review, or approval transfers.

Exact identity

Verification

Local supporting proof:

  • targeted security metadata and fuzz-lock contracts: 11 passed;
  • full suite: 567 passed;
  • owned production coverage: 3,667 statements and 934 branches, 100%;
  • public docstrings: 100%.

Every hosted workflow below explicitly fetched and checked out exact contributor head 9341bac45484bdc53b2f8813baac85ee118b176b with checkout credentials disabled:

  • Tests run 31550791259, job 93972866638: success; 567 passed, 3,667 statements and 934 branches at 100%, and public docstrings at 100%.
  • Security run 31550791367: success.
    • Supply-chain job 93972867017 installed and exactly verified pip 26.2, built the package, found no known vulnerabilities, and published CycloneDX SBOM artifact 9124188864 with archive digest sha256:282d8772b1d9f75e5f73159bf3fb2fbfc6219646751d4ece5019367749253e5b.
    • CodeQL job 93972867118 completed successfully and uploaded its exact-head analysis.
  • Fuzz run 31550791398: success.
    • Hypothesis job 93972866942 installed and exactly verified pip 26.2 and passed 8 property tests.
    • Atheris job 93972867039 installed and exactly verified pip 26.2, then completed all four bounded targets with 8,086,886 / 9,922,187 / 672,380 / 3,403 runs. Crash-artifact upload was skipped only because no crash file existed.
  • CodeRabbit commit status: success, classified as status-only evidence.
  • Current valid unresolved review threads: zero.
  • Formal current-head reviews: zero.
  • Qualifying independent non-author approval: absent.

The earlier OpenCode CHANGES_REQUESTED review applies only to predecessor df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d and is not current-head evidence.

Acceptance

This PR remains Draft until #96 reaches protected main, the branch is reconciled again if that upstream identity changes, every required exact-head security/review gate is complete, zero valid findings remain, and a qualifying independent non-author approval applies to the unchanged head. Queued, skipped-required, predecessor-head, stale-base, synthetic-merge, status-only, author-only, absent, failed, or infrastructure-only evidence is not success.

Downstream stack

Draft PR #69 is stacked on this exact head at 27432737188ea43a0e81ecd279d66cb16c3a00ab. Relative to #82 it contains only the immutable setup-python 7 workflow update and matching metadata contract; its exact-head Tests, Security, and Fuzz runs succeeded. That evidence is downstream-only and becomes historical if #82 or #96 moves. Merge order remains #96, then a protected-base rebuild/refresh of #82, then a rebuild/refresh of #69.

Bumps [pip](https://github.com/pypa/pip) from 26.1.2 to 26.2.
- [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst)
- [Commits](pypa/pip@26.1.2...26.2)

---
updated-dependencies:
- dependency-name: pip
  dependency-version: '26.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 2, 2026
@dependabot
dependabot Bot requested a review from seonghobae as a code owner August 2, 2026 19:33
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 2, 2026
@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

해시 고정 pip 26.2 부트스트랩 파일이 추가되었습니다. 퍼즈 및 보안 CI가 이를 설치하고 버전을 검증합니다. 보안 의존성 잠금과 퍼즈 입력 파일도 갱신되었습니다.

Changes

pip 공급망 및 CI 갱신

Layer / File(s) Summary
pip 부트스트랩 잠금 정의
requirements-pip-bootstrap.in, requirements-pip-bootstrap.txt, fuzz/requirements-atheris.in, requirements-security-ci.in
pip 26.2 입력과 SHA-256 해시 잠금 파일이 추가되었습니다. 퍼즈 및 보안 의존성 파일은 별도 부트스트랩 방식을 설명합니다.
CI pip 설치 및 검증
.github/workflows/fuzz.yml, .github/workflows/security.yml, tests/test_repository_security_metadata.py
퍼즈와 보안 CI가 해시 고정 파일로 pip를 설치하고 pip 26.2를 검증합니다. 저장소 보안 메타데이터 테스트가 잠금 파일과 워크플로 토큰을 검사합니다.
보안 의존성 잠금 갱신
requirements-security-ci.txt
cachecontrol, cyclonedx-python-lib, jsonschema, tomli의 extra 또는 출처 주석이 갱신되었습니다. rpds-py가 0.30.0으로 변경되고 배포 해시가 교체되었습니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: seonghobae

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 제목은 저장소 전체에 해시로 고정된 pip 26.2 부트스트랩을 추가하는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dependabot/pip/pip-26.2

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
requirements-security-ci.txt (1)

403-403: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

pip==26.2를 보안 CI 입력에 추가하세요.

requirements-security-ci.in에는 pip-auditcyclonedx-bom만 선언되어 있습니다. security.ymlrequirements-security-ci.txt만 설치하며, 저장소에 pip==26.2 선언이 없습니다. pip==26.2와 hash를 입력 파일에 추가한 후 lock file을 재생성하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@requirements-security-ci.txt` at line 403, Declare pip==26.2 with its
appropriate hash in requirements-security-ci.in, then regenerate
requirements-security-ci.txt so the locked security CI dependencies include that
pinned package and hash. Preserve the existing pip-api entry and lock-file
format.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@requirements-security-ci.txt`:
- Line 403: Declare pip==26.2 with its appropriate hash in
requirements-security-ci.in, then regenerate requirements-security-ci.txt so the
locked security CI dependencies include that pinned package and hash. Preserve
the existing pip-api entry and lock-file format.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: efefe98b-5e62-45c3-b416-4bcc0d934bb4

📥 Commits

Reviewing files that changed from the base of the PR and between 6841b71 and df888b8.

📒 Files selected for processing (2)
  • fuzz/requirements-atheris.txt
  • requirements-security-ci.txt
💤 Files with no reviewable changes (1)
  • fuzz/requirements-atheris.txt

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before 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 head df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d.

  • Head SHA: df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d

  • Workflow run: 30768818491

  • 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 (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d
  • Workflow run: 30768818491
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

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 success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before 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 head df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d.

  • Head SHA: df888b80a8f7e8f139f5ebd47ed0c9a3efa5180d

  • Workflow run: 30768818491

  • 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 (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) August 4, 2026 00:15
@opencode-agent
opencode-agent Bot disabled auto-merge August 4, 2026 01:19

Copy link
Copy Markdown
Contributor

Addressed the valid pip-removal finding with a repository-wide bootstrap lock rather than relying on pip as an incidental transitive dependency. requirements-pip-bootstrap.in/.txt now pin pip 26.2 with the official wheel and sdist SHA-256 hashes, both Security and Fuzz workflows install and verify that exact version before their tool locks, the Atheris/security inputs document the separation, and repository metadata tests enforce the bootstrap contract.

Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae seonghobae changed the title build(deps): bump pip from 26.1.2 to 26.2 build(deps): bootstrap hash-locked pip 26.2 Aug 4, 2026
@seonghobae
seonghobae enabled auto-merge (squash) August 4, 2026 03:35

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/security.yml:
- Around line 67-68: Replace the prefix-based pip checks with exact
importlib.metadata.version("pip") == "26.2" comparisons in the workflow steps at
.github/workflows/security.yml lines 67-68, .github/workflows/fuzz.yml lines
39-40 and 70-71, and the metadata test at
tests/test_repository_security_metadata.py lines 45-46.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be06a2c9-6150-4eeb-943b-9be096ff8069

📥 Commits

Reviewing files that changed from the base of the PR and between df888b8 and 71105b1.

📒 Files selected for processing (7)
  • .github/workflows/fuzz.yml
  • .github/workflows/security.yml
  • fuzz/requirements-atheris.in
  • requirements-pip-bootstrap.in
  • requirements-pip-bootstrap.txt
  • requirements-security-ci.in
  • tests/test_repository_security_metadata.py

Comment thread .github/workflows/security.yml Outdated

Copy link
Copy Markdown
Contributor

Addressed the current-head CodeRabbit finding: every Security/Fuzz bootstrap now uses an exact importlib.metadata.version("pip") == "26.2" assertion, and the repository contract test enforces that exact check. The review thread is resolved; exact-head Tests, Security, and Security Scan are green, with Atheris fuzzing still completing. @coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

@seonghobae I will review the current PR head, including the exact pip-version assertions and the repository contract test.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae
seonghobae marked this pull request as draft August 4, 2026 06:12
auto-merge was automatically disabled August 4, 2026 06:12

Pull request was converted to draft

Copy link
Copy Markdown
Contributor

Temporarily Draft to preserve the security base. This branch rewrites fuzz/requirements-atheris.in and its lock from the old main state, so merging it after #76 without an explicit integration would remove the reviewed Python <3.13 / >=3.13 Atheris split and recreate the central coverage deadlock. Merge #76 first, update this branch to current main, retain both the per-interpreter Atheris pins and the separate hash-locked pip 26.2 bootstrap, regenerate the closures, and rerun exact-head checks and review before returning it to Ready.

@seonghobae
seonghobae changed the base branch from main to fix/atheris-interpreter-lock August 5, 2026 02:21

Copy link
Copy Markdown
Contributor

@dependabot rebase

Rebase onto the integrated security/Atheris prerequisite base fix/atheris-interpreter-lock (cfd42f309ea39a189635ff8ba573c5d3b0e332ba). Preserve #96's DNS-pinned provider transport and portable Atheris partition, treat all earlier checks and approvals as stale, and rerun exact-head validation plus fresh independent approval before merge.

@dependabot @github

dependabot Bot commented on behalf of github Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry!

If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request @dependabot recreate.

Copy link
Copy Markdown
Contributor

@opencode-agent @cwl-noema-review

Review exact current contributor head 9341bac45484bdc53b2f8813baac85ee118b176b against exact live base 3703d0da9823b8258a0be94f1801aa5d61bfad9f. All repository-local deterministic and product-specific workflows are terminal-success on this exact head. Treat predecessor-head reviews, approvals, requested changes, checks, and synthetic evidence as historical. Report only current-head actionable findings; model evidence is not qualifying independent approval. Keep this stacked PR Draft while its prerequisite remains unintegrated.

@seonghobae

Copy link
Copy Markdown
Contributor

Closed by autonomous commercial loop: draft dependency/tooling PR with CHANGES_REQUESTED or stack base risk. Prefer Dependabot re-open against current main after #111#114 land, rather than carrying long-lived draft dep branches. (build(deps): bootstrap hash-locked pip 26.2)

@seonghobae seonghobae closed this Aug 12, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

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

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant