Skip to content

chore(ci): weekly pin report now proves the sibling watchers are alive (#372) - #383

Merged
VijitSingh97 merged 1 commit into
developfrom
fix/372-watcher-liveness
Aug 21, 2026
Merged

chore(ci): weekly pin report now proves the sibling watchers are alive (#372)#383
VijitSingh97 merged 1 commit into
developfrom
fix/372-watcher-liveness

Conversation

@VijitSingh97

Copy link
Copy Markdown
Contributor

Closes #372.

The issue's absent-watcher premise didn't hold (xmrig-bump.yml has fired green on schedule every Monday since July), but the follow-up comment on it named the real residue: a scheduled watcher that silently dies looks exactly like one with nothing to report. The weekly pin report now proves the sibling watchers are alive.

  • New "Watcher liveness" table in the report: for each sibling scheduled watcher (xmrig-bump.yml, links.yml), the last completed schedule-event run's date + conclusion. event=schedule only — a workflow_dispatch proves a hand can trigger it, not that cron still fires.
  • Same "UNREACHABLE IS NOT CURRENT" doctrine as the pin rows: a failed lookup or zero scheduled runs renders UNCHECKED and fails the run; a non-success conclusion renders dead; >16 days since the last scheduled run (two missed Mondays) renders stale.
  • The row() helper takes its sink by nameref so both tables share the one row definition the file's header insists on.
  • Job permissions gain actions: read (the workflow-runs API needs it on the scoped token).

What was run:

  • actionlint 1.7.12 on the file: 0 errors.
  • shellcheck --severity=warning and shfmt -i 2 -d on all three extracted run blocks: clean.
  • The two new gh api calls executed live against this repo — both watchers returned timestamp + success; this surfaced and fixed a real bug (gh api silently switches to POST when -f fields are present; --method GET is now explicit). The zero-scheduled-runs path was exercised against a workflow that has no schedule trigger.
  • zizmor: not installed locally, not run — the new code keeps the file's documented env-indirection rule; CI's zizmor gate is the backstop.

🤖 Generated with Claude Code

#372)

xmrig-bump.yml and links.yml both fire and both succeed, but nothing made
that visible — a scheduled workflow that silently stops looks, from the
tracking issue, exactly like one with nothing to report (the sibling repo
found exactly this: a watcher that had never once run).

tool-bump.yml now queries the latest completed schedule-event run for each
via the Actions runs API and adds a liveness table: a failed lookup or zero
scheduled runs is UNCHECKED (counts into the existing failed counter, same
UNREACHABLE IS NOT CURRENT doctrine as the pin checks); a non-success
conclusion or a run older than 16 days renders bold as dead/stale, never as
a pass. row() now takes its accumulator by name so the pin table and the new
watcher table share the one row-building definition instead of forking it.
Adds `actions: read` to the job's scoped permissions for the runs API call.
@VijitSingh97
VijitSingh97 merged commit cf86867 into develop Aug 21, 2026
9 checks passed
@VijitSingh97
VijitSingh97 deleted the fix/372-watcher-liveness branch August 21, 2026 17:39
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.

Nothing watches the XMRig pin: dependabot cannot see it, and no job compares it to upstream

1 participant