mirror of
https://github.com/block/buzz.git
synced 2026-10-27 12:40:30 +00:00
## 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>
56 lines
2.5 KiB
JSON
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"
|
|
}
|
|
]
|
|
}
|