Skip to content

pr-review-cli: skipped jobs render their lane-expression name instead of a literal name #866

Open

Description

@kyle-sexton

Problem

pr-review-cli.yml names its jobs with ${{ inputs.lane == 'security' && ... }}. When a job is skipped, GitHub shows the raw expression instead of the name. This happens to the status job on a bot, Dependabot or fork PR (if: needs.review-key.result != 'skipped'), and to the subscription leg whenever the key leg reviews. Example: job 120243124089 shows as pr-review-security / inputs.lane == 'security' && 'security-review-subscription' || 'claude-review-subscription'. The old reusables used literal names (claude-review-status in pr-review.yml and security-review in pr-review-security.yml, both at 2fe38c0), so a skipped job kept its name.

Impact today: cosmetic

The current readers treat a skipped AI review check the same as a missing one:

  • claude-code-plugins babysit_merge.py ai_review_holds: a check that is absent or not SUCCESS holds.
  • merge.md lane(): requires length > 0 and every check to succeed.
  • babysit_review_evidence._lane_job: a missing job raises no-lane-job and fails closed.

Why not a per-lane job split

Literal per-lane jobs in one file would emit a skipped check for the other lane on every run, for example pr-review-security / claude-review-status. babysit's AI_REVIEW_CHECKS matches claude-review-status on the last segment, so that check would hold every PR. Getting literal names safely needs one of these:

  • one reusable per lane, generated from a shared source and kept in step by a drift check; or
  • readers that match the full caller-qualified name.

Found while landing ci-workflows#865 for claude-code-plugins#9307.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 23, 2026
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

    needs-triageNot yet classified. Floor until a type and one priority tier are set.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions