Skip to content

Cache activity before opening retirement PRs - #120

Merged
philiptaron merged 2 commits into
NixOS:mainfrom
philiptaron:issue-100
Sep 26, 2026
Merged

philiptaron merged 2 commits into
NixOS:mainfrom
philiptaron:issue-100

Conversation

@philiptaron

@philiptaron philiptaron commented Jul 8, 2026 •

Copy link
Copy Markdown
Collaborator

I hate those "whoops" issues that #100 creates. Here's one kind of dumb take on fixing it. Sorry for the bash overload. I didn't want to rewrite this in github script first.

I rewrote the thing in GitHub script.

What does it do? In short, we persist the latest observed merge activity and the first inactive observation between workflow runs using a GitHub workflow artifact. A missing /commits response now starts a confirmation window instead of immediately opening a retirement PR. The result is that cached positive activity can keep active committers from being retired when GitHub returns an empty result spuriously.


I don't really love the resulting code. I'd sort of like to rewrite the whole thing.

I rewrote the whole thing.


Fixes #100

@philiptaron
philiptaron requested a review from mweinelt July 8, 2026 22:11
@philiptaron
philiptaron requested a review from infinisil as a code owner July 8, 2026 22:11

@MattSturgeon MattSturgeon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome!

I won't pretend to have fully digested the bash impl, so don't be offended if I spot something worth commenting on later.

SGTM overall, though. Nice idea to mitigate GitHub's flakiness!

Comment thread .github/workflows/retire.yml Outdated
Comment thread .github/workflows/retire.yml Outdated
Comment thread .github/workflows/retire.yml Outdated
Comment thread scripts/retire.sh Outdated
@philiptaron

Copy link
Copy Markdown
Collaborator Author

Every one of your comments makes me want to rewrite it in github-script, @MattSturgeon :-)

Thanks for taking a look. I'll cogitate on these comments.

@philiptaron

Copy link
Copy Markdown
Collaborator Author

I rewrote it in GitHub script.

@MattSturgeon MattSturgeon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

Comment thread scripts/README.md Outdated
Comment thread scripts/restore-cache.js Outdated
Comment thread scripts/retire-local.js Outdated
Comment thread scripts/retire.js Outdated
@philiptaron
philiptaron force-pushed the issue-100 branch 2 times, most recently from 0cb4b2c to 60b7076 Compare September 26, 2026 14:23
What does it do? In short, we persist the latest observed merge activity and the first inactive observation between workflow runs using a GitHub workflow artifact.
A missing `/commits` response now starts a confirmation window instead of immediately opening a retirement PR.
The result is that cached positive activity can keep active committers from being retired when GitHub returns an empty result spuriously.

Fixes NixOS#100
Setting `shell: bash` explicitly makes GitHub run steps with
`bash --noprofile --norc -eo pipefail` instead of `bash -e`, so a
failure early in a pipeline fails the step. This makes the manual
`set -o pipefail` in the nomination workflow redundant.

@MattSturgeon MattSturgeon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pushing this through! I didn't clone and test, but I did go over the diff again and everything seems reasonable. Let's give it a go 🚀

@philiptaron
philiptaron merged commit a4dc988 into NixOS:main Sep 26, 2026
1 check passed
@MattSturgeon

Copy link
Copy Markdown
Collaborator

I've re-enabled the retire workflow. Hopefully it behaves itself going forward!

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.

Unreliable /commits endpoint

2 participants