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
Every caller pins the reusable itself by SHA, then inherits 26 floating edges. A composite renamed or removed on main turns every caller's audit into startup_failure with jobs=0, blamed on the caller (the shape measured on residual-evidence-types and hypatia this week).
Step 3 Required Files Gate demands 7 files and, when red, skips 25 downstream gates including step 14, so a caller can be "green" on 1 of 26 predicates.
Acceptance criteria
All 26 refs pinned to a full SHA whose own gate run was green, with a # <tag or date> comment, and actions.lock transitively closed over them (a lock entry whose SHA does not resolve to itself is fatal; see hypatia #837).
Watched-failing → green: the @main count above is 26 today, 0 after.
Positive control: one caller (residual-evidence-types) dispatches the audit at the pinned SHA and the run has jobs > 0.
A red Required Files Gate no longer skips the other gates silently: the downstream gates run under if: always() with their own predicates, or the summary states "25 gates not evaluated".
Measured (2026-09-22, main = 3b4afaf)
.github/workflows/main-estate-audit.ymlhas 26uses: hyperpolymath/cicd-suite/actions/*@mainreferences (e.g.:54required-files-check,:56code-hygiene-check,:58manifest-check,:60idris2-abi-check).mainturns every caller's audit intostartup_failurewith jobs=0, blamed on the caller (the shape measured on residual-evidence-types and hypatia this week).actions.lockis stale relative to itsuses:refs.Required Files Gatedemands 7 files and, when red, skips 25 downstream gates including step 14, so a caller can be "green" on 1 of 26 predicates.Acceptance criteria
# <tag or date>comment, andactions.locktransitively closed over them (a lock entry whose SHA does not resolve to itself is fatal; see hypatia #837).@maincount above is 26 today, 0 after.jobs > 0.Required Files Gateno longer skips the other gates silently: the downstream gates run underif: always()with their own predicates, or the summary states "25 gates not evaluated".Cross-reference: #9.
🤖 Generated with Claude Code