Skip to content

chore(deps): Bump sha2 from 0.10.9 to 0.11.0 in /Native/pcai_core - #84

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/Native/pcai_core/sha2-0.11.0
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/Native/pcai_core/sha2-0.11.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bumps sha2 from 0.10.9 to 0.11.0.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

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>
@dependabot @github

dependabot Bot commented on behalf of github Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies, rust. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@David-Martel

Copy link
Copy Markdown
Owner

Closing — this does not build, and it would not be a net improvement even if it did.

It breaks the build

sha2 is a direct dependency here, used in three files that all hex-format the digest: pcai_core_lib/src/hash.rs, pcai_core_lib/src/search/duplicates.rs, pcai_perf_cli/src/main.rs.

RustCrypto 0.11 moves digest output from generic-array::GenericArray to hybrid-array::Array, and Array does not implement LowerHex, so every format!("{:x}", hasher.finalize()) stops compiling:

error[E0277]: the trait `LowerHex` is not implemented for
              `Array<u8, UInt<UInt<UInt<UInt<UInt<...>>>>>>`
error: could not compile `pcai_core_lib` (lib) due to 3 previous errors

Verified locally against this branch's lockfile with cargo check -p pcai_core_lib -p pcai-perf --all-targets.

And it would add a second copy of sha2

Two transitive dependencies still require the 0.10 line, so this does not replace sha2 — it adds to it. From this branch's own Cargo.lock:

Package Requires
cudaforge sha2 0.10.9
openai-harmony sha2 0.10.9
pcai_core_lib sha2 0.11.0
pcai-perf sha2 0.11.0

So the cost is rewriting three call sites and compiling two SHA-2 implementations instead of one. The benefit is zero: 0.10.9 carries no advisory and cargo audit is clean on it.

Worth revisiting once the RustCrypto 0.11 line has propagated to the rest of the tree, at which point the migration consolidates rather than duplicates.

#87 adds a semver-major ignore for sha2 so the next 0.11.x does not re-raise the same non-starter — same rationale as the existing candle pin. Minor and patch sha2 updates keep coming through the normal cargo-pcai-core group.

@dependabot @github

dependabot Bot commented on behalf of github Sep 8, 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.

@dependabot
dependabot Bot deleted the dependabot/cargo/Native/pcai_core/sha2-0.11.0 branch September 8, 2026 15:04
David-Martel added a commit that referenced this pull request Sep 8, 2026
Review on #87 caught that `update-types: ["version-update:semver-major"]`
does not match the bump it was written to block. Dependabot classifies an
update by which SemVer *component* changed, and 0.10.9 -> 0.11.0 changes the
minor component -- the major component stays 0.

The consequence is worse than the ignore simply not firing. cargo-pcai-core
groups minor and patch updates, so a bump classified as minor is eligible for
the group: the next run could fold a known-broken sha2 0.11 into the grouped
PR and block an otherwise good batch of updates behind it.

`versions: [">=0.11.0"]` cannot be misclassified. It also covers the eventual
1.0 without another edit.

