Skip to content

CI: required status check embeds the Julia version, so a pin bump will deadlock every PR #38

Description

@hyperpolymath

Problem

The Optimus-Branch ruleset (created 2026-09-21, id 23793298) requires the status check context:

Julia 1.12.5 / ubuntu-24.04

That context string is generated from the job's matrix values, so the Julia version is part of the required check's name. The moment the pin moves — 1.12.5 → anything else — the workflow starts reporting a check called Julia 1.13.0 / ubuntu-24.04, and the context named in the ruleset is never reported at all.

A required check that never reports is not a failure; it is silence, and silence never satisfies a required status check. Every PR then sits on "Expected — Waiting for status to be reported" indefinitely, clearable only by an admin bypass.

This is latent, not live: the pin currently matches. It will fire on the next Julia bump — most likely via Dependabot or a routine toolchain update, i.e. exactly when nobody is looking at the ruleset.

The same reasoning applies to ubuntu-24.04, which is also pinned deliberately (the R apt pin targets it).

Acceptance criteria

  • The test job's rendered check name is version-stable — e.g. Julia tests — with the Julia and runner versions moved into the step body or kept in the matrix but excluded from the job name:.
  • The Optimus-Branch ruleset's required_status_checks entry is updated to the new context in the same change, so the two never disagree.
  • A Julia pin bump is demonstrated (locally or on a scratch branch) to still report the required context.
  • config/ci/ pin-coupling tests (test_install_pins.jl) still pass — the version must remain asserted somewhere, just not in the check's name.

Notes

Non-obvious constraint for whoever picks this up: do not add a path filter to the workflow carrying a required context. A paths:-filtered workflow reports nothing on a PR that misses its paths, which deadlocks the gate in the same way. This is why contracts (ui.yml, filtered to ui/**) was deliberately excluded from the ruleset.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions