Sitelet https://github.com/msgwing/ZeroSMTP/pull/130
Skip to content

Drop Swift from the merge path; put the measurement in the countdown - #130

Merged
msgwing merged 1 commit into
mainfrom
ci/drop-swift-and-newsworthy-milestones
Aug 16, 2026
Merged

msgwing merged 1 commit into
mainfrom
ci/drop-swift-and-newsworthy-milestones

Conversation

@msgwing

@msgwing msgwing commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Swift is out of the merge path

Measured across five runs:

Job Duration
swift 2.8 – 3.3 min
kotlin 0.6 – 0.8 min
rust 0.3 – 0.4 min
java 0.2 – 0.3 min

Four to ten times everything else. It alone decided how long every merge
waited, for one example.

Moved to swift-weekly.yml, which still builds it on a schedule and on any
push touching swift-zerosmtp.swift or Package.swift. Keeping some
coverage matters more than usual here: Package.swift pins swift-smtp 2.16.0
only because setup-swift cannot install the Swift 6.3 that 2.17+ requires.
That pin breaks the day something upstream moves, and a weekly build is how
we hear about it on a Monday rather than from a contributor.

swift was removed from the required status checks on main first, and
deliberately.
Deleting a job that branch protection still requires leaves
every future PR waiting forever on a check that never reports — the exact
failure mode the comment at the top of lint.yml warns about. Required
checks are now the remaining eleven.

The countdown bot now leads with the number

A countdown on its own is a reminder, and reminders get ignored. "90 days
until Microsoft 365 disables SMTP AUTH"
is not news — everyone already knows
the date.

24,960 public files on GitHub still name smtp.office365.com, down 3%
since this was first measured on 2026-08-16.

That is news, because nobody else publishes it and it answers the question
the deadline itself does not: is anyone actually fixing this? Same
automation, same schedule — but now the post is worth quoting instead of
worth muting.

Details:

  • The figure is read from data/blast-radius.json, never written into the
    workflow, so it cannot go stale.
  • The whole section is skipped if the data is missing or the latest
    sample failed to count. A milestone post carrying a wrong number would be
    worse than one carrying none.
  • The caveats travel with the figure — files containing a hostname, not
    systems that will break; a floor, not a census — with the method linked and
    stated as free to cite.
  • jq emits raw fields and the shell formats them with printf "%'d", the
    same approach blast-radius.yml already uses. Doing thousands separators
    inside jq is possible and unreadable.

Two things.

Swift was the merge bottleneck. Measured across five runs it took 2.8-3.3
minutes while every other job finished in 0.2-0.8 - four to ten times
everything else, and it alone decided how long a merge waited. It is out
of lint.yml and into swift-weekly.yml, which still builds the example on a
schedule and on pushes that touch it, so it cannot rot unnoticed. That
matters more than usual here: Package.swift pins swift-smtp 2.16.0 only
because setup-swift cannot install the Swift 6.3 that 2.17+ needs, and
that pin will break when something upstream moves. A weekly build is how
we hear about it on a Monday instead of from a contributor.

`swift` was also removed from the required status checks on main, first
and deliberately. Deleting a job that branch protection still requires
leaves every future PR waiting forever on a check that never reports -
the failure mode the comment at the top of lint.yml already warns about.

The countdown bot now leads with the measurement. A countdown on its own
is a reminder, and reminders get ignored; "90 days" is not news. "24,960
public files still name smtp.office365.com, down 3% since August" is,
because nobody else publishes it and it answers the question the deadline
itself does not: is anyone actually fixing this.

The figure is read from data/blast-radius.json rather than written into
the workflow, so it cannot go stale. The section is skipped entirely if
the data is missing or the latest sample failed to count - a milestone
post with a wrong number would be worse than one without. The caveats
travel with it: files containing a hostname, not systems that will break,
a floor rather than a census, with the method linked and free to cite.

jq emits raw fields and the shell formats them. Doing thousands
separators inside jq is possible and unreadable.
@github-actions github-actions Bot added the ci label Aug 16, 2026
@msgwing
msgwing merged commit 26d6495 into main Aug 16, 2026
35 checks passed
@msgwing
msgwing deleted the ci/drop-swift-and-newsworthy-milestones branch August 16, 2026 18:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant