Skip to content

Digest: report Dependabot security updates off, and Dependabot PRs that did not merge #228

Open

Description

@twistedmelonman

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."

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.

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.

Activity

  1. twistedmelonman commented on Oct 25, 2026

    @twistedmelonman
    MemberAuthor

    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 #120 amelia-boone case). The second needs a different owner and a different alert text, because the fix is in main, not in the PR.


    Generated by Claude Code

  2. twistedmelonman commented on Oct 29, 2026

    @twistedmelonman
    MemberAuthor

    Label contract from dependabot-auto-merge v3 (smartwatermelon/github-workflows#206)

    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.

  3. twistedmelonman commented on Oct 30, 2026

    @twistedmelonman
    MemberAuthor

    Parts 1 and 2 merged (2026-10-30, #243)

    • 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.
  4. twistedmelonman commented on Oct 30, 2026

    @twistedmelonman
    MemberAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions