chore(upstream): refresh zizmor 1.28.0 - #93
Merged
Conversation
Contributor
Author
|
Preview Worker |
Contributor
Author
Dark-launch comparisonReplayed 200 captures against
Ignored diffs
|
zizmor 1.28.0 taught the dependabot-cooldown audit about GitHub's new implicit three-day default cooldown (zizmorcore/zizmor#2193), changing it in two ways karinto had not absorbed: - The pedantic-only "multi-ecosystem-group cooldowns do not batch updates correctly" finding was dropped. karinto still emitted it, which was the sole hard divergence failing upstream-parity on the 1.28.0 refresh. - "missing cooldown configuration" and "no default-days configured" collapsed into "insufficient implicit default-days (less than 7)": the entry does get a cooldown, GitHub's implicit one, it is just shorter than the threshold. An explicit default-days below 7 keeps its existing wording, and the rule's severity stays Info -- karinto has never mirrored this audit's upstream severity (upstream already emitted warning before 1.28.0). Also adds a dark-launch ignore rule for the message change and drops the now unused cooldown_is_effective helper.
toiroakr
force-pushed
the
chore/upstream-refresh
branch
from
July 27, 2026 12:58
b47af9b to
65d6953
Compare
…28.0 zizmor 1.28.0 promoted the too-short `default-days` case from `help` to `warning` with High confidence, so every arm of the audit is now a `warning` upstream. karinto emitted `info` for all of them; mirror upstream instead. Updates the catalogue's default_severity too, since `sarif.mbt` derives the SARIF `level` from it, and widens the dark-launch ignore rule to cover the severity move on the otherwise-unchanged "insufficient default-days configured (less than 7)" message.
The catalogue's `priority` tracks karinto's own severity, not upstream confidence: across the 36 zizmor-sourced rules Kendall tau-b is +0.96 against severity and -0.58 against zizmor's audit confidence, with exact confidence/priority agreement (13/36) falling below the 15.7 expected under independence. zizmor's confidence also varies within a single audit for 10 of the 39 audits that report one, so it could not be a per-rule mirror anyway. Raising the rule to `Warning` therefore left `Low` stranded: it is the Info-band value, while the zizmor `Warning` band is modal at `Medium`. The only other `Warning` + `Low` entries are `forbidden-uses` (dormant until a caller supplies a denylist) and `ref-version-mismatch` (NotPlanned), so this was the sole always-on implemented outlier. No behaviour change -- `priority` has no read sites; it is catalogue metadata only.
The rule checked only that every moving diagnostic was a plausible dependabot-cooldown message on its expected side, never that the two sides lined up. Two real regressions slipped through: a captured-only diff, where the new implicit warning fails to appear at all (an empty onlyInReplayed passes .every() vacuously), and a mis-mapped wording, where a retired message is answered by the wrong replacement. Count the findings per file and require each retired implicit source to be answered by exactly one implicit warning, and each explicit default-days finding to reappear with the same wording. Only the dropped multi-ecosystem-group finding may go unanswered, since upstream gives it no replacement. Per-file rather than global counting so a shortfall in one file cannot be cancelled by a surplus in another.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refreshes the zizmor pin to 1.28.0 and absorbs the one behavioural change the new fixtures exposed.
upstream-parityfailed on the refresh with a single hard divergence — karinto fireddependabot-cooldownondependabot-cooldown/multi-ecosystem-group-with-cooldown/dependabot.ymlwhere zizmor 1.28.0 reports nothing. zizmor's 1.28.0 audit is now aware of GitHub's new implicit three-day default cooldown (zizmorcore/zizmor#2193), which changeddependabot-cooldownin three ways:multi-ecosystem-groupcooldowns do not batch updates correctly" finding was dropped. karinto no longer emits it either — this was the divergence.insufficient implicit default-days (less than 7): such an entry does get a cooldown, GitHub's implicit one, it is just shorter than the threshold.infotowarning. zizmor 1.28.0 promoted the too-shortdefault-dayscase fromhelptowarning/High confidence, making every arm of the audit awarningupstream; karinto now mirrors that. The catalogue'sdefault_severitymoves with it, sincesarif.mbtderives the SARIFlevelfrom it.An explicit
default-daysbelow 7 keeps its existing wording.The release's other two fixes need no follow-up:
template-injectionforsteps.*.outcome(#2199) is a default-persona-only suppression that karinto already matches (the context isn't in its regular-persona set, so it stays on the pedantic backstop), andgithub-envfor literalGITHUB_ENVinsertions (#2200) shows no divergence on the new fixture.Additionally, the
Priorityenum andRuleSpec.priorityfield were removed from the rule catalogue. The field had no consumers anywhere in the codebase — it was never read outsiderules_catalog.mbtitself. An empirical analysis showed it was a mechanical echo ofdefault_severity(Kendall tau-b +0.786 overall, +0.961 on the zizmor subset) that added no independent signal.Local parity against the pinned 1.28.0 toolchain: 624 fixtures, 0 hard divergences.
Refresh upstream linter pins (auto-generated).
v1.27.0...v1.28.0Fixtures under
fixtures/upstream/<tool>/were re-vendored from the new tag. This PR is opened withGITHUB_TOKEN, soupstream-paritydoes not run automatically — add therun-paritylabel to trigger it. Its step summary then lists any divergences (unmapped/ soft) that point at newly-added upstream checks.Upstream release notes
zizmor v1.28.0
Security 🔒🔗
v1.27.0 contained a logging defect that would print any configured GitHub credentials as part of zizmor's cleartext logging. No versions other than v1.27.0 were affected. See GHSA-f42p-wjw5-97qh for full information.
Many thanks to @shaanmajid for finding and reporting this vulnerability.
Enhancements 🌱🔗
The JSON (v1) output format now includes metadata for each finding's fixes, if the finding has fixes (#2186)
The dependabot-cooldown audit is now aware of GitHub's new three-day default cooldown (#2193)
sbt is now recognized as a package-ecosystem in dependabot.yml (#2211)
Bug Fixes 🐛🔗
Fixed a bug where the template-injection audit would incorrectly flag
steps.*.outcomeandsteps.*.conclusionas injection risks in the default persona (#2199)Fixed a bug where the github-env audit would i
…(truncated — see release link)
Incorporation checklist
If the parity step summary surfaces an
unmapped/ soft divergence (an upstream check karinto does not yet cover), follow the incorporation flow inDEVELOPMENT.md:comparediff + release notes above for new / changed checks.run-paritylabel and checked theupstream-paritystep summary forunmappedrule IDs / Kinds.rules_catalog.mbt(+ mirroredrules_catalog.md) with a status, or recorded the intentional divergence inscripts/upstream-parity/allowlist.json. — no new check to register; the change is a behavioural correction to the existingdependabot-cooldownrule, mirrored inrules_catalog.md.moon test+ local parity pass.