From 0e36030a373954bb2ddecdfeb5ef86a618ce8a18 Mon Sep 17 00:00:00 2001
From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com>
Date: Sun, 26 Jul 2026 14:49:27 +0100
Subject: [PATCH 1/4] chore: estate-wide security compliance
---
.github/workflows/boj-build.yml | 1 +
.github/workflows/build-validation.yml | 1 +
.github/workflows/casket-pages.yml | 1 +
.github/workflows/codeql.yml | 1 +
.github/workflows/dogfood-gate.yml | 1 +
.github/workflows/e2e.yml | 1 +
.github/workflows/governance.yml | 1 +
.github/workflows/hypatia-scan.yml | 1 +
.github/workflows/instant-sync.yml | 1 +
.github/workflows/mirror.yml | 1 +
.github/workflows/push-email-notify.yml | 1 +
.github/workflows/rust-ci.yml | 1 +
.github/workflows/scorecard.yml | 1 +
.github/workflows/secret-scanner.yml | 1 +
14 files changed, 14 insertions(+)
diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml
index c0c7ca90..05ee2d75 100644
--- a/.github/workflows/boj-build.yml
+++ b/.github/workflows/boj-build.yml
@@ -16,4 +16,5 @@ jobs:
curl -X POST "http://boj-server.local:7700/cartridges/ssg-mcp/invoke" -H "Content-Type: application/json" -d "{\"repo\": \"${{ github.repository }}\", \"branch\": \"${{ github.ref_name }}\", \"engine\": \"casket\\"}"}
continue-on-error: true
permissions:
+ actions: read
contents: read
diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml
index 0edca04f..56ea1b81 100644
--- a/.github/workflows/build-validation.yml
+++ b/.github/workflows/build-validation.yml
@@ -8,6 +8,7 @@ on:
branches: [main, master]
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml
index 793033b4..aa21ce17 100644
--- a/.github/workflows/casket-pages.yml
+++ b/.github/workflows/casket-pages.yml
@@ -7,6 +7,7 @@ on:
workflow_dispatch:
permissions:
+ actions: read
contents: read
pages: write
id-token: write
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 1935d556..089997b8 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -18,6 +18,7 @@ concurrency:
cancel-in-progress: true
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml
index c6c494d6..4c51d146 100644
--- a/.github/workflows/dogfood-gate.yml
+++ b/.github/workflows/dogfood-gate.yml
@@ -13,6 +13,7 @@ on:
branches: [main, master]
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 9290c3ac..9e7be5cd 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -25,6 +25,7 @@ on:
workflow_dispatch:
permissions: read-all
+ actions: read
concurrency:
group: e2e-${{ github.ref }}
diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml
index 62bbc985..906741d5 100644
--- a/.github/workflows/governance.yml
+++ b/.github/workflows/governance.yml
@@ -27,6 +27,7 @@ concurrency:
cancel-in-progress: true
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml
index 2e7e9391..013c95ad 100644
--- a/.github/workflows/hypatia-scan.yml
+++ b/.github/workflows/hypatia-scan.yml
@@ -19,6 +19,7 @@ concurrency:
cancel-in-progress: true
permissions:
+ actions: read
contents: read
security-events: write
pull-requests: write
diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml
index 18158734..1c457829 100644
--- a/.github/workflows/instant-sync.yml
+++ b/.github/workflows/instant-sync.yml
@@ -13,6 +13,7 @@ on:
types: [published]
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
index 81e99038..c25d3bcb 100644
--- a/.github/workflows/mirror.yml
+++ b/.github/workflows/mirror.yml
@@ -7,6 +7,7 @@ on:
workflow_dispatch:
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml
index 4b4e754b..112afd18 100644
--- a/.github/workflows/push-email-notify.yml
+++ b/.github/workflows/push-email-notify.yml
@@ -7,6 +7,7 @@ name: Push email notification
on:
push: {}
permissions:
+ actions: read
contents: read
jobs:
notify:
diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml
index 5225c125..b4bfb3d0 100644
--- a/.github/workflows/rust-ci.yml
+++ b/.github/workflows/rust-ci.yml
@@ -10,6 +10,7 @@ on:
pull_request:
permissions:
+ actions: read
contents: read
jobs:
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 7640e2be..fb869d87 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -9,6 +9,7 @@ on:
branches: [main]
permissions: read-all
+ actions: read
jobs:
analysis:
diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml
index 9ed74efe..4c2ee4b3 100644
--- a/.github/workflows/secret-scanner.yml
+++ b/.github/workflows/secret-scanner.yml
@@ -11,6 +11,7 @@ concurrency:
cancel-in-progress: true
permissions:
+ actions: read
contents: read
jobs:
From 0c33af077762796729d9515b9bb2372024ee59be Mon Sep 17 00:00:00 2001
From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com>
Date: Sun, 26 Jul 2026 15:10:35 +0100
Subject: [PATCH 2/4] chore: remove duplicate GOVERNANCE files, keep
GOVERNANCE.md
---
panel-clades/GOVERNANCE.md | 158 -------------------------------------
1 file changed, 158 deletions(-)
delete mode 100644 panel-clades/GOVERNANCE.md
diff --git a/panel-clades/GOVERNANCE.md b/panel-clades/GOVERNANCE.md
deleted file mode 100644
index 18e48718..00000000
--- a/panel-clades/GOVERNANCE.md
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-# Project Governance
-
-This document describes the governance model for **Panll**.
-
----
-
-## Project Governance Model
-
-Panll follows a **Benevolent Dictator For Life (BDFL)** governance model.
-This model is well-suited for solo maintainers and small project teams where rapid,
-consistent decision-making is more valuable than formal consensus processes.
-
-The BDFL has final authority on all project decisions, including technical direction,
-release schedules, contributor access, and community standards.
-
-> **Transition clause:** When the core team exceeds three active maintainers, this
-> project should transition to a **consensus-based governance model** with documented
-> voting procedures. That transition should itself be recorded as an Architecture
-> Decision Record (ADR) in `docs/decisions/`.
-
----
-
-## Decision Making
-
-### Day-to-day decisions
-
-- The BDFL makes final decisions on all matters.
-- Routine decisions (bug fixes, dependency updates, minor improvements) may be made
- by any maintainer with commit access.
-- Maintainers are expected to use good judgement and seek input on non-trivial changes.
-
-### Proposing changes
-
-- Contributors can propose changes by opening issues or pull requests.
-- Significant changes (new features, breaking changes, architectural shifts) should
- be discussed in an issue before implementation begins.
-- The BDFL will provide a clear accept/reject decision with reasoning.
-
-### Architecture Decision Records (ADRs)
-
-- Significant technical decisions are documented as ADRs in `docs/decisions/`.
-- ADR statuses: `proposed`, `accepted`, `deprecated`, `superseded`, `rejected`.
-- ADRs provide a historical record of why decisions were made and what alternatives
- were considered.
-- See `.machine_readable/META.a2ml` for the machine-readable ADR index.
-
----
-
-## Roles
-
-### BDFL (Benevolent Dictator For Life)
-
-- The project creator and ultimate decision-maker.
-- Sets the project's technical direction and long-term vision.
-- Has final say on all matters, including maintainer appointments and removals.
-- Responsible for ensuring the project adheres to RSR standards.
-
-### Maintainer
-
-- Has commit access to the repository.
-- Reviews and merges pull requests.
-- Triages issues and manages releases.
-- Upholds code quality, security standards, and the Code of Conduct.
-- Listed in [MAINTAINERS.md](MAINTAINERS.md).
-
-### Contributor
-
-- Anyone who submits pull requests, opens issues, or participates in discussions.
-- Does not have direct commit access.
-- Contributions are reviewed by maintainers before merging.
-- All contributors must follow the [Code of Conduct](CODE_OF_CONDUCT.md).
-
-### Bot
-
-- Automated agents managed via your bot orchestration system.
-- Perform automated code review, security scanning, dependency updates, and
- standards enforcement.
-- Bot actions are subject to the same quality and review standards as human
- contributions.
-- Configure your bots in `.machine_readable/bot_directives/`.
-
----
-
-## Becoming a Maintainer
-
-A contributor may be nominated to become a maintainer when they demonstrate:
-
-1. **Sustained quality contributions** -- a track record of well-crafted pull requests
- that follow project conventions and require minimal revision.
-2. **Understanding of RSR standards** -- familiarity with the Repository Structure
- Requirements, security policies, and CI/CD workflows used across the project.
-3. **Constructive participation** -- helpful issue triage, thoughtful code review
- comments, and mentoring of other contributors.
-4. **Reliability** -- consistent engagement over a meaningful period (typically 3+
- months of active contribution).
-
-### Process
-
-1. An existing maintainer nominates the candidate by opening a private discussion
- with the BDFL.
-2. The BDFL reviews the candidate's contribution history and community interactions.
-3. The BDFL approves or declines the nomination, with reasoning provided to the
- nominator.
-4. If approved, the new maintainer is added to [MAINTAINERS.md](MAINTAINERS.md) and
- granted appropriate repository access.
-
----
-
-## Removing a Maintainer
-
-A maintainer may be removed under the following circumstances:
-
-- **Inactivity**: No meaningful contributions or reviews for 12 or more consecutive
- months. The maintainer will be contacted before removal and offered the option to
- move to emeritus status voluntarily.
-- **Code of Conduct violation**: Behaviour that violates the
- [Code of Conduct](CODE_OF_CONDUCT.md), as determined through the enforcement
- process described therein.
-- **BDFL discretion**: The BDFL may remove a maintainer for other reasons (e.g.,
- repeated disregard for project standards, loss of trust). Reasoning will be
- documented privately.
-
-Removed maintainers are moved to the Emeritus section of
-[MAINTAINERS.md](MAINTAINERS.md) unless removal was due to a serious Code of Conduct
-violation.
-
----
-
-## Code of Conduct
-
-All participants in this project are expected to follow the
-[Code of Conduct](CODE_OF_CONDUCT.md). The Code of Conduct applies to all project
-spaces, including issues, pull requests, discussions, and any forum where the project
-is represented.
-
-Enforcement of the Code of Conduct is described in that document. The BDFL serves as
-the final arbiter in conduct disputes.
-
----
-
-## Amendments
-
-This governance document may be amended by the BDFL at any time. All amendments will
-be:
-
-1. Documented as an ADR in `docs/decisions/` explaining the rationale for the change.
-2. Committed to the repository with a clear commit message.
-3. Communicated to existing maintainers and contributors via the project's usual
- channels.
-
-Substantive changes (e.g., changing the governance model itself) should be discussed
-with the community before adoption, even though the BDFL retains final authority.
-
----
-
-Copyright (c) 2026 hyperpolymath. Licensed under MPL-2.0.
From 11b72491c9778f94e66078a1d0c546dce8f76e50 Mon Sep 17 00:00:00 2001
From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com>
Date: Thu, 13 Aug 2026 03:45:46 +0100
Subject: [PATCH 3/4] fix(ci): update reusable workflow SHAs to
@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
Part of estate-wide standards#426 remediation - Batch 11 SHA update.
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe
---
.github/workflows/main-estate-audit.yml | 91 +++++++++++++++++++++++++
.github/workflows/mirror.yml | 2 +-
.github/workflows/secret-scanner.yml | 2 +-
3 files changed, 93 insertions(+), 2 deletions(-)
create mode 100755 .github/workflows/main-estate-audit.yml
diff --git a/.github/workflows/main-estate-audit.yml b/.github/workflows/main-estate-audit.yml
new file mode 100755
index 00000000..b602e975
--- /dev/null
+++ b/.github/workflows/main-estate-audit.yml
@@ -0,0 +1,91 @@
+name: Central Estate CI/CD Audit
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "main" ]
+
+jobs:
+ estate-audit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Required Files Gate
+ uses: hyperpolymath/cicd-suite/actions/required-files-check@main
+
+ - name: Code Hygiene Gate
+ uses: hyperpolymath/cicd-suite/actions/code-hygiene-check@main
+
+ - name: Manifest Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/manifest-check@main
+
+ - name: Idris2 ABI Purity Gate
+ uses: hyperpolymath/cicd-suite/actions/idris2-abi-check@main
+
+ - name: Zig Hexadeca API Gate
+ uses: hyperpolymath/cicd-suite/actions/zig-hexadeca-check@main
+
+ - name: Contractile Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/contractile-validation-check@main
+
+ - name: Recipes Set Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/recipes-set-check@main
+
+ - name: Affirmation Document Gate
+ uses: hyperpolymath/cicd-suite/actions/affirmation-check@main
+
+ - name: Academic Referencing Gate
+ uses: hyperpolymath/cicd-suite/actions/referencing-check@main
+
+ - name: Semantic Audit Gate
+ uses: hyperpolymath/cicd-suite/actions/semantic-audit-check@main
+
+ - name: SPDX License Gate
+ uses: hyperpolymath/cicd-suite/actions/spdx-license-check@main
+
+ - name: Proof Runner Gate
+ uses: hyperpolymath/cicd-suite/actions/proof-runner-check@main
+
+ - name: PRAT Testing Gate
+ uses: hyperpolymath/cicd-suite/actions/prat-check@main
+
+ - name: Panic Attack & Pons Gate
+ uses: hyperpolymath/cicd-suite/actions/custom-tools-check@main
+
+ - name: WWW & Well-Known Compliance Gate
+ uses: hyperpolymath/cicd-suite/actions/www-compliance-check@main
+
+ - name: BoJ Cartridge Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/boj-cartridge-check@main
+
+ - name: Formatting Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/formatting-check@main
+
+ - name: Accreditations & Badges Gate
+ uses: hyperpolymath/cicd-suite/actions/badges-check@main
+
+ - name: Metrics Extraction Gate
+ uses: hyperpolymath/cicd-suite/actions/metrics-check@main
+
+ - name: Linguist & Banned Languages Gate
+ uses: hyperpolymath/cicd-suite/actions/linguist-check@main
+
+ - name: Test & Benchmarks Dashboard Gate
+ uses: hyperpolymath/cicd-suite/actions/tests-benches-check@main
+
+ - name: Hosting & Site Status Gate
+ uses: hyperpolymath/cicd-suite/actions/hosting-check@main
+
+ - name: Git-Sea Analytics Gate
+ uses: hyperpolymath/cicd-suite/actions/gitsea-check@main
+
+ - name: Trust & Humans Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/trust-humans-check@main
+
+ - name: Are We UnAPI Gate (Secret Scanning)
+ uses: hyperpolymath/cicd-suite/actions/secrets-check@main
+
+ - name: Reasonably Good Token Validation Gate
+ uses: hyperpolymath/cicd-suite/actions/vaulted-tokens-check@main
diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
index c25d3bcb..72824fbd 100644
--- a/.github/workflows/mirror.yml
+++ b/.github/workflows/mirror.yml
@@ -12,5 +12,5 @@ permissions:
jobs:
mirror:
- uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
+ uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
secrets: inherit
diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml
index 4c2ee4b3..010c16d9 100644
--- a/.github/workflows/secret-scanner.yml
+++ b/.github/workflows/secret-scanner.yml
@@ -20,5 +20,5 @@ jobs:
contents: read
pull-requests: write
actions: read
- uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
+ uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
secrets: inherit
\ No newline at end of file
From 0be9574725874d8ed584996f0d2365fc0132ce65 Mon Sep 17 00:00:00 2001
From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com>
Date: Thu, 13 Aug 2026 05:12:16 +0100
Subject: [PATCH 4/4] fix(ci): update reusable workflow SHAs to
@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
Part of estate-wide standards#426 remediation - Batch 13 SHA update.
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe
---
.github/workflows/governance.yml | 2 +-
.github/workflows/hypatia-scan.yml | 2 +-
.github/workflows/scorecard.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml
index 906741d5..4dd2b3fd 100644
--- a/.github/workflows/governance.yml
+++ b/.github/workflows/governance.yml
@@ -32,4 +32,4 @@ permissions:
jobs:
governance:
- uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
\ No newline at end of file
+ uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
\ No newline at end of file
diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml
index 013c95ad..db7320fd 100644
--- a/.github/workflows/hypatia-scan.yml
+++ b/.github/workflows/hypatia-scan.yml
@@ -26,5 +26,5 @@ permissions:
jobs:
hypatia:
- uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
+ uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
secrets: inherit
\ No newline at end of file
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index fb869d87..ece5a6af 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -16,5 +16,5 @@ jobs:
permissions:
security-events: write
id-token: write
- uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
+ uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
secrets: inherit
\ No newline at end of file