fix(ci): label-sync ignored apply=true and dry-ran every time - #19
Merged
Merged
Conversation
Run 33779012797 was dispatched with apply=true, logged 179 "would create" lines,
created nothing, and reported success.
DRY: ${{ inputs.apply == true && '' || '--dry-run' }}
GitHub's &&/|| select a value rather than compute a boolean: `A && B || C` yields
B only when B is itself truthy. The intended true branch here is the empty
string, which is falsy, so every run fell through to --dry-run. The apply path
was unreachable, and silently so -- a dry run is a legitimate success, so nothing
could fail.
Branch in the shell instead, where an empty string is not overloaded, and print
the chosen mode so a repeat is visible in the log and the step summary.
marcosfdzmdz
approved these changes
Sep 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #18.
label-sync.ymlacceptedapply=trueand dry-ran anyway. Run 33779012797 logged 179would createlines, created nothing, and reported success.GitHub's
&&/||select a value rather than compute a boolean:A && B || CyieldsBonly whenBis itself truthy. The intended true branch here is the empty string, which is falsy, so every run fell through to--dry-run. The apply path was unreachable — and silently, because a dry run is a legitimate success, so nothing could fail.Fix
Branch in the shell, where an empty string is not overloaded, and print the chosen mode to the log and the step summary so a repeat is visible rather than inferred from a missing side effect.
Verified
Dispatched from this branch with
apply=true— run 33779196354:The one failure was
rumi-app/rumi: HTTP 500, a transient API error rather than a logic fault; that label was created afterwards and a fresh--dry-runnow reportscreated 0 | recoloured 0 | failed 0, i.e. nothing left to do.The labels are live: software repos carry
cowtrol,cross / platform,data,infra,rumi; hardware repos carryrumiandrumi pro. The label override documented inPROJECT_SYNC.mdworks everywhere for the first time — before this it existed only inmanagement.🤖 Generated with Claude Code
https://claude.ai/code/session_01WjzymfEFess2pegpLiVjxp