fix(deps): complete sha2 0.11 upgrade - #1694
Conversation
Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.9 to 0.11.0. - [Commits](RustCrypto/hashes@sha2-v0.10.9...sha2-v0.11.0) --- updated-dependencies: - dependency-name: sha2 dependency-version: 0.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change upgrades ChangesSHA-256 compatibility and serialization
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This change updates SHA-256 byte encoding for compatibility with sha2 0.11 while preserving the existing 64-character lowercase provenance format. No actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
Full details: Linked Issues checkExplanation The dependency and sha256_hex changes address the linked issue. The helper preserves lowercase, fixed-length SHA-256 serialization. Cargo.lock is excluded by the !**/*.lock path filter, so coherent lockfile updates cannot be verified from the available evidence. Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ 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 |
There was a problem hiding this comment.
Noema LLM review
The PR diff and additional context indicate a successful upgrade of the sha2 dependency to version 0.11.0, with no apparent issues or regressions. The review threads and CodeGraph context also do not reveal any significant concerns. Therefore, the PR can be approved as is.
Findings
-
No blocking findings.
-
Result: APPROVE
-
Head SHA:
19814737f84d3ad294095b7ad7781770886479f9 -
Reviewer credential:
noema-review-github-app -
Actor:
cwl-noema-review[bot]
There was a problem hiding this comment.
Noema LLM review
The PR is well-structured and the changes are correct, but there are some blocking issues that need to be addressed before the PR can be merged. The excluded locked builds no longer resolve due to stale lockfiles, and the independent manifest edits skip diagnostics due to missing paths. These issues need to be fixed before the PR can be merged.
Findings
-
[high] crates/mlsirm-core/Cargo.toml:18: Excluded locked builds no longer resolve due to stale lockfiles.
-
[high] .github/workflows/lockfile-diagnostic.yml:10: Independent manifest edits skip diagnostics due to missing paths.
-
Result: REQUEST_CHANGES
-
Head SHA:
65d1748ba258046c3038e277f48d61a6d726fb77 -
Reviewer credential:
noema-review-github-app -
Actor:
cwl-noema-review[bot]
There was a problem hiding this comment.
Noema LLM review
The PR introduces a version bump of the sha2 crate to 0.11.0, but the lockfiles are not updated accordingly, which may cause issues with the build process. Additionally, the lockfile diagnostic workflow is not updated to handle the new version of sha2. The PR also introduces a new version of the const-oid crate, but the dependencies are not updated accordingly. The PR is missing a test case to verify the correctness of the updated lockfiles and the lockfile diagnostic workflow.
Findings
-
[high] .github/workflows/lockfile-diagnostic.yml:1: The lockfile diagnostic workflow is not updated to handle the new version of sha2.
-
[medium] Cargo.lock:1: The lockfiles are not updated accordingly, which may cause issues with the build process.
-
[low] crates/mlsirm-core/Cargo.toml:1: The dependencies are not updated accordingly for the new version of const-oid.
-
Result: REQUEST_CHANGES
-
Head SHA:
78e6d1904db7c5996bf7122b7f3c7e3420be5957 -
Reviewer credential:
noema-review-github-app -
Actor:
cwl-noema-review[bot]
|
Current-head note after the sha2 API compatibility fix: hosted head |
There was a problem hiding this comment.
Noema LLM review
The PR diff and additional context indicate that the sha2 0.11 upgrade is complete and the lockfiles are up-to-date. The changes are correct and do not introduce any security, maintainability, or behavioral regressions. The only open issue is the excluded locked builds no longer resolving, but this is addressed in the prior review thread and does not affect the overall approval of the PR.
Findings
-
[medium] crates/mlsirm-core/Cargo.toml:18: Excluded locked builds no longer resolve due to stale lockfiles.
-
Result: APPROVE
-
Head SHA:
f0c358e48d2980a2897c5fe661b24cc807f740bb -
Reviewer credential:
noema-review-github-app -
Actor:
cwl-noema-review[bot]
|
Fresh exact-head blocker evidence for The underlying automation gap is now isolated as #1696: Keep #1694 open but non-landing until the standalone PyO3 lock is updated to the exact 0.11 graph and exact-current package/GPU/fuzz/security evidence is rerun. The diagnostic artifact already generated a candidate lock, but I did not copy a broad/generated lock into the branch through an unsafe or lossy write path. |
|
@opencode-agent Please review exact current head |
|
@opencode-agent review Fresh review-only request for exact current head |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Fresh landing-authority update (2026-09-07): the branch was non-force merge-forwarded onto protected The prior organization CodeQL PR |
Summary
Completes the
sha20.10.9 → 0.11.0 production dependency upgrade without changing the sampling-design provenance contract.Closes #1693. Supersedes closed Dependabot PR #1683.
This branch also carries the non-competing implementation of the release-boundary decision tracked by #1715:
mlsirm-coreremains the internal Rust numerical owner andfast-mlsirm-pyremains the internal PyO3 binding crate inside the releasedfast-mlsirmMaturin/PyPI product. Neither Cargo package is a separately published crates.io product.Exact RED / RCA
Dependabot exact head
c0b4427de3bf39d4dcd189d2f3a615c6d7ed0d97is real hosted RED evidence. CI #7497 fails atcrates/mlsirm-core/src/sampling_design.rs:156with Rust E0277 because sha2 0.11 returns a hybrid-array digest output that no longer implementsLowerHex; the predecessor helper usedformat!("{:x}", Sha256::digest(bytes)). ClusterFuzzLite #1425 and package/GPU/Python/fuzz compile failures are downstream of that same Rust compile boundary.Fresh review exposed a second dependency-integrity defect: the workspace-excluded
crates/fast-mlsirm-py/Cargo.lockand the independentfuzz/Cargo.lockstill resolved the predecessor dependency graph after the core requirement moved to 0.11.0. Temporary diagnostic head78e6d1904db7c5996bf7122b7f3c7e3420be5957regenerated both independent locks successfully and produced the immutablesha2-standalone-locksartifact. Later commits did not change the relevant core/fuzz manifests. The PyO3 lock was committed earlier; exact commit5128a2b0e9d13a43c8e1e1c3179950d00973b532commits the artifact-identical fuzz lock as well. Its Git blob SHA9e6cd1ac9565a7ccd9c78996c5c2d3ec101800c4matches the downloaded diagnostic artifact and resolvessha2 0.11.0with the same crates.io checksum as the PyO3 lock.Current fail-closed regression
tests/test_cargo_lock_dependency_contract.pyrequires all three committed lock roots (/,/crates/fast-mlsirm-py,/fuzz) to resolve the exactsha2requirement declared bymlsirm-core.For #1715, the first source-level RED is
9f522186b4f3055339ef2494bf2e88be1ad10723:tests/test_rust_distribution_boundary.pyrequires the Rust numerical core to be non-publishable, keepsfast-mlsirmas the published project, pins Maturin tocrates/fast-mlsirm-py/Cargo.toml, requires the governed PyPI publisher, and rejects acargo publishpath. The preceding core manifest did not declarepublish = false.A second deterministic RED,
5f380567a9b1081ae53a4f23b24f0e4f82597bb8, closes the remaining release-boundary hole: the same contract now requirescrates/fast-mlsirm-py/Cargo.tomlto be non-publishable as well. Its parent tree still left the PyO3 implementation crate registry-publishable by Cargo default, so an organization-level registry credential could be mistaken for authority to create a second product surface.Fix
sha2 = "0.11.0"dependency upgrade.crates/mlsirm-core/Cargo.tomlpublish = falseat GREEN commit441df12afce14f66189e1f1bb795a794ce8a7ebc.crates/fast-mlsirm-py/Cargo.tomlpublish = falseat GREEN commite6335d1174fa9fb8b2cecbb9d1bedb2b54383df2, so neither internal Rust implementation crate can become a crates.io product merely because Cargo registry credentials exist.CHANGELOG.mdremains release-cut owned and is serialized at release time.The release-boundary decision follows the current architecture and product-readiness authority: the sellable unit remains the local Python/Rust
fast-mlsirmpackage, while a separately published Rust SDK/crate requires an independently versioned release cadence, compatibility policy, registry ownership, security/SBOM/provenance evidence, and clean downstream registry-install evidence. Credential availability alone is not such authority.No sampling formula, finite-population interval, allocation, estimator, uncertainty, Python numerical ownership, branch protection, review gate, or psychometric release claim is changed.
Remaining #1715 acceptance
docs/product-technical-gap-baseline.mdis a large point-in-time inventory and has not been safely rewritten on this branch because its current active owner is a different PR lane. #1715 therefore remains open; this PR does not claim that issue completed. The existing v0.9.2 release-cut PR #1471 also changescrates/mlsirm-core/Cargo.tomland the derived changelog, so it must be freshly reconciled after the upstream manifest decision rather than raced or silently overwritten.Current landing authority
Protected
mainisb5a3a0c1057d4b53d7a4bb18e0de69f630c2b45c. The current branch head is756cf889a111717725de806329e8e5a64bbb5bc0, a non-destructive reconciliation commit (chore(core): reconcile Rust distribution lane with protected main); GitHub reports the PR open, Ready, and mergeable withmainas base. All currently visible review threads are resolved.Exact-current required-workflow evidence is not green: organization-required CodeQL PR run
33634336124terminatedstartup_failure; CI33634327987remains pending and OSV/Scorecard/ClusterFuzzLite/repository CodeQL/Security Scan/SAST Semgrep remain queued at the latest fresh read. Those states are non-passing, and predecessor checks are historical after the reconciliation.The zero-job/startup and queue-liveness class is already on the canonical central
.githubowner path; this leaf does not churn source, weaken gates, or create a no-op retrigger commit. Exact-current Rust workspace, standalone PyO3--locked, fuzz--locked,tests/test_rust_distribution_boundary.py, package/GPU/fuzz/security checks, unchanged deterministic sampling identity tests, changelog-fragment/ADR fitness, and committed-lock parity remain authoritative for landing. Protected-main independent approval/last-push policy remains mandatory. No self-approval, bypass, force push, destructive rebase, or predecessor-evidence transfer is authorized.Summary by CodeRabbit
Bug Fixes
Maintenance