Skip to content

Fix/ci context producibility - #63

Merged
hyperpolymath merged 3 commits into
mainfrom
fix/ci-context-producibility
Oct 3, 2026
Merged

hyperpolymath merged 3 commits into
mainfrom
fix/ci-context-producibility

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Closes #

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (would change existing behaviour)
  • 🕳️ Soundness fix (fixes a checker/proof false-negative)
  • 📖 Documentation
  • 🧹 Refactor / tech debt (behaviour-preserving)
  • ⚡ Performance
  • 🔧 Build / CI / tooling

How has this been verified?

Checklist

  • My commits are signed (git commit -S).
  • I ran the project's own checks/tests locally and they pass.
  • New files carry the correct SPDX-License-Identifier (code/config MPL-2.0,
    prose CC-BY-SA-4.0); I did not relicense existing files.
  • Docs are updated, and no public claim now overstates what the code does.
  • I have not introduced a soundness hole (or I have flagged where I might have).

Notes for reviewers

…xt contract (#17)

`main`'s rules required the *bare* status context `Hypatia Neurosymbolic
Analysis`. Nothing can publish that name: a job that calls a reusable workflow
publishes `<caller> / <inner job name>`, so this repository published
`scan / Hypatia Neurosymbolic Analysis`, and no check run ever carried the
required string. Result: green board, permanently blocked merges (issue #17).

Three changes, all mechanical and independently checkable:

* `.github/workflows/hypatia-scan.yml` — caller job `scan` -> `hypatia`, so the
  published name is the estate-canonical
  `hypatia / Hypatia Neurosymbolic Analysis`
  (standards docs/audits/audit-hypatia-pin-orphan-2026-05-27.adoc). The wrapper
  header records the published string so the next reader does not have to
  rediscover the naming rule.
* `.machine_readable/CI-CONTEXTS.a2ml` — machine-readable contract: the wrapper
  caller ids, the exact contexts they publish, what may be armed as a required
  check, and the strings that can never be satisfied (`bare-hypatia`).
* `tools/check-ci-contexts.sh` + `.github/workflows/ci-contexts.yml` — the guard.
  Offline half: every contract entry must still describe the workflow as it is
  (caller job id present, contexts prefixed by it) — deterministic, fails the
  build, no token needed. Live half: every context required by this repository's
  branch rulesets (and legacy branch protection when readable) is checked for
  producibility, advisory by default and fatal under
  REQUIRED_CONTEXTS_STRICT=1, following the estate's "no manufactured red noise"
  rule. The bare legacy name, if required, is reported with its exact
  replacement.

`actions.lock` regenerated with the official extension (`gh actions-lock`,
v0.1.6) in the same commit, as the lockfile gate requires; the diff is the single
new workflow entry.

Verified before pushing: `lake build` 20/20; the guard passes and fails as
designed when the caller job is renamed back; `check-actions-lock-gate.sh`,
`check-docs-presence.sh`, `check-allowed-actions.sh`,
`check-canonical-names.sh origin/main`, `check-licence-consistency.sh`,
`check-trusted-base.sh` and `check-workflow-staleness.sh` all pass.
The CI context contract job referenced , which trips the Hypatia
scanner's RE001 research extension ('job references secrets.* but does not
install step-security/harden-runner'), and surfaced as a new code-scanning alert
on this pull request.

step-security/harden-runner is not in the estate actions allowlist, so adding it
is not an option (it would fail the allowlist preflight and the repository's
selected-actions policy). Use  instead: the job needs only read
access, it can read branch rulesets with that token, and the script states
plainly what it could not read (legacy branch protection needs a credential with
Administration: read, which the Actions token cannot have) rather than guessing.

Also move the new workflow to actions/checkout@v7.0.1, the pin every other
estate workflow uses, and record it in actions.lock with the official extension.
@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 3, 2026 10:18
@hyperpolymath
hyperpolymath disabled auto-merge October 3, 2026 10:20
@hyperpolymath
hyperpolymath merged commit ad7bfdf into main Oct 3, 2026
40 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the fix/ci-context-producibility branch October 3, 2026 10:20
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