Skip to content

ci: make the four required status checks reportable on every PR#645

Merged
hyperpolymath merged 2 commits into
mainfrom
claude/admiring-mayer-tfaeht
Jun 21, 2026
Merged

ci: make the four required status checks reportable on every PR#645
hyperpolymath merged 2 commits into
mainfrom
claude/admiring-mayer-tfaeht

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

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:

Residuals that need branch-protection admin (cannot be done from repo files)

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.ai/code/session_01UXXpaoiATzxcn3kW3eTM26


Generated by Claude Code

Four branch-protection-required checks sit permanently at "Expected —
Waiting for status to be reported" because the contexts they pin are only
conditionally produced:

- analyze (actions, none)                  codeql.yml gated to base main/master
- hypatia / Hypatia Neurosymbolic Analysis hypatia-scan.yml gated to base main/master
- Hypatia                                  GitHub App check (rides on the scan)
- governance / Validate Hypatia baseline   emitted by the standards governance
                                           reusable; this repo runs a standalone
                                           `governance` job (#603/#604) instead

This fixes the repo-side of the mismatch:

* codeql.yml / hypatia-scan.yml: drop the pull_request `branches:[main,master]`
  filter so the required jobs run on PRs against every base. A required check
  whose workflow is branch-filtered is never created, so it blocks forever.
* Add governance-baseline.yml + governance-baseline-impl.yml: a LOCAL reusable
  (no cross-repo @main coupling, no BP008 concurrency collision) whose
  `governance` / "Validate Hypatia baseline" job re-emits the pinned context
  name without disturbing the standalone governance gate. Additive: the repo
  now emits both `governance` and `governance / Validate Hypatia baseline`.

The `Hypatia` app check and any other pinned `governance / *` sub-checks remain
a branch-protection reconciliation (repoint pins to emitted names) needing
repo-admin access; documented in the PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UXXpaoiATzxcn3kW3eTM26
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 41 issues detected

Severity Count
🔴 Critical 2
🟠 High 23
🟡 Medium 16

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action denoland/setup-deno@v2 needs attention",
    "type": "unpinned_action",
    "file": "publish-jsr.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in instant-sync.yml",
    "type": "secret_action_without_presence_gate",
    "file": "instant-sync.yml",
    "action": "peter-evans/repository-dispatch",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Shell execution -- validate input before passing to shell (1 occurrences, CWE-78)",
    "type": "js_exec_sync",
    "file": "/home/runner/work/affinescript/affinescript/packages/affinescript-cli/mod.js",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "reason": "Shell execution -- validate input before passing to shell (2 occurrences, CWE-78)",
    "type": "js_exec_sync",
    "file": "/home/runner/work/affinescript/affinescript/packages/affine-vscode/mod.js",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "reason": "Shell execution -- validate input before passing to shell (1 occurrences, CWE-78)",
    "type": "js_exec_sync",
    "file": "/home/runner/work/affinescript/affinescript/affinescript-vite/src/affine-plugin-improved.js",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "high"
  },
  {
    "reason": "expect() in hot path (32 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/affinescript/affinescript/affinescriptiser/src/codegen/wasm_gen.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "expect() in hot path (29 occurrences, CWE-754)",
    "type": "expect_in_hot_path",
    "file": "/home/runner/work/affinescript/affinescript/affinescriptiser/src/codegen/affine_gen.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "unsafe block -- requires SAFETY comment (2 occurrences, CWE-676)",
    "type": "unsafe_block",
    "file": "/home/runner/work/affinescript/affinescript/runtime/src/panic.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "unsafe block -- requires SAFETY comment (1 occurrences, CWE-676)",
    "type": "unsafe_block",
    "file": "/home/runner/work/affinescript/affinescript/runtime/src/alloc.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  },
  {
    "reason": "unsafe block -- requires SAFETY comment (3 occurrences, CWE-676)",
    "type": "unsafe_block",
    "file": "/home/runner/work/affinescript/affinescript/runtime/src/ffi.rs",
    "action": "flag",
    "rule_module": "code_safety",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath marked this pull request as ready for review June 21, 2026 19:01
@hyperpolymath hyperpolymath enabled auto-merge (squash) June 21, 2026 19:01
@hyperpolymath hyperpolymath disabled auto-merge June 21, 2026 19:10
@hyperpolymath hyperpolymath merged commit 8b33cab into main Jun 21, 2026
@hyperpolymath hyperpolymath deleted the claude/admiring-mayer-tfaeht branch June 21, 2026 19:10
hyperpolymath added a commit to hyperpolymath/hypatia that referenced this pull request Jun 21, 2026
## What

Removes the `pull_request: branches:[main, master]` filter from
`codeql.yml` and `hypatia-scan.yml` so their **required** jobs —
`analyze (actions, none)` / `analyze (javascript-typescript, none)` and
`hypatia / Hypatia Neurosymbolic Analysis` — report on PRs against
**every** base. `push:` and `schedule:` triggers are unchanged.

## Why

A required status check whose workflow is branch-filtered is never
*created* on a non-matching base, so the PR sits permanently at
*"Expected — Waiting for status to be reported"* — a silent merge block
indistinguishable from a hang.

This mirrors hyperpolymath/affinescript#645, which diagnosed and fixed
the same class. No governance change is needed here: this repo still
emits `governance / Validate Hypatia baseline` natively via the
`standards` reusable (verified on a recent PR), so only the two
branch-gated workflows needed de-gating.

🤖 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>
hyperpolymath added a commit that referenced this pull request Jun 21, 2026
## What

Documents the CI failure class diagnosed and fixed in #645 (merged), so
it doesn't have to be re-derived next time.

- **`docs/ci/required-checks.adoc`** (new) — the *"Expected — Waiting
for status to be reported"* trap: what it means (a required context
never reported ≠ a failure), the three mechanisms that cause it
(branch-filtered workflow / renamed-migrated job / external app check),
a diagnosis recipe (`get_check_runs` vs the required pins), the
guardrail rule, and the estate required-vs-emitted matrix.
- **`.machine_readable/6a2/PLAYBOOK.a2ml`** — new `[ci-required-checks]`
operational entry pointing at the doc + tracking issue.

## Why

This is the "sketch area + human/machine documentation" half of the
close-out for the required-checks work. The fix itself shipped in #645;
this preserves the *reasoning* and the *rule* (a context may be marked
Required only if it is emitted unconditionally on every PR that can
target the protected branch).

Refs #645 · #650 (pin reconciliation) · hyperpolymath/hypatia#519
(`Hypatia` app check). DOC-FORMAT-compliant (`.adoc`).

🤖 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>
hyperpolymath added a commit to hyperpolymath/gitbot-fleet that referenced this pull request Jun 21, 2026
## What

Removes the `pull_request: branches:[main, master]` filter from
`codeql.yml` and `hypatia-scan.yml` so their **required** jobs —
`analyze (actions, none)` / `analyze (rust, none)` and `hypatia /
Hypatia Neurosymbolic Analysis` — report on PRs against **every** base.
`push:` and `schedule:` triggers are unchanged.

## Why

A required status check whose workflow is branch-filtered is never
*created* on a non-matching base, so the PR sits permanently at
*"Expected — Waiting for status to be reported"* — a silent merge block
indistinguishable from a hang.

Observed live on this repo: PR #307 had **no** `hypatia / Hypatia
Neurosymbolic Analysis` and **no** `Hypatia` check at all. This mirrors
hyperpolymath/affinescript#645, which diagnosed and fixed the same
class. No governance change is needed here — this repo still emits
`governance / Validate Hypatia baseline` natively via the `standards`
reusable.

🤖 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>
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.

2 participants