Skip to content

fix(ci): retire the a2ml manifest gates (D-B) and stop CodeQL on PR/push - #84

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/retire-a2ml-gates-and-codeql-trigger
Sep 22, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
fix/retire-a2ml-gates-and-codeql-trigger

Conversation

@hyperpolymath

Copy link
Copy Markdown
Contributor

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–7 skipped — 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:

first line of the file : v1.2, 2026-07-26
old: sed 's/v//'       → "1.2, 2026-07-26"   compared against literal "1.2"  → FAIL
new: sed 's/^v//' | cut -d, -f1 | tr -d '[:space:]' → "1.2"                  → PASS

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 the code_scanning ruleset rule. The file is not deleted — actions.lock keys an entry to it, and deleting it would orphan that entry and red the bidirectional check-lock-sync.sh arriving 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:

unmasked predicate result
Check TEMPLATE-STANDARDS-AUDIT.adoc currency ❌ → fixed in this PR (item 2)
Check reusable workflow pins ✅ both 40-hex and identical
Check CHANGELOG exists ✅ CHANGELOG.md present
Check no unfilled placeholder tokens ✅ 0 across 7 present files
Summary ✅

⚠ Scope — what this PR does not claim

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 here is the job-level check-run Verify 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.yml declares analyze (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 no required_status_checks rule at all — which is precisely the drift #82 already tracks. Adding it there rather than silently working around it.

Verification

🤖 Generated with Claude Code

https://claude.ai/code/session_01YSq3UodR3CjsuAK5yoTzHF

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
@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 34 minutes.

Check out review usage here.

View limit details

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 45680344-a474-42f3-ac38-2be77b4c5583

📥 Commits

Reviewing files that changed from the base of the PR and between b500a7b and 5814a57.

📒 Files selected for processing (3)
  • .github/workflows/codeql.yml
  • .github/workflows/openssf-compliance.yml
  • .github/workflows/verify-manifests.yml

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.

@hyperpolymath
hyperpolymath merged commit 033d86b into main Sep 22, 2026
50 of 56 checks passed
@hyperpolymath
hyperpolymath deleted the fix/retire-a2ml-gates-and-codeql-trigger branch September 22, 2026 21:05
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>
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