Files
buzz/renovate.json
Wes 69b1225923 fix(ci): prevent poisoned Rust caches (#6618)
## Summary

- roll every `Swatinem/rust-cache` use back from v2.9.2 to the last
known-good v2.9.1 digest
- give Unit Tests a new `sherpa-cache-v1` key so it cannot restore the
existing poisoned artifact
- pin Renovate to v2.9.1 and add CI contracts that reject unsafe cache
actions or a misplaced generation key

## Why

After #5441 upgraded rust-cache to v2.9.2, warm-cache `main` Unit Tests
runs began failing while linking `buzz-voice` with `could not find
native static library sherpa-onnx-c-api`. The failed run at `db5617dd1`
restored the same 1.4 KB cache generation that had already failed at
`01091c15a`; the preceding cold run at `26f4c3ed3` downloaded sherpa
1.13.4 and passed.

v2.9.2 changed target cleanup, while `sherpa-onnx-sys` treats its
prebuilt `lib/` directory as proof that the native archive exists.
Rolling back the action and invalidating the affected key removes both
sides of that failure state without disabling target caching.

## Validation

At `6da0037a0407fc498cd482fcbbb74c7a15907e9f`:

- `scripts/test-rust-cache-contract.sh`
- `scripts/test-rust-cache-contract-regressions.sh`
- negative fixtures reject a bad digest in a newly named `.yaml`
workflow and a generation key moved outside the cache action's `with`
block
- YAML parse for all workflows
- release, desktop candidate, mobile release, mobile candidate, and
mobile worktree source contracts
- `just file-size-check`
- pre-commit and pre-push hooks

The PR Unit Tests run proves the cold-cache path because pull requests
restore but do not save Rust caches. The first successful `main` run
after merge will save the new Unit Tests key; the following `main` run
will exercise the warm restore.

## Related issue

None found.

Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Carl <32a2e2c9d428ee08902cab75d956da2c1d235a22d4766b0dd4138bf6e2e5db1d@buzz.block.builderlab.xyz>
2026-08-24 16:21:31 -06:00

56 lines
2.5 KiB
JSON

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended", "helpers:pinGitHubActionDigests"],
"minimumReleaseAge": "3 days",
"minimumReleaseAgeBehaviour": "timestamp-required",
"internalChecksFilter": "strict",
"prCreation": "immediate",
"automerge": true,
"rebaseWhen": "conflicted",
"recreateWhen": "always",
"separateMinorPatch": true,
"postUpdateOptions": ["cargo:updateLockfile"],
"packageRules": [
{
"description": "Major version bumps often require code changes — require human review.",
"matchUpdateTypes": ["major"],
"automerge": false
},
{
"description": "Keep Rust crate updates isolated because 0.x minor releases often contain breaking changes. Group all minor updates per crate (don't split by individual version).",
"matchManagers": ["cargo"],
"groupName": null,
"separateMinorPatch": true,
"separateMultipleMinor": false
},
{
"description": "rust-cache v2.9.2 cleanup can preserve sherpa's prebuilt directory after removing its static archive, poisoning warm Unit Tests caches. Keep v2.9.1 until the action or sherpa validates the archive before reuse.",
"matchManagers": ["github-actions"],
"matchPackageNames": ["Swatinem/rust-cache"],
"allowedVersions": "<=2.9.1"
},
{
"description": "evalexpr v13 relicensed from MIT to AGPL-3.0 — pin below v13 until migrated to an MIT alternative.",
"matchPackageNames": ["evalexpr"],
"allowedVersions": "<13"
},
{
"description": "deadpool-redis re-exports redis types — version mismatch causes trait incompatibility.",
"matchPackageNames": ["redis", "deadpool-redis"],
"matchManagers": ["cargo"],
"groupName": "redis"
},
{
"description": "earshot 1.2.x is a quantized re-implementation, not a tuning release: RNN weights move f32 -> i16 and the probability scale shifts, so the huddle VAD's calibrated threshold regresses at the shipped operating point (TPR 89.57% -> 88.46%, FPR 1.54% -> 2.79% on a matched 121-clip corpus). Unpin only together with a threshold re-pick against that corpus — see the VAD threshold constants in desktop/src-tauri/src/huddle/stt.rs.",
"matchPackageNames": ["earshot"],
"matchManagers": ["cargo"],
"allowedVersions": "<1.2.0"
},
{
"description": "tiptap 3.23.x breaks editor lifecycle under real relay latency — pin until upstream stabilizes.",
"matchPackageNames": ["@tiptap/{/,}**"],
"allowedVersions": "<3.23.0"
}
]
}