Three pre-existing red non-required checks on main: Allowlist Preflight (empty GH_TOKEN), Workflow security linter (duplicate with in abi-drift.yml), SonarQube (403) #338
Description
Summary
Three non-required checks are red on main and have been since before #337 (measured on 3c3f2621 and e1eefa45, 2026-10-06). None blocks a merge (the only required context is scan / gitleaks), but each one is a real defect, so #337 defers them here rather than hiding them. One issue, three acceptance criteria, so the pile grows by one.
1. governance / Allowlist Preflight — exit 3, cannot read live Actions permissions
Log (run 37468005902, job 112283831352): GH_TOKEN: is empty in the "check-actions-policy" step, gh refuses to run, the script prints ERROR: could not read live Actions permissions for hyperpolymath/boj-server and exits 3.
Cause: governance.yml calls hyperpolymath/standards/.github/workflows/governance-reusable.yml@84355587 and passes no secrets. At that pin the reusable sets GH_TOKEN: ${{ secrets.HYPATIA_SCAN_PAT }} (declared required: false) and fails hard when it is empty. boj-server-cartridges calls the same reusable at 9e9513b1, also with no secrets, and its Allowlist Preflight is green on main, so the newer pin tolerates the absent token.
Acceptance: bump the governance pin to 9e9513b1 or later (regenerate .github/workflows/actions.lock in the same commit, per the lock gates), or pass HYPATIA_SCAN_PAT from the caller; governance / Allowlist Preflight is green on the main head that lands it.
2. governance / Workflow security linter — duplicate with key in abi-drift.yml
Log (job 112283831223): FAIL .github/workflows/abi-drift.yml: duplicate key(s): 'with' (line 86). The "Install Rust toolchain (stable)" step carries two with: maps (toolchain: v1 then toolchain: stable). GitHub rejects the file before any job is created, so abi-drift.yml has not run at all since the duplicate was introduced; an ordinary YAML parser keeps the last key and reports success, which is why nothing else caught it.
Acceptance: one with: map with toolchain: stable; governance / Workflow security linter green; the ABI drift workflow produces a check run on the next pull_request that touches src/abi/ or ffi/.
3. SonarQube — HTTP 403 from SonarCloud
Log (run 37468004225, job 112283822510): GET https://api.sonarcloud.io/analysis/jres?os=linux&arch=x86_64 failed with HTTP 403 Forbidden. Please check the property sonar.token or the environment variable SONAR_TOKEN. The scanner never reaches analysis. Sibling of hyperpolymath/boj-server-cartridges#96.
Acceptance: owner action — a valid SONAR_TOKEN for this project in the repo secrets (set from a real terminal or the web UI, then proved by a green run, not by the secret's updated_at), or the workflow conditioned off until one exists; SonarQube green or skipped-by-design on main, and if it is ever made required, "required" means the quality gate passes.
Scope
Deferred from #337 (a gitleaks-only fix) under AGENTS.md §5c item 3. Each criterion is independently small; 1 and 2 are a single follow-up PR, 3 is an owner action.
Activity
chore(licence): PMPL-1.0-or-later → MPL-2.0 in the last SPDX header (#…
docs(readme): fenced install blocks so MCP directories can parse them (…
feat(brand): braces mark, social preview card, README header (#346)
docs(readme): drop env from Claude Desktop config so the listing sand…
hyperpolymath commentedon Oct 7, 2026
Adding a fourth pre-existing red that is not required on main (
9180ee6b):governance / UUID v7 conformance../.machine_readable/CLADE.a2ml: non-v7 UUID literal (5f5df93b-789d-5ff6-8a44-9dc6ed90a7b1). That literal is a v5 UUID..standards-uuid/scripts/check-uuid-v7.sh, which accepts only v7. Standards now has the v8 dual-acceptcheck-uuid-v8.sh(standards#1176, ADR-008 Accepted).Acceptance criteria
governance / UUID v7 conformanceis green on main.CLADE.a2ml, done by kcX per D313, not hand-converted, or (b) repinning governance to a standards revision whose job runs the v8/legacy-typed checker..a2mlfile is hand-edited.Seen while working on #348, where the same check is red for the same reason.
🤖 Generated with Claude Code
hyperpolymath commentedon Oct 7, 2026
More checks that aren't required but are red on main
14386f3e, all already red on its parent0e700c9d. Found while writing the affirmation in #351.E2E — Full REST + MCP Bridge,E2E — Order Ticket (FFI layer),Bench — FFI Catalogue + Mount/Unmount + Hash: these fail with 13 compile errors atffi/zig/src/bench.zig:27:60: error: enum 'Io.Clock' has no member named 'monotonic'. Zig 0.16.0'sstd.Iono longer has that member.zig buildofboj_benchsucceeds on 0.16.0, and all three jobs are green on main.deploy(Deploy to Cloudflare Workers, run 37586422896): exit 1. I didn't find the cause in this session.Dependabot(run 37586435802): the updater errored on the cargo update forquinn-protoandrustlsin/coord-tuiand/tray. That leaves open alerts Standardise license: MPL-2.0 + PMPL-1.0-or-later (REUSE) #6 (high, quinn-proto, GHSA-4w2j-m93h-cj5j), Add node operator tray app and browser extension #7 and fix: glama.json, Containerfile rename, and licensing tidy #8 (moderate, rustls, GHSA-2mjx-qc3c-rqvc).Not a check, but it blocks local verification: the
Justfiledoesn't parse.guix-shellis defined at lines 1055 and 1063 (added in #327), so everyjustrecipe fails before running.just --listexits 0.🤖 Generated with Claude Code
docs: affirm state at 14386f3 (docs/AFFIRMATION.adoc) (#351)
docs(affirmation): affirm Idris2 0.8.0, trusted base and Zig break by…
chore(release): align every version declaration on 0.5.0 (#353)
fix(zig): port the boj-invoke CLI to Zig 0.16 process.Init (#355)
test(e2e): assert menu tiers match manifests, not that Teranga is non…
docs: stop presenting .machine_readable/6a2 as current state (#357)
fix(just): drop duplicate guix-shell recipe so the Justfile parses (#358
fix(mcp-bridge): refuse undeclared arguments on every tool (#359)