From d8e43b16e490dde083ed719c686a507e912da2fd 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:22 +0100 Subject: [PATCH 1/9] chore: estate-wide security compliance --- .github/workflows/boj-build.yml | 1 + .github/workflows/bridge-gate.yml | 1 + .github/workflows/cargo-audit.yml | 1 + .github/workflows/casket-pages.yml | 1 + .github/workflows/chapel-ci.yml | 1 + .github/workflows/codeql.yml | 1 + .github/workflows/coverage.yml | 1 + .github/workflows/dependency-review.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/pages.yml | 1 + .github/workflows/push-email-notify.yml | 1 + .github/workflows/release.yml | 1 + .github/workflows/rust-ci.yml | 1 + .github/workflows/scan-and-report.yml | 1 + .github/workflows/scorecard.yml | 1 + .github/workflows/secret-scanner.yml | 1 + 21 files changed, 21 insertions(+) diff --git a/.github/workflows/boj-build.yml b/.github/workflows/boj-build.yml index 653a527..ec5c3a8 100644 --- a/.github/workflows/boj-build.yml +++ b/.github/workflows/boj-build.yml @@ -5,6 +5,7 @@ on: branches: [main, master] workflow_dispatch: permissions: + actions: read contents: read jobs: trigger-boj: diff --git a/.github/workflows/bridge-gate.yml b/.github/workflows/bridge-gate.yml index 551551a..47213a4 100644 --- a/.github/workflows/bridge-gate.yml +++ b/.github/workflows/bridge-gate.yml @@ -22,6 +22,7 @@ on: pull_request: types: [opened, synchronize, reopened] permissions: + actions: read contents: read jobs: bridge-gate: diff --git a/.github/workflows/cargo-audit.yml b/.github/workflows/cargo-audit.yml index fc5e02b..e0000a5 100644 --- a/.github/workflows/cargo-audit.yml +++ b/.github/workflows/cargo-audit.yml @@ -10,6 +10,7 @@ on: - cron: '0 0 * * 0' # Weekly on Sunday permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/casket-pages.yml b/.github/workflows/casket-pages.yml index fd280fb..7d7fd53 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/chapel-ci.yml b/.github/workflows/chapel-ci.yml index 7b68ddc..2de9bc3 100644 --- a/.github/workflows/chapel-ci.yml +++ b/.github/workflows/chapel-ci.yml @@ -44,6 +44,7 @@ on: pull_request: permissions: + actions: read contents: read concurrency: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 2b9bd06..7cbce23 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/coverage.yml b/.github/workflows/coverage.yml index 6bc0eec..26408c1 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -8,6 +8,7 @@ on: branches: [ main ] permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index dcc75d6..aa9c1f1 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -6,6 +6,7 @@ on: branches: [ main ] permissions: + actions: read contents: read pull-requests: write diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 663d031..b86c78c 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 7809b68..921f30c 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -24,6 +24,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 8776de0..966a16e 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -9,6 +9,7 @@ on: workflow_dispatch: permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 9dde27a..556e8e0 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -11,6 +11,7 @@ on: workflow_dispatch: permissions: + actions: read contents: read security-events: write diff --git a/.github/workflows/instant-sync.yml b/.github/workflows/instant-sync.yml index 00531c1..ee4843b 100644 --- a/.github/workflows/instant-sync.yml +++ b/.github/workflows/instant-sync.yml @@ -9,6 +9,7 @@ on: types: [published] permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index 81e9903..c25d3bc 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/pages.yml b/.github/workflows/pages.yml index c78489a..0273437 100755 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -5,6 +5,7 @@ on: branches: [main, master] workflow_dispatch: permissions: + actions: read contents: read pages: write id-token: write diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml index 4b4e754..112afd1 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/release.yml b/.github/workflows/release.yml index 28b6526..50ca6eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,7 @@ on: - 'v*' permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 4d8e394..3a84116 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/scan-and-report.yml b/.github/workflows/scan-and-report.yml index 0801456..24eb98b 100644 --- a/.github/workflows/scan-and-report.yml +++ b/.github/workflows/scan-and-report.yml @@ -16,6 +16,7 @@ on: workflow_dispatch: permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b97e2cb..cede40a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -9,6 +9,7 @@ on: workflow_dispatch: permissions: + actions: read contents: read jobs: diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index b3486fc..4839d60 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 197dce75af92f8e877298d0c78888ac0ca581013 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Sun, 26 Jul 2026 15:59:49 +0100 Subject: [PATCH 2/9] chore: update guix.scm from squisher-corpus --- guix.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/guix.scm b/guix.scm index d7c2bbd..c6dd7be 100644 --- a/guix.scm +++ b/guix.scm @@ -1,5 +1,5 @@ ; SPDX-License-Identifier: MPL-2.0 -;; guix.scm — GNU Guix package definition for panic-attacker +;; guix.scm — GNU Guix package definition for squisher-corpus ;; Usage: guix shell -f guix.scm (use-modules (guix packages) @@ -7,12 +7,12 @@ (guix licenses)) (package - (name "panic-attacker") + (name "squisher-corpus") (version "0.1.0") (source #f) (build-system gnu-build-system) - (synopsis "panic-attacker") - (description "panic-attacker — part of the hyperpolymath ecosystem.") - (home-page "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/hyperpolymath/panic-attacker") - (license ((@@ (guix licenses) license) "MPL-2.0" + (synopsis "squisher-corpus") + (description "squisher-corpus — part of the hyperpolymath ecosystem.") + (home-page "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/hyperpolymath/squisher-corpus") + (license ((@@ (guix licenses) license) "PMPL-1.0-or-later" "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/hyperpolymath/palimpsest-license"))) From 794b4034cb5eecfe6109696b524c1c695dcc78ff Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 13 Aug 2026 01:44:07 +0100 Subject: [PATCH 3/9] fix(ci): remove erroneous squisher-corpus guix.scm placeholder Part of estate-wide standards#426 remediation - cleanup. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- guix.scm | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 guix.scm diff --git a/guix.scm b/guix.scm deleted file mode 100644 index c6dd7be..0000000 --- a/guix.scm +++ /dev/null @@ -1,18 +0,0 @@ -; SPDX-License-Identifier: MPL-2.0 -;; guix.scm — GNU Guix package definition for squisher-corpus -;; Usage: guix shell -f guix.scm - -(use-modules (guix packages) - (guix build-system gnu) - (guix licenses)) - -(package - (name "squisher-corpus") - (version "0.1.0") - (source #f) - (build-system gnu-build-system) - (synopsis "squisher-corpus") - (description "squisher-corpus — part of the hyperpolymath ecosystem.") - (home-page "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/hyperpolymath/squisher-corpus") - (license ((@@ (guix licenses) license) "PMPL-1.0-or-later" - "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/hyperpolymath/palimpsest-license"))) From 591765d7be8b05bf05f58492e75bdb248bd19b71 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:35 +0100 Subject: [PATCH 4/9] 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/mirror.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index c25d3bc..72824fb 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 From 3b691bd1faf7e0480c4b31db4147d10f98890da5 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 13 Aug 2026 04:11:10 +0100 Subject: [PATCH 5/9] fix(ci): update reusable workflow SHAs to @7fdc2705df74b4e352d2a1cde3e87a5923fdf329 Part of estate-wide standards#426 remediation - Batch 12 SHA update. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe --- .github/workflows/secret-scanner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index 4839d60..0c35e6b 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -18,5 +18,5 @@ jobs: scan: permissions: contents: read - uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@c65436ee3351cd6b0fa14b142938b195efc77586 + uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329 secrets: inherit \ No newline at end of file From 49ebfe4bc0048abf82405a617de8d9107c5cba28 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:03 +0100 Subject: [PATCH 6/9] 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 966a16e..aad0d03 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -14,4 +14,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 556e8e0..1f8c940 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -17,4 +17,4 @@ permissions: jobs: scan: - uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9 \ No newline at end of file + uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329 \ No newline at end of file diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cede40a..03413b9 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -14,7 +14,7 @@ permissions: jobs: scorecard: - uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9 + uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329 permissions: contents: read security-events: write From 1fadb68255ed6f40e0fdd3c6bc4ca375115dd8a2 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 13 Aug 2026 19:39:02 +0100 Subject: [PATCH 7/9] fix(ci): conform to updated workflows (estate rules, K9, SPDX, permissions) --- generated/k9iser/cargo-manifest.k9 | 5 ++++- generated/k9iser/container-build.k9 | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/generated/k9iser/cargo-manifest.k9 b/generated/k9iser/cargo-manifest.k9 index ad723ab..bcc99f9 100644 --- a/generated/k9iser/cargo-manifest.k9 +++ b/generated/k9iser/cargo-manifest.k9 @@ -1,8 +1,11 @@ +K9! +# SPDX-License-Identifier: MPL-2.0 # Auto-generated K9 contract for cargo-manifest # Safety tier: hunt [must] -package.name : string { == 'panic-attack' } +package.name : string { + pedigree = { schema_version = "1.0.0", name = "cargo-manifest.k9" }, == 'panic-attack' } package.edition : string { == '2021' } profile.release.codegen-units : string { == 1 } profile.release.strip : string { == 'symbols' } diff --git a/generated/k9iser/container-build.k9 b/generated/k9iser/container-build.k9 index 0f79c65..6fc42e0 100644 --- a/generated/k9iser/container-build.k9 +++ b/generated/k9iser/container-build.k9 @@ -1,8 +1,11 @@ +K9! +# SPDX-License-Identifier: MPL-2.0 # Auto-generated K9 contract for container-build # Safety tier: hunt [must] -metadata.license : string { == 'MPL-2.0' } +metadata.license : string { + pedigree = { schema_version = "1.0.0", name = "container-build.k9" }, == 'MPL-2.0' } metadata.registry : string { == 'ghcr.io/hyperpolymath' } build.runtime : string { == 'podman' } layers.base.verify : bool { == true } From 6c172068dfd32c3f37b77a1be057bc5981cb4377 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:50:23 +0100 Subject: [PATCH 8/9] fix(ci): inject name and security block to K9 pedigree --- generated/k9iser/cargo-manifest.k9 | 3 ++- generated/k9iser/container-build.k9 | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/generated/k9iser/cargo-manifest.k9 b/generated/k9iser/cargo-manifest.k9 index bcc99f9..0c24f73 100644 --- a/generated/k9iser/cargo-manifest.k9 +++ b/generated/k9iser/cargo-manifest.k9 @@ -5,7 +5,8 @@ K9! [must] package.name : string { - pedigree = { schema_version = "1.0.0", name = "cargo-manifest.k9" }, == 'panic-attack' } + pedigree = { + security = { leash = "Yard" }, schema_version = "1.0.0", name = "cargo-manifest.k9" }, == 'panic-attack' } package.edition : string { == '2021' } profile.release.codegen-units : string { == 1 } profile.release.strip : string { == 'symbols' } diff --git a/generated/k9iser/container-build.k9 b/generated/k9iser/container-build.k9 index 6fc42e0..2ef59ea 100644 --- a/generated/k9iser/container-build.k9 +++ b/generated/k9iser/container-build.k9 @@ -5,7 +5,8 @@ K9! [must] metadata.license : string { - pedigree = { schema_version = "1.0.0", name = "container-build.k9" }, == 'MPL-2.0' } + pedigree = { + security = { leash = "Yard" }, schema_version = "1.0.0", name = "container-build.k9" }, == 'MPL-2.0' } metadata.registry : string { == 'ghcr.io/hyperpolymath' } build.runtime : string { == 'podman' } layers.base.verify : bool { == true } From 8254708bb0c5e89f15436fda2069891ffeab75e2 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:56:26 +0100 Subject: [PATCH 9/9] fix(ci): pin actions to SHAs and fix K9 formats --- .machine_readable/svc/k9/panic-attacker-metadata.k9.ncl | 4 +++- generated/k9iser/cargo-manifest.k9 | 4 +++- generated/k9iser/container-build.k9 | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.machine_readable/svc/k9/panic-attacker-metadata.k9.ncl b/.machine_readable/svc/k9/panic-attacker-metadata.k9.ncl index c7140d7..8ddddab 100644 --- a/.machine_readable/svc/k9/panic-attacker-metadata.k9.ncl +++ b/.machine_readable/svc/k9/panic-attacker-metadata.k9.ncl @@ -7,6 +7,8 @@ K9! { pedigree = { + name = "panic-attacker-metadata.k9.ncl", + security = { leash = 'Yard }, schema_version = "1.0.0", component_type = "security-tool-metadata", security = { @@ -17,7 +19,7 @@ K9! allow_subprocess = false, }, metadata = { - name = "panic-attacker-metadata", + version = "2.1.0", description = "panic-attack: universal static analysis and bug signature detection — project invariants", author = "Jonathan D.A. Jewell ", diff --git a/generated/k9iser/cargo-manifest.k9 b/generated/k9iser/cargo-manifest.k9 index 0c24f73..0e9f30e 100644 --- a/generated/k9iser/cargo-manifest.k9 +++ b/generated/k9iser/cargo-manifest.k9 @@ -6,7 +6,9 @@ K9! [must] package.name : string { pedigree = { - security = { leash = "Yard" }, schema_version = "1.0.0", name = "cargo-manifest.k9" }, == 'panic-attack' } + name = "cargo-manifest.k9", + security = { leash = "Yard" }, + schema_version = "1.0.0", }, == 'panic-attack' } package.edition : string { == '2021' } profile.release.codegen-units : string { == 1 } profile.release.strip : string { == 'symbols' } diff --git a/generated/k9iser/container-build.k9 b/generated/k9iser/container-build.k9 index 2ef59ea..e185a55 100644 --- a/generated/k9iser/container-build.k9 +++ b/generated/k9iser/container-build.k9 @@ -6,7 +6,9 @@ K9! [must] metadata.license : string { pedigree = { - security = { leash = "Yard" }, schema_version = "1.0.0", name = "container-build.k9" }, == 'MPL-2.0' } + name = "container-build.k9", + security = { leash = "Yard" }, + schema_version = "1.0.0", }, == 'MPL-2.0' } metadata.registry : string { == 'ghcr.io/hyperpolymath' } build.runtime : string { == 'podman' } layers.base.verify : bool { == true }