Symptom
Calling the reusable estate audit from a metadatastician org repo produces a run that
never starts a job:
conclusion = failure jobs.total_count = 0
run.name == run.path == .github/workflows/main-estate-audit.yml
It does not appear in the calling PR's check rollup, so it fails silently rather than
red — the workflow looks configured while never running.
Reproduced from metadatastician/large-language-michelangelo (PR #1 there), calling
main-estate-audit.yml@31b5b45a — a ref that resolves, at a commit where the file exists
and declares workflow_call.
Cause
The workflow_call contract is fine. The problem is inside the job. At 31b5b45a,
.github/workflows/main-estate-audit.yml contains 27 uses: refs, 26 of them unpinned
branch refs:
uses: hyperpolymath/cicd-suite/actions/required-files-check@main
uses: hyperpolymath/cicd-suite/actions/code-hygiene-check@main
uses: hyperpolymath/cicd-suite/actions/manifest-check@main
uses: hyperpolymath/cicd-suite/actions/idris2-abi-check@main
uses: hyperpolymath/cicd-suite/actions/zig-hexadeca-check@main
... 21 more
Only actions/checkout is SHA-pinned.
The org enforces sha_pinning_required. Under that policy a non-SHA ref is a startup
failure at 0s, which reports as no check rather than a failing one.
So the audit cannot run in any org repo that adopts it.
Why this one matters more than a normal pin problem
This is the workflow whose job is to audit the estate's compliance. As written it is itself
non-compliant with the estate's own pinning policy, and the failure mode is invisible: a repo
adopting it gets a workflow file, a green-looking PR, and no audit.
Suggested fix
Pin the 26 internal action refs to full commit SHAs.
Two cautions from experience elsewhere in the estate:
- Pin to commit SHAs, not blob SHAs. A file's blob hash is also 40 hex characters and
satisfies a naive pin gate while being unresolvable. Verify each with
gh api repos/<owner>/<repo>/commits/<sha>.
- The in-repo comment says these are
@main deliberately, to test the actions from the
current revision rather than older implementations on main. That intent is reasonable —
but it is incompatible with sha_pinning_required for external callers. It may need
splitting: a self-test workflow that uses ./actions/... local paths (which need no pin),
and a separate published reusable that is fully SHA-pinned for callers.
Option 2 is likely the real fix, since local ./actions/... refs give the
test-this-revision behaviour without any pin at all.
Symptom
Calling the reusable estate audit from a
metadatasticianorg repo produces a run thatnever starts a job:
It does not appear in the calling PR's check rollup, so it fails silently rather than
red — the workflow looks configured while never running.
Reproduced from
metadatastician/large-language-michelangelo(PR #1 there), callingmain-estate-audit.yml@31b5b45a— a ref that resolves, at a commit where the file existsand declares
workflow_call.Cause
The
workflow_callcontract is fine. The problem is inside the job. At31b5b45a,.github/workflows/main-estate-audit.ymlcontains 27uses:refs, 26 of them unpinnedbranch refs:
Only
actions/checkoutis SHA-pinned.The org enforces
sha_pinning_required. Under that policy a non-SHA ref is a startupfailure at 0s, which reports as no check rather than a failing one.
So the audit cannot run in any org repo that adopts it.
Why this one matters more than a normal pin problem
This is the workflow whose job is to audit the estate's compliance. As written it is itself
non-compliant with the estate's own pinning policy, and the failure mode is invisible: a repo
adopting it gets a workflow file, a green-looking PR, and no audit.
Suggested fix
Pin the 26 internal action refs to full commit SHAs.
Two cautions from experience elsewhere in the estate:
satisfies a naive pin gate while being unresolvable. Verify each with
gh api repos/<owner>/<repo>/commits/<sha>.@maindeliberately, to test the actions from thecurrent revision rather than older implementations on main. That intent is reasonable —
but it is incompatible with
sha_pinning_requiredfor external callers. It may needsplitting: a self-test workflow that uses
./actions/...local paths (which need no pin),and a separate published reusable that is fully SHA-pinned for callers.
Option 2 is likely the real fix, since local
./actions/...refs give thetest-this-revision behaviour without any pin at all.