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
pr-review-cli: skipped jobs render their lane-expression name instead of a literal name #866
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.pyai_review_holds: a check that is absent or not SUCCESS holds.
merge.mdlane(): 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.
Activity