Skip to content

Automate dependency and Actions updates, and pin what CI runs #77

Description

@SociableSteve

Problem

Dependency maintenance is half automated, and the half that is missing is the one that keeps the
repo current rather than merely unbreached.

Dependabot security updates are enabled on the repository, so a published advisory against
something in package-lock.json raises a pull request. Nothing covers the rest:

  • No version updates. There is no .github/dependabot.yml, so ordinary upgrades happen only
    when somebody thinks to run them. A dependency tree that only ever moves under advisory pressure
    drifts until an upgrade is a project rather than a pull request, and Caroline pins itself to Node
    24 and a specific MCP protocol revision, which makes drift consequential.
  • The Actions are not covered at all. The CI workflow uses actions/checkout@v4 and
    actions/setup-node@v4, floating tags that move under the workflow. Security updates do not
    watch Actions, so nothing raises a pull request when one of them changes or is deprecated, and
    nothing pins what is actually run.

This is a repository that handles Google OAuth refresh tokens, GitHub tokens and LLM provider API
keys, and whose CI runs on every pull request.

Expected outcome

Staying current is routine and visible rather than remembered.

  • Ordinary dependency upgrades arrive as pull requests on a schedule, for the npm manifest and for
    the GitHub Actions, without anybody asking for them.
  • The volume is manageable rather than noise. A wall of individual patch bumps every morning gets
    ignored, and an ignored update stream is the same as no update stream.
  • What CI actually runs is pinned to something immutable rather than to a tag that can be moved,
    and updating that pin is an ordinary reviewed change.
  • The existing hardening in the workflow survives the change: least-privilege permissions and
    persist-credentials: false, both of which are there deliberately and have their reason written
    down.
  • CI stays the gate. An upgrade is merged because lint, typecheck, the suite and both builds
    passed, not because a bot proposed it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions