fix(ci): retire the a2ml manifest gates (D-B) and stop CodeQL on PR/push - #84
Merged
Merged
Conversation
Three red gates on main, three distinct causes. 1. verify-manifests.yml — job "Verify Machine-Readable Manifest Currency" halted at step 3 on .machine_readable/STATE.a2ml, masking steps 4-7 as "skipped", i.e. unknown rather than passing. Per owner ruling D-B the a2ml-keyed steps are retired outright: STATE, ECOSYSTEM and META. All three files are ABSENT, so nothing is moved, nothing is preserved and nothing new connects to a2ml. The requirement survives as issue #81 (re-express the manifests as .deed). 2. verify-manifests.yml — unmasking step 6 exposed an unambiguous defect in a step that had never once executed. "Check TEMPLATE-STANDARDS-AUDIT.adoc currency" extracts the version with `sed 's/v//'`, which on the file's first line `v1.2, 2026-07-26` yields `1.2, 2026-07-26` and is then compared against the literal `1.2`. The document IS v1.2, IS dated 2026-07-26 and DOES reference DEP-09: the gate's extraction was wrong, not the content. Repaired to `sed 's/^v//' | cut -d, -f1 | tr -d '[:space:]'`. Measured both arms against the real file: old yields "1.2, 2026-07-26" (fails), new yields "1.2" (passes). 3. openssf-compliance.yml — same STATE.a2ml demand, masking three further steps. Step retired; the three a2ml filenames are also dropped from the placeholder-token file list, which guards each name with `[ -f ]` and so was already inert for them. 4. codeql.yml — set to workflow_dispatch only. Org code-scanning config 256896 sets allow_advanced: false, so this workflow's SARIF is refused outright; default-setup CodeQL runs separately, is green, and already satisfies the code_scanning ruleset rule. The file is NOT deleted: actions.lock keys an entry to it and deleting it would orphan that entry. Rationale recorded in-file so the trigger is not "restored" by a later reader. Pre-measured locally, not predicted: the four predicates unmasked by these deletions that are NOT changed here — reusable workflow pins (both 40-hex, identical), CHANGELOG presence, placeholder tokens (0 across 7 present files) and Summary — all pass. Scope note: this does NOT turn the "Verify Manifest Files" WORKFLOW green. Its other job, "Verify AI-MANIFEST and README.adoc files", fails independently on two missing README.adoc files whose cure lives on PR #73's branch. The assertion for this change is the job-level check-run "Verify Machine-Readable Manifest Currency", not the workflow conclusion. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YSq3UodR3CjsuAK5yoTzHF
Contributor
|
Warning Review limit reachedNext included review available in 34 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
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. Comment |
4 tasks
hyperpolymath
added a commit
that referenced
this pull request
Sep 24, 2026
…tions.lock drift killing CI (#106) ## Summary Closes the long-standing conflict in #102 by merging `chore/apply-foundation-ci-fixes-20260911` into current main **with every conflict resolved at source**, and fixes the CI/CD breakage that stale branch had masked: Dependabot #105 rewrote `uses:` refs without touching `actions.lock`, which is why **Coverage** and **OikosBot** die at startup (`startup_failure`, zero jobs) on main HEAD and **Governance / Actions lockfile verify** + **Lock Sync Gate** are red. ## Changes **Conflict resolution (15 conflicts, all resolved semantically, not textually)** - main's deliberately evolved state wins everywhere it later re-owned the ground: lockfile-owned pins (#80), retired A2ML gates (#84, #89), fail-closed Hypatia/static-analysis policy (#85), untracked vendored gossamer workflows (#86), the rewritten release pipeline (#91), current `hyperpolymath/standards@092deda` pin. - #102's still-valuable security intent is kept **on top of** main's refs: `persist-credentials: false` on the CodeQL checkout, removal of the dead `analyze (javascript-typescript, none)` required-status context, curated `.gitignore` additions (`zig-cache/`, OCaml artefacts, `.tool-versions`, `*.backup`). - Rejected as damaged: #102's mechanical word-stripping sweep, which corrupted prose ("OCaml/", "Posript", "No new , Python") **and shell logic** (`runtime-policy.yml`, dogfood-gate `find` excludes, pre-commit regex, release.yml's build-detect). Those files are restored to main's text; vendored `third_party/gossamer` is left untouched. - Funding consolidated into the canonical `.github/FUNDING.yml` (legacy duplicate-key file + lowercase twin dropped, invalid empty `indieweb` key removed); root `FUNDING` adoc retained. **CI/CD repair — `actions.lock` resync (the real source of the red gates)** - `codeql.yml` / `oikosbot.yml`: `github/codeql-action` v4.38.0 → v4.38.1 (`1c5b675`) - `coverage.yml`: `codecov/codecov-action` v7.1.0 → v7.1.1 (`303a32d`), `taiki-e/install-action` v2.87.13 → v2.87.17 (`94c31af`) - `release.yml`: drop the stale `slsa-github-generator` entry (the #91 rewrite removed the SLSA job) and prune its now-unreachable dependency records - SHAs verified via `git ls-remote` tag dereference; nested `uses:` graphs re-verified against the upstream `action.yml` at each new tag ## Testing - Faithful local port of `scripts/check-lock-sync.sh` passes **all four clauses** (every `uses:` locked under its workflow path incl. job-level reusable refs; no orphans; transitively closed — 0 dangling edges; every workflow file has a lockfile key). - All 36 tracked workflows + lockfile parse as YAML. - Workflow Security Linter steps run locally: SPDX headers ✅, permissions declarations ✅, no duplicate workflows ✅. - `grep` sweep: zero conflict markers anywhere. - Merge verified: `git merge-base --is-ancestor` confirms the #102 branch is fully contained in this merge. ## RSR Quality Checklist - [x] No banned language patterns - [x] No secrets, credentials, or `.env` files included - [x] Documentation updated for user-facing changes (FUNDING) - [ ] `.machine_readable/STATE.a2ml` — N/A (retired per D-B) <!-- SPDX-License-Identifier: AGPL-3.0-or-later --> --------- Co-authored-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai> Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Retires the a2ml-keyed manifest gates per owner ruling D-B, stops CodeQL firing on PR/push, and fixes one unambiguous defect that the retirement exposed.
This is PR 6a — the first of a three-way split of the original PR 6. It contains only the parts that could be fully pre-measured locally; the hypatia gate (6b) and the Governance parse failure (6c) follow separately, because a five-part PR has five ways to be red and the standing ruling is to land only fully-green PRs.
What changed, and why each
1.
verify-manifests.yml— retire STATE / ECOSYSTEM / META (D-B).Job Verify Machine-Readable Manifest Currency halted at step 3 on
.machine_readable/STATE.a2ml, leaving steps 4–7skipped— unknown, not passing. All three a2ml files are absent, so there is no content to move and nothing to preserve: only steps to remove. The requirement survives as issue #81 (re-express as.deed). Nothing new connects to a2ml.2.
verify-manifests.yml— repair a step that had never once executed.Unmasking step 6 exposed a real defect in Check TEMPLATE-STANDARDS-AUDIT.adoc currency:
The document is v1.2, is dated 2026-07-26, and does reference DEP-09. The gate's own extraction was wrong, not the content — so this is an unambiguous defect fixed directly, per the 09-22 ruling. Both arms were measured against the real file; the old code is a working mutant control.
3.
openssf-compliance.yml— same STATE.a2ml demand, three steps masked.Step retired. The three a2ml filenames are also dropped from the placeholder-token list, where each was already guarded by
[ -f "$f" ]and therefore inert.4.
codeql.yml—workflow_dispatch:only.Org code-scanning config 256896 sets
allow_advanced: false, so this workflow's SARIF is refused outright ("analyses from advanced configurations cannot be processed when the default setup is enabled"). Default-setup CodeQL runs separately, is green, and already satisfies thecode_scanningruleset rule. The file is not deleted —actions.lockkeys an entry to it, and deleting it would orphan that entry and red the bidirectionalcheck-lock-sync.sharriving in #73. The rationale is recorded in-file so a later reader does not "restore" the trigger.Pre-measured, not predicted
Deleting a failing step promotes whatever sat behind it to its first real measurement. All five newly-unmasked predicates were run locally against the real tree before pushing:
Check TEMPLATE-STANDARDS-AUDIT.adoc currencyCheck reusable workflow pinsCheck CHANGELOG existsCHANGELOG.mdpresentCheck no unfilled placeholder tokensSummary⚠ Scope — what this PR does not claim
This does not turn the
Verify Manifest Filesworkflow green. Its other job, Verify AI-MANIFEST and README.adoc files, fails independently on two missingREADME.adocfiles whose cure lives on PR #73's branch. The assertion here is the job-level check-runVerify Machine-Readable Manifest Currency, not the workflow conclusion. Reading job 1's red as "D-B failed" would be a misreading.🚨 Finding for #82 — a fourth settings.yml divergence
.github/settings.ymldeclaresanalyze (javascript-typescript, none)as a required status check. That is the CodeQL advanced job's matrix name, which item 4 makes permanently unemittable. It is inert today only because the live ruleset carries norequired_status_checksrule at all — which is precisely the drift #82 already tracks. Adding it there rather than silently working around it.Verification
yqparses all three files;actionlintclean.head -5oncodeql.yml(the gate PR fix(ci): resync actions.lock after PR #66 and clear the SPDX gate #70 relaxed).yq e '.on | keys'oncodeql.ymlreturns exactly[workflow_dispatch].%G? = G), satisfyingrequired_signatures.🤖 Generated with Claude Code
https://claude.ai/code/session_01YSq3UodR3CjsuAK5yoTzHF