Skip to content

fix(ci): declare the six reusable-workflow callers in actions.lock - #12

Closed
hyperpolymath wants to merge 3 commits into
mainfrom
fix/actions-lock-reusable-callers
Closed

fix(ci): declare the six reusable-workflow callers in actions.lock#12
hyperpolymath wants to merge 3 commits into
mainfrom
fix/actions-lock-reusable-callers

Conversation

@hyperpolymath

Copy link
Copy Markdown
Contributor

Four active workflows fail with startup_failure — rejected before any job runs, so no check run and no logs.

Cause: actions.lock's workflows map has no key for six workflows that call a reusable workflow from hyperpolymath/standards (governance, hypatia-scan, mirror, rust-ci, scorecard, secret-scanner).

A reusable-workflow caller needs its own key even when it pins no third-party actions. An absent key and an under-declared one both kill the run at startup.

gh actions-lock does not add caller keys — so regenerating the lock, which fixed the codeql drift across eight other repos here, does not fix this shape. These have to be hand-added.

Each of the six was checked for non-reusable uses: first; all six have none, so [] is correct rather than a populated list.

Verified: the file still parses as YAML, and the workflows map now has 32 keys matching the 32 files in .github/workflows/.

Four active workflows here fail with startup_failure — rejected before any
job runs, so no check run and no logs.

Cause: actions.lock's workflows map has no entry for six workflows that call
a reusable workflow from hyperpolymath/standards:

  governance.yml      -> governance-reusable.yml@81dbf2dd
  hypatia-scan.yml    -> hypatia-scan-reusable.yml@81dbf2dd
  mirror.yml          -> mirror-reusable.yml@d135b05b
  rust-ci.yml         -> rust-ci-reusable.yml@412a7031
  scorecard.yml       -> scorecard-reusable.yml@81dbf2dd
  secret-scanner.yml  -> secret-scanner-reusable.yml@c65436ee

A reusable-workflow CALLER needs its own key in the lock even when it pins no
third-party actions. An absent key and an under-declared one both kill the run
at startup. 'gh actions-lock' does not add caller keys, so regenerating the
lock — which fixed the codeql drift elsewhere in this estate — does not fix
this shape. The entries have to be hand-added.

Each of the six was checked for non-reusable 'uses:' first; all six have none,
so '[]' is the correct value rather than a populated list.

Verified: the file still parses as YAML and the workflows map now has 32 keys,
matching the 32 workflow files in .github/workflows/.

Distinct from the Dependabot lock-drift class fixed across eight repos
yesterday (IDApTIK#99, burble#198, cadastra#35, canonical-ums#17,
chronicles-of-slavia#75, gossamer#157, progblocks#25, stapeln#37).
Correcting the previous commit on this branch. It declared the six
reusable-workflow callers as '[]', which does NOT clear startup_failure.

Established by paired control against a repo where the same workflow now
runs. metadatastician/gossamer, Governance = 'failure' (i.e. it executes):

    '.github/workflows/governance.yml':
        - 'hyperpolymath/standards@6208833f327ea18f58f558762dbed9bc0effc049'

and gossamer's governance.yml calls
governance-reusable.yml@6208833f327ea18f58f558762dbed9bc0effc049 - so the
lock entry MIRRORS THE PIN.

Against metadatastician/harvard-dehallucinator, Governance = startup_failure,
whose lock has exactly '.github/workflows/governance.yml': []. Freshly
dispatched runs there still startup_failure, so this is a live difference and
not a stale latest-run artefact.

So the rule is: a reusable-workflow caller's lock entry must list
'<owner>/<repo>@<sha>' of the called workflow's source repository, matching
the pin in the workflow file. '[]' is only correct for a workflow that calls
nothing at all.

Each of the six now names hyperpolymath/standards at the SHA its own workflow
pins - three distinct SHAs across the six, not one.
@gitar-bot

gitar-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown

Gitar is working

Gitar

@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath

Copy link
Copy Markdown
Contributor Author

Closing: the theory behind this PR was disproved by measurement.

I proposed that reusable-workflow caller entries in actions.lock were causing startup_failure. Building the complete fix — caller entries naming hyperpolymath/standards@<sha> plus all 13 transitive dependency definitions — still produced startup_failure on two separate repos (harvard-dehallucinator and rsr-template-repo), with unfixed main as the control.

So the lockfile is not the cause for this shape, and this change would have been churn. The genuine lock-drift class is separate and is fixed and merged (8 repos yesterday, plus paint-type and svalinn today).

The remaining diagnostic for this shape is the GitHub web-UI red banner on a failing run, which is the one channel known to state the reason.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant