You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Digest: report Dependabot security updates off, and Dependabot PRs that did not merge #228
Part of the "apply every Dependabot update immediately" rollout (Andrew, 2026-10-25). After that change no human approves Dependabot PRs, so the digest is the only place that shows when the automatic path fails.
1. Dependabot security updates: on or off
scripts/dependabot-digest/standards.sh reads repos/{o}/{r}/vulnerability-alerts (dev-env#220). Alerts on does not mean security-update PRs open. STATUS.md (2026-10-21): on 7 NOS repos and vpn-lan-bridge, "Security updates were left off."
Read GET repos/{o}/{r}/automated-security-fixes (enabled, paused).
Check that the digest App installation has the permission this endpoint needs; record it in docs/runbooks/dependabot-digest-credentials.md if a scope change is necessary.
2. Dependabot PRs that did not merge
The digest buckets open Dependabot PRs by what a human must do. After github-workflows#203, every open Dependabot PR older than a few hours is a failure of the automatic path.
The paste-ready merge-lock lines stay for local use, but they are no longer the main path.
3. Run cadence
The digest runs at 14:00 UTC daily. With daily Dependabot schedules and immediate security PRs, decide whether that is enough, or whether the "not merged" check runs more often (the site-monitor launchd dispatch on MIMOLETTE is an option).
Tests: bash scripts/dependabot-digest/tests/run-tests.sh, with fixtures for each new state.
Linked to tracker #229, concern D. With the all-checks gate in github-workflows#203, a red main blocks every Dependabot PR, security fixes included. The "not merged" bucket must split "red on its own content" from "red because the default branch is red" (the #120amelia-boone case). The second needs a different owner and a different alert text, because the fix is in main, not in the PR.
When the gate does not merge a Dependabot PR, it adds dependabot-blocked and exactly one reason label. A later merge removes them. The digest can read these instead of guessing.
Label
Meaning
Who acts
dependabot-blocked:red-check
A check failed on the PR and is not failing on the base branch (or the base branch could not be read).
Fix the bump.
dependabot-blocked:main-red
Every failing check also fails on the base branch head.
Fix main first (decision D).
dependabot-blocked:timeout
Checks still running after 60 minutes.
Re-run, or look at slow checks.
dependabot-blocked:no-checks
No other check ran, or all were skipped.
Add a required check such as standards-check.
dependabot-blocked:cannot-evaluate
Empty dependency names, unreadable head or checks, or the run cannot see its own check run.
Investigate the run.
dependabot-blocked:merge-failed
Gate passed, gh pr merge failed.
Check branch protection and approvals.
A run that stops because the PR head moved adds no label: the run for the new head decides.
Live only after the v3 tag is cut and callers move to it.
Security updates: the digest has a "Dependabot security updates" section. Only 200 {"enabled": false} counts as off; paused is a gap; forks are exempt. The real "off" response is not captured: toggling one repo off and on was refused by the auto-mode classifier. So a 404 or any other answer shows as unreadable, never as off. The endpoint needs administration=read (X-Accepted-GitHub-Permissions, seen 2026-10-30), which the digest App already has.
Not merged automatically: the digest now leads with PRs open 6 hours or more (DIGEST_STALE_HOURS), or labeled dependabot-blocked by the gate. Each row has the reason (the gate's label first, else computed) and who acts. main-red rows sort first and is used only when every failure is also red on a readable base branch.
ntfy: one push per run when that section is not empty, to the site monitor's NTFY_TOPIC; priority 4 when a red default branch is involved. An empty topic or a failed delivery fails the run after the issue is written.
Survey on 2026-10-30 with the per-owner tokens: security updates on in all 38 readable smartwatermelon and nightowlstudiollc repos (26 + 12). claude-wrapper unread (its App token needs 1Password, blocked by the sandbox).
Open
Part 3, cadence: unchanged (daily, 14:00 UTC). Proposal: have the MIMOLETTE launchd job also dispatch the digest every few hours. Needs a decision.
Live check: the next run is the first under the App token. Check that the security-updates section reads (not all unreadable) and whether a push arrives.
Part 3 decided (Andrew, 2026-10-30): the digest stays daily at 14:00 UTC. No extra dispatch. What remains open here is the first live run on 2026-10-31: check that the security-updates section reads, and whether the ntfy push arrives.
Activity
twistedmelonman commentedon Oct 25, 2026
Linked to tracker #229, concern D. With the all-checks gate in github-workflows#203, a red
mainblocks every Dependabot PR, security fixes included. The "not merged" bucket must split "red on its own content" from "red because the default branch is red" (the #120amelia-boonecase). The second needs a different owner and a different alert text, because the fix is inmain, not in the PR.Generated by Claude Code
twistedmelonman commentedon Oct 29, 2026
Label contract from dependabot-auto-merge v3 (smartwatermelon/github-workflows#206)
When the gate does not merge a Dependabot PR, it adds
dependabot-blockedand exactly one reason label. A later merge removes them. The digest can read these instead of guessing.dependabot-blocked:red-checkdependabot-blocked:main-redmainfirst (decision D).dependabot-blocked:timeoutdependabot-blocked:no-checksstandards-check.dependabot-blocked:cannot-evaluatedependabot-blocked:merge-failedgh pr mergefailed.A run that stops because the PR head moved adds no label: the run for the new head decides.
Live only after the
v3tag is cut and callers move to it.twistedmelonman commentedon Oct 30, 2026
Parts 1 and 2 merged (2026-10-30, #243)
200 {"enabled": false}counts as off;pausedis a gap; forks are exempt. The real "off" response is not captured: toggling one repo off and on was refused by the auto-mode classifier. So a 404 or any other answer shows as unreadable, never as off. The endpoint needsadministration=read(X-Accepted-GitHub-Permissions, seen 2026-10-30), which the digest App already has.DIGEST_STALE_HOURS), or labeleddependabot-blockedby the gate. Each row has the reason (the gate's label first, else computed) and who acts.main-redrows sort first and is used only when every failure is also red on a readable base branch.NTFY_TOPIC; priority 4 when a red default branch is involved. An empty topic or a failed delivery fails the run after the issue is written.Survey on 2026-10-30 with the per-owner tokens: security updates on in all 38 readable smartwatermelon and nightowlstudiollc repos (26 + 12).
claude-wrapperunread (its App token needs 1Password, blocked by the sandbox).Open
twistedmelonman commentedon Oct 30, 2026
Part 3 decided (Andrew, 2026-10-30): the digest stays daily at 14:00 UTC. No extra dispatch. What remains open here is the first live run on 2026-10-31: check that the security-updates section reads, and whether the ntfy push arrives.