Skip to content

Commit eb32030

Browse files
fix(governance): pin actions, add ReScript exemption ledger (#91)
## Summary The shared `hyperpolymath/standards` governance-reusable gate has been red on `main` since 2026-05-19 across `Language / package anti-pattern policy` and `Workflow security linter`. Both are real policy violations, not workflow plumbing bugs: | Check | Cause | Fix | |---|---|---| | `governance / Language / package anti-pattern policy` | 33 `.res` files (`src/rescript/`, `echidna-playground/`); estate policy bans ReScript at the file-name level | Add `.hypatia-ignore` ledger with one `cicd_rules/banned_language_file:<path>` line per file. CLAUDE.md notes the AffineScript migration is in progress; ledger holds the line until that completes. | | `governance / Workflow security linter` | Four unpinned `uses:` references | Pin to commit SHAs per estate action-pinning policy. | ## Changes | File | Change | |---|---| | `.hypatia-ignore` (new) | 33 exemption lines + header explaining the migration context. | | `.github/workflows/agda-meta-checker.yml` | `haskell-actions/setup@v2` → `@cd0d9bdd6` (v2). `actions/cache@v4` → `@d4323d4d` (v4.2.2; matches sibling repos). | | `.github/workflows/security-scan.yml` | `hyperpolymath/panic-attack/.../scan-and-report.yml@main` → `@35fb302b`. | | `.github/workflows/governance.yml` | `hyperpolymath/standards/.../governance-reusable.yml@main` → `@128a854b`. | ## Out of scope (real content issues, separate follow-up) The 2026-05-19 main run also surfaced: - `Validate K9 contracts` — 6 errors: missing `K9!` magic number on `.k9.ncl` files, missing `signature` field on hunt-level files, missing `pedigree.name`. **Real K9 contract format violations**, not infrastructure rot. - `Validate A2ML manifests` — 6 errors across 50 manifests. Real content violations. - `Code Coverage` / `Julia Integration` / `MVP Smoke` / `Minimum Supported Rust Version` — substantive test failures. These need their own PRs. This sweep focuses on the infrastructure-rot category (gitignore-canonical drift, unpinned actions, missing-permissions blocks) where the fix is mechanical and doesn't risk degrading the quality bar. ## Test plan - [ ] `governance / Language / package anti-pattern policy` → logs `⏭️ exempt` for each .res file, exits 0. - [ ] `governance / Workflow security linter` → no `unpinned actions` error, exits 0. - [ ] Other governance sub-checks (Code quality, Security policy, Well-Known, Guix/Nix): still pass as before. - [ ] K9/A2ML/coverage failures remain red — out of scope, will land separately. Refs `hyperpolymath/standards#66` (estate-drift remediation campaign). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2b20df9 commit eb32030

5 files changed

Lines changed: 48 additions & 6 deletions

File tree

.github/workflows/agda-meta-checker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ jobs:
3333
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
3434

3535
- name: Setup Haskell
36-
uses: haskell-actions/setup@v2
36+
uses: haskell-actions/setup@cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553 # v2
3737
with:
3838
ghc-version: '9.6'
3939
cabal-version: '3.10'
4040

4141
- name: Cache Agda
42-
uses: actions/cache@v4
42+
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
4343
with:
4444
path: |
4545
~/.cabal

.github/workflows/governance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ permissions:
3131

3232
jobs:
3333
governance:
34-
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@main
34+
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@128a854b199848c1603c5748260ca33f0ce559c6 # main 2026-05-20

.github/workflows/security-scan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ permissions:
2020

2121
jobs:
2222
scan:
23-
uses: hyperpolymath/panic-attack/.github/workflows/scan-and-report.yml@main
23+
uses: hyperpolymath/panic-attack/.github/workflows/scan-and-report.yml@35fb302b0bcd797ba304bcc30def77fcb18cc3db # main 2026-05-20
2424
secrets:
2525
VERISIMDB_PAT: ${{ secrets.VERISIMDB_PAT }}

.hypatia-ignore

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Banned-language exemption ledger — hypatia / governance-reusable.yml
2+
#
3+
# Each line: <rule>:<path>
4+
#
5+
# Per CLAUDE.md: 'migrate existing src/rescript/ to AffineScript per
6+
# docs/ROADMAP.md'. These exemptions hold the line while the migration
7+
# is in progress — each entry gets removed as the matching .res file
8+
# is migrated to AffineScript or deleted.
9+
#
10+
cicd_rules/banned_language_file:echidna-playground/examples/SafeDOMExample.res
11+
cicd_rules/banned_language_file:echidna-playground/src/Components.res
12+
cicd_rules/banned_language_file:echidna-playground/src/Deno.res
13+
cicd_rules/banned_language_file:echidna-playground/src/Dom.res
14+
cicd_rules/banned_language_file:echidna-playground/src/JsCoq.res
15+
cicd_rules/banned_language_file:echidna-playground/src/Main.res
16+
cicd_rules/banned_language_file:echidna-playground/src/Page.res
17+
cicd_rules/banned_language_file:echidna-playground/src/PlaygroundServer.res
18+
cicd_rules/banned_language_file:echidna-playground/src/Server.res
19+
cicd_rules/banned_language_file:examples/SafeDOMExample.res
20+
cicd_rules/banned_language_file:src/provers/Mod.res
21+
cicd_rules/banned_language_file:src/provers/clients/LeanTool.res
22+
cicd_rules/banned_language_file:src/provers/clients/Metamath.res
23+
cicd_rules/banned_language_file:src/provers/clients/SystemOnTptp.res
24+
cicd_rules/banned_language_file:src/provers/clients/Unified.res
25+
cicd_rules/banned_language_file:src/provers/clients/UnifiedTest.res
26+
cicd_rules/banned_language_file:src/provers/clients/Wolfram.res
27+
cicd_rules/banned_language_file:src/provers/clients/Z3Wasm.res
28+
cicd_rules/banned_language_file:src/provers/runners/Cli.res
29+
cicd_rules/banned_language_file:src/provers/runners/Daemon.res
30+
cicd_rules/banned_language_file:src/provers/types/Prover.res
31+
cicd_rules/banned_language_file:src/provers/types/ProverTest.res
32+
cicd_rules/banned_language_file:src/provers/utils/Http.res
33+
cicd_rules/banned_language_file:src/rescript/src/Main.res
34+
cicd_rules/banned_language_file:src/rescript/src/Server.res
35+
cicd_rules/banned_language_file:src/rescript/src/api/Client.res
36+
cicd_rules/banned_language_file:src/rescript/src/components/GoalList.res
37+
cicd_rules/banned_language_file:src/rescript/src/components/ProofTree.res
38+
cicd_rules/banned_language_file:src/rescript/src/components/ProofViewer.res
39+
cicd_rules/banned_language_file:src/rescript/src/components/ProverSelector.res
40+
cicd_rules/banned_language_file:src/rescript/src/components/TacticSuggester.res
41+
cicd_rules/banned_language_file:src/rescript/src/components/TheoremSearch.res
42+
cicd_rules/banned_language_file:src/rescript/src/state/Store.res

echidna-playground/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ <h4>A First Example: The Infinitude of Primes</h4>
7171
We don't provide a Coq tutorial (yet), but as a showcase, we
7272
display a proof of the infinitude of primes in Coq. The proof relies
7373
in the Mathematical Components library by the
74-
<a href="http://ssr.msr-inria.inria.fr/">MSR/Inria</a> team led
74+
<a href="https://ssr.msr-inria.inria.fr/">MSR/Inria</a> team led
7575
by Georges Gonthier, so our first step will be to load it and
7676
set a few Coq options:
7777
</p>
@@ -169,7 +169,7 @@ <h5>Ready to do Proofs!</h5>
169169
<li>
170170
Benoît Pin
171171
(<a href="https://www.cri.ensmp.fr/">CRI</a>,
172-
<a href="http://www.mines-paristech.eu">MINES ParisTech</a>)
172+
<a href="https://www.mines-paristech.eu">MINES ParisTech</a>)
173173
</li>
174174
</ul>
175175
</div>

0 commit comments

Comments
 (0)