Note the empirical picture is not clean either way. In the 2026-09 batch,
genuine semver-minor bumps were grouped -- uuid 1.23.1 -> 1.26.0 and rayon
1.11.0 -> 1.12.0 both landed inside #83 -- while sha2 0.10.9 -> 0.11.0 alone
was raised as its own PR (#84), which is what a major classification would
produce. So Dependabot's Cargo handling may well already treat a 0.x minor as
breaking. The range makes that question moot rather than betting on it.

Verified: .github/dependabot.yml parses with all 8 update blocks intact and
the cargo-pcai-core group unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mu7jB5ysKe4DN5ovjVtX1t
David-Martel added a commit that referenced this pull request Sep 8, 2026
* chore(deps): hold sha2 on the 0.10 line

Dependabot raised sha2 0.10.9 -> 0.11.0 as #84. It does not build.

RustCrypto 0.11 moves digest output from generic-array::GenericArray to
hybrid-array::Array, and Array does not implement LowerHex, so every
`format!("{:x}", hasher.finalize())` stops compiling:

    error[E0277]: the trait `LowerHex` is not implemented for
                  `Array<u8, UInt<UInt<UInt<UInt<UInt<...>>>>>>`
    error: could not compile `pcai_core_lib` (lib) due to 3 previous errors

sha2 is a direct dependency with three hex-formatting call sites:
pcai_core_lib/src/hash.rs, pcai_core_lib/src/search/duplicates.rs, and
pcai_perf_cli/src/main.rs.

The bump would also not consolidate anything. cudaforge and openai-harmony
still require the 0.10 line, so taking 0.11 directly means compiling two
SHA-2 implementations rather than replacing one:

    cudaforge        -> sha2 0.10.9
    openai-harmony   -> sha2 0.10.9
    pcai_core_lib    -> sha2 0.11.0
    pcai-perf        -> sha2 0.11.0

0.10.9 carries no advisory and cargo audit is clean on it, so the cost is
three rewritten call sites and a duplicated hash implementation for no gain.

Scoped to semver-major only, so minor and patch updates to sha2 keep arriving
through the normal cargo-pcai-core group. This is the same reasoning as the
candle pin in the /Deploy block: a stack that has to move as one coordinated
piece, not one crate at a time.

Verified: cargo check -p pcai_core_lib -p pcai-perf --all-targets against the
#84 lockfile fails with the three errors above; the dependabot config parses
with all 8 update blocks intact.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mu7jB5ysKe4DN5ovjVtX1t

* fix(deps): express the sha2 hold as a version range, not an update-type

Review on #87 caught that `update-types: ["version-update:semver-major"]`
does not match the bump it was written to block. Dependabot classifies an
update by which SemVer *component* changed, and 0.10.9 -> 0.11.0 changes the
minor component -- the major component stays 0.

The consequence is worse than the ignore simply not firing. cargo-pcai-core
groups minor and patch updates, so a bump classified as minor is eligible for
the group: the next run could fold a known-broken sha2 0.11 into the grouped
PR and block an otherwise good batch of updates behind it.

`versions: [">=0.11.0"]` cannot be misclassified. It also covers the eventual
1.0 without another edit.

Note the empirical picture is not clean either way. In the 2026-09 batch,
genuine semver-minor bumps were grouped -- uuid 1.23.1 -> 1.26.0 and rayon
1.11.0 -> 1.12.0 both landed inside #83 -- while sha2 0.10.9 -> 0.11.0 alone
was raised as its own PR (#84), which is what a major classification would
produce. So Dependabot's Cargo handling may well already treat a 0.x minor as
breaking. The range makes that question moot rather than betting on it.

Verified: .github/dependabot.yml parses with all 8 update blocks intact and
the cargo-pcai-core group unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mu7jB5ysKe4DN5ovjVtX1t

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
David-Martel added a commit that referenced this pull request Sep 9, 2026
* docs(todo): reconcile four items against what actually happened

TODO.md still described a state that three merges and a workflow deletion have
since changed. Marking resolved items resolved, and correcting one that had
become misleading rather than merely stale.

Dependabot backlog -- drained to zero, was "6 open PRs, 1 high-severity alert".
The alert is fixed and cargo audit on Native/pcai_core is exit 0 (776
dependencies, 0 vulnerabilities, 5 advisory warnings). Grouping landed in #71,
so minor+patch now arrive as one PR per ecosystem. #85 took the 17-update
grouped bump, #86 the four .NET test-package majors, #87 held sha2 below 0.11.
#84 was refused on evidence, not deferred: RustCrypto 0.11 moves digest output
to hybrid-array::Array, which lacks LowerHex, and two transitive deps still
require the 0.10 line -- so it breaks three call sites and duplicates sha2.
#88/#89/#90 were deferred rather than judged, because they target Deploy.

Portable CI (Linux) -- moot, the workflow was deleted. The item asked for a
measured timeout, which now cannot be measured and should not be: this repo
targets Windows by design, and a Linux job running the PowerShell suite was a
misconfiguration rather than coverage. Its one piece of real coverage,
workspace-wide cargo checks, moved to rust-guidelines.yml on windows-latest.
Left as a struck-through entry rather than deleted so the reasoning survives.

CargoTools cargo shim -- second instance recorded. The same preflight that
breaks `Build.ps1 -Component functiongemma-router-data` also breaks
`cargo test --manifest-path <path> -p <crate>`, dying with a rustfmt usage dump
that looks like the crate under test but is entirely the shim. `Get-Command
cargo` resolves to ~\bin\cargo.ps1, not rustup's. Workaround for scoped builds
is rustup's binary directly. Both instances are one bug in the shim's preflight
argument construction, which is worth knowing before someone debugs the second
as if it were unrelated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mu7jB5ysKe4DN5ovjVtX1t

* docs(todo): reconcile the advisory-warning count with the crate list

Review caught that "5 advisory warnings (core2, fxhash, number_prefix, paste)"
names four crates for five warnings, which is internally inconsistent and
exactly the kind of number nobody can later verify.

The count is right and the list was incomplete rather than wrong: core2 is
reported twice, once unmaintained and once yanked, so four crates produce five
warnings. Spelled out, along with why the exit code is still 0 -- cargo audit
fails on vulnerabilities, not warnings.

    Crate: core2          Warning: unmaintained
    Crate: fxhash         Warning: unmaintained
    Crate: number_prefix  Warning: unmaintained
    Crate: paste          Warning: unmaintained
    Crate: core2          Warning: yanked
    warning: 5 allowed warnings found

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mu7jB5ysKe4DN5ovjVtX1t

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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