Skip to content

fix(ci): release notes report the shipped binary, not every candidate - #1619

Merged
DeusData merged 1 commit into
mainfrom
fix/vt-notes-shipped-only
Aug 14, 2026
Merged

fix(ci): release notes report the shipped binary, not every candidate#1619
DeusData merged 1 commit into
mainfrom
fix/vt-notes-shipped-only

Conversation

@DeusData

Copy link
Copy Markdown
Owner

Release notes now carry one row per product — the bytes actually published and their VirusTotal verdict — instead of a column per candidate.

Several candidates get scanned so the selector has an alternative when an opaque classifier flags one, but a reader installing cbm cares about the bytes they receive, not the ones we discarded. Per-candidate verdicts stay in the published evidence TSVs for auditing, and they remain useful to us as a development signal — in a changelog they are noise, and printing a microsoft-ml verdict beside a binary nobody can download invites precisely the wrong conclusion.

It also removes a claim that had become false. The section asserted that every scan had a minimum of 50 decisive engines. That floor was deliberately removed — decisive-engine count is VirusTotal fleet availability, not a property of our binary — and the last release observed 31. The published notes would have stated something untrue. The observed range is still reported, now over the shipped binaries.

Disclosure of a tolerated Microsoft !ml is preserved, narrowed to binaries that actually ship.

The contract test now pins both directions: a flagged binary that ships must be disclosed, and flagged candidates that were rejected must not appear at all. Its fixture gained a target drawing the tolerated verdict on all three candidates so the disclosure branch is genuinely exercised — previously every flagged candidate lost to a clean sibling, leaving that path untested.

README and SECURITY.md updated; both promised notes "link every candidate result".

All five release/VT contract tests pass.

Release notes now carry one row per product — the bytes actually published, with
their VirusTotal verdict — instead of a column per candidate.

Several candidates are scanned so the selector has an alternative when an opaque
classifier flags one, but a reader installing cbm cares about what they receive,
not about what we discarded. The rejected candidates' verdicts remain in the
published evidence TSVs for anyone auditing the selection, and they stay useful
to US as a development signal; in a changelog they are noise, and listing a
"microsoft-ml" verdict next to a binary nobody can download invites exactly the
wrong conclusion.

Also removes a claim that had become FALSE: the section asserted that every scan
had a minimum of 50 decisive engines. That floor was removed deliberately (it is
VirusTotal fleet availability, not a property of our binary) and the last release
observed 31. Published notes would have stated something untrue. The observed
range is still reported, now over the shipped binaries.

The disclosure of a tolerated Microsoft `!ml` is preserved and narrowed to the
binaries that ship. The contract test now pins both directions: a flagged binary
that SHIPS must be disclosed, and flagged candidates that were rejected must not
appear at all. Its fixture gained a target that draws the tolerated verdict on
all three candidates, so the disclosure branch is actually exercised — previously
every flagged candidate was rejected in favour of a clean sibling, leaving that
path untested.

README and SECURITY.md updated: they promised notes "link every candidate result".

All five release/VT contract tests pass.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData
DeusData merged commit fec1022 into main Aug 14, 2026
34 checks passed
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