Commit 8b33cab
ci: make the four required status checks reportable on every PR (#645)
## Problem
The merge box shows four **required** checks stuck at *"Expected —
Waiting for status to be reported"*. This push confirmed it server-side:
```
- 4 of 4 required status checks are expected.
```
"Expected" is **not** a failure — it means a required context name was
*never reported on the head commit*. Each of the four is produced by a
different mechanism, and each can independently fail to report (proven
against live PRs: affinescript #626, hypatia #517, gitbot-fleet #307):
| Required context | Producer | Why it can sit "Expected" |
|---|---|---|
| `analyze (actions, none)` | `codeql.yml` job `analyze` |
`pull_request:` was gated to `branches:[main,master]` → no run on other
bases → check never created |
| `hypatia / Hypatia Neurosymbolic Analysis` | `hypatia-scan.yml`
reusable caller `hypatia` | same branch gate |
| `Hypatia` | Hypatia **GitHub App** check | external; rides on the scan
— absent on PRs where the scan didn't run (e.g. gitbot-fleet #307) |
| `governance / Validate Hypatia baseline` | the **`standards`
governance reusable** (job `governance` / "Validate Hypatia baseline") |
this repo migrated off that reusable to a standalone `governance` job
(#603/#604), which emits the context **`governance`** instead — so the
pinned name is **orphaned and can never report** |
Root cause (one line): **branch protection pins context strings that
this repo only *conditionally* emits** — a renamed job, branch-filtered
workflows, and an external app — and GitHub renders any
required-but-unproduced context as a permanent "Expected",
indistinguishable from a hang.
## What this PR changes (repo-side fix)
1. **`codeql.yml`** — drop `pull_request: branches:[main,master]`. The
required `analyze (actions, none)` job now runs on PRs against **every**
base. (`push:` unchanged.)
2. **`hypatia-scan.yml`** — same de-gate, so `hypatia / Hypatia
Neurosymbolic Analysis` runs on every PR base (and the `Hypatia` app
check rides along).
3. **`governance-baseline.yml` + `governance-baseline-impl.yml`** (new)
— a **local reusable** whose caller job id `governance` + reusable job
`Validate Hypatia baseline` re-emit the exact pinned context `governance
/ Validate Hypatia baseline`, on every PR. It is:
- **additive** — the standalone `governance.yml` gate is untouched; the
repo now emits both `governance` and `governance / Validate Hypatia
baseline`;
- **safe vs. the reasons #603/#604 left the reusable** — it's *local*
(no `@main` cross-repo coupling) and declares **no** `concurrency:` in
the reusable (avoids the BP008 startup-failure class);
- **a real gate** — validates `.hypatia-baseline.json` with `jq` (no
npm) when present; passes with a notice when absent (this repo's current
state).
## Residuals that need branch-protection admin (cannot be done from repo
files)
- **`Hypatia` app check**: de-gating the scan is the best repo-side
lever, but the app posting is ultimately external. If it still shows
"Expected" on some PRs, either make it post unconditionally or
**de-require** it.
- **Pin reconciliation (the cleaner fix)**: the truly correct change is
to repoint the pins to the names this repo actually emits — `governance
/ Validate Hypatia baseline` → `governance`, and confirm no *other*
`governance / *` sub-checks (the reusable emits 8) are still pinned from
the pre-#603/#604 era. The local-reusable bridge here exists only so the
box can go green **without** that admin access; if you'd rather repoint
the pin, this bridge can be dropped.
## Verification
This PR's own run should now report all four contexts instead of leaving
them "Expected"; `governance / Validate Hypatia baseline` is
self-demonstrating (the new workflow runs on this PR). I'll confirm from
the check-runs once they land.
## Estate note
`codeql.yml` / `hypatia-scan.yml` carry the identical
`branches:[main,master]` PR gate in `hypatia`, `gitbot-fleet`, and
`.git-private-farm`; the same de-gate applies there. The `governance`
divergence is **affinescript-only** — the other three still call the
reusable and emit `governance / Validate Hypatia baseline` natively.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01UXXpaoiATzxcn3kW3eTM26
---
_Generated by [Claude
Code](https://claude.ai/code/session_01UXXpaoiATzxcn3kW3eTM26)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 19bb2e0 commit 8b33cab
4 files changed
Lines changed: 106 additions & 2 deletions
File tree
- .github/workflows
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
6 | 10 | | |
7 | | - | |
8 | 11 | | |
9 | 12 | | |
10 | 13 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
9 | 14 | | |
10 | | - | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| |||
0 commit comments