Repository navigation
fix(ci): correct the labeler sync input; cover composite actions in dependabot - #71
Merged
Merged
Conversation
…emoved labeler.yml passed 'syncLabels', but the action's input id is 'sync-labels'. The runner logs "Unexpected input(s) 'syncLabels'" and the action falls back to its declared default (off), so labels were never removed on synchronize despite the step comment promising it. Audit of every with: key against each action's declared inputs (fetched per-pin from the action repos) found this as the only mismatch in the repo. Evidence: run 37394726141's log records the ignored input. Both v5 and the v7 landed in #69 declare the kebab-case id.
…action's pin up The root github-actions entry covers .github/workflows plus a repo-root action.yml, not .github/actions/*/action.yml. Observed live: #69's setup-uv bump updated every workflow and skipped .github/actions/build-package, leaving its pin behind and on a path to silent rot - the failure mode dependabot.yml exists to prevent. Adds a directory-scoped entry (actions/github-script pattern) and aligns the pin to the SHA the workflows now use.
This was referenced Oct 6, 2026
iap
added a commit
that referenced
this pull request
Oct 6, 2026
The runner only warns on an undeclared with: key and silently ignores the value - the class behind the syncLabels / sync-labels defect fixed in #71. Verified this is a real gap before adding the gate: with that defect reintroduced, actionlint exits 0 and the full suite passes unchanged, so only the live runner log ever showed it. The check resolves local actions from disk and pinned remote actions from raw.githubusercontent.com (action.yml, then action.yaml). A fetch failure is a tool error (exit 2), never a pass - it cannot certify inputs it could not read. Unit tests inject the fetch, so they run offline; the CI step is the only networked consumer. The new step sits with the other lint gates.
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.
Pull request
What changed
Two CI-layer defects found while auditing every action invocation against the action's own declared inputs, and re-checking what dependabot actually covers after #69.
labeler.ymlpassedsyncLabels: true; the real input id issync-labels. The runner logsUnexpected input(s) 'syncLabels'and the action falls back to its declared default (off) — so stale labels were never removed on synchronize, contrary to the step comment promising exactly that..github/actions/build-package, leaving its pin behind — the exact silent rotdependabot.ymlexists to prevent.Affected surface
tools/, CI, docs)pstack/) — requires a rebuild from the current pinProvenance — required if
pstack/changedn/a — no
pstack/change in this PR.Verification
uv run --frozen ruff check toolsAll checks passed!uv run --frozen pytest -q94 passed in 110.76s (0:01:50)uv run --frozen actionlintexit 0uv run --frozen python tools/check_action_shell.pycomposite action shell blocks: cleangit statusshows the intendedpstack/diffn/a - no pstack/ change (diff is .github/, CHANGELOG.md, CONTRIBUTING.md only)bun run test+bun run typecheck)n/a - not touchedEvidence for the labeler claim
Run 37394726141 (
PR labels) log, verbatim:Both v5 and v7 declare the kebab-case id; the v7 bump in #69 did not change it.
The audit that found this compared every
uses:ref onmainagainst that pin's declaredinputs(fetched per-pin from the action repos) — it was the only mismatch in the repository.Why the composite-action dependabot entry
The root
github-actionsentry scans.github/workflowsplus a repo-rootaction.yml, not.github/actions/*/action.yml. Differential evidence: #69 movedastral-sh/setup-uvinci.ymlandmodel-drift-watch.ymland left.github/actions/build-package/action.ymlat the old SHA. Directory-scoped entries are the established pattern (cf.actions/github-scriptdependabot.yml). The pin in that action is caught up to the SHA the workflows now use.Notes for reviewers
sync-labels: trueis the intended behaviour: v6.1.0+ preserves manually-added labels while syncing, so this removes stale glob-matched labels without dropping human labels.pull_request_targetexecutes the workflow from the base branch, so this PR's own label run still logs theUnexpected inputwarning — it ranmain's copy. The fix takes effect for PRs opened after this merges; the warning's absence there is the live check.