Skip to content

Commit a5e8b76

Browse files
Fix/licence drift (#37)
<!-- SPDX-License-Identifier: MPL-2.0 Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> --> ## Summary <!-- Briefly describe what this PR does and why. Link to related issues with "Closes #N". --> ## Changes <!-- List the key changes introduced by this PR. --> - ## RSR Quality Checklist <!-- Check all that apply. PRs that fail required checks will not be merged. --> ### Required - [ ] Tests pass (`just test` or equivalent) - [ ] Code is formatted (`just fmt` or equivalent) - [ ] Linter is clean (no new warnings or errors) - [ ] No banned language patterns (no TypeScript, no npm/bun, no Go/Python) - [ ] No `unsafe` blocks without `// SAFETY:` comments - [ ] No banned functions (`believe_me`, `unsafeCoerce`, `Obj.magic`, `Admitted`, `sorry`) - [ ] SPDX license headers present on all new/modified source files - [ ] No secrets, credentials, or `.env` files included ### As Applicable - [ ] `.machine_readable/STATE.a2ml` updated (if project state changed) - [ ] `.machine_readable/ECOSYSTEM.a2ml` updated (if integrations changed) - [ ] `.machine_readable/META.a2ml` updated (if architectural decisions changed) - [ ] Documentation updated for user-facing changes - [ ] `TOPOLOGY.md` updated (if architecture changed) - [ ] `CHANGELOG` or release notes updated - [ ] New dependencies reviewed for license compatibility (PMPL-1.0-or-later / MPL-2.0) - [ ] ABI/FFI changes validated (`src/interface/abi/` and `src/interface/ffi/` consistent) ## Testing <!-- Describe how you tested these changes. --> ## Screenshots <!-- If applicable, add screenshots or terminal output demonstrating the change. -->
1 parent 562a683 commit a5e8b76

19 files changed

Lines changed: 2245 additions & 169 deletions

.github/workflows/codeql.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# SPDX-License-Identifier: MPL-2.0
22
name: CodeQL Security Analysis
3-
43
on:
54
push:
65
branches: [main, master]
@@ -16,10 +15,8 @@ on:
1615
concurrency:
1716
group: ${{ github.workflow }}-${{ github.ref }}
1817
cancel-in-progress: true
19-
2018
permissions:
2119
contents: read
22-
2320
jobs:
2421
analyze:
2522
runs-on: ubuntu-latest
@@ -33,7 +30,6 @@ jobs:
3330
include:
3431
- language: actions
3532
build-mode: none
36-
3733
steps:
3834
- name: Checkout
3935
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -43,7 +39,6 @@ jobs:
4339
with:
4440
languages: ${{ matrix.language }}
4541
build-mode: ${{ matrix.build-mode }}
46-
4742
- name: Perform CodeQL Analysis
4843
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3
4944
with:

.github/workflows/governance.yml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,12 @@ on:
1616
push:
1717
branches: [main, master]
1818
pull_request:
19+
branches: [main, master]
1920
workflow_dispatch:
2021

21-
# Estate guardrail: cancel superseded runs so re-pushes / rebased PR
22-
# updates do not pile up queued runs against the shared account-wide
23-
# Actions concurrency pool. Applied only to read-only check workflows
24-
# (no publish/mutation), so cancelling a superseded run is always safe.
25-
concurrency:
26-
group: ${{ github.workflow }}-${{ github.ref }}
27-
cancel-in-progress: true
28-
2922
permissions:
3023
contents: read
3124

3225
jobs:
3326
governance:
34-
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@861b5e911d9e5dcfb3c0ab3dd2a9a3c8fd0a1613
35-
timeout-minutes: 10
27+
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@5a93d9d57cc04de4002d6d0ecd336fc7a8698910

.github/workflows/hypatia-scan.yml

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,18 @@
1-
# SPDX-License-Identifier: MPL-2.0
2-
# Hypatia Neurosymbolic CI/CD Security Scan
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
32
name: Hypatia Security Scan
43

54
on:
65
push:
7-
branches: [ main, master, develop ]
6+
branches: [main, master, develop]
87
pull_request:
9-
branches: [ main, master ]
8+
branches: [main, master]
109
schedule:
11-
- cron: '0 0 * * 0' # Weekly on Sunday
10+
- cron: '0 0 * * 0'
1211
workflow_dispatch:
13-
# Estate guardrail: cancel superseded runs so re-pushes don't pile up
14-
# queued runs across the estate. Safe here because this workflow only
15-
# performs read-only checks/lint/test/scan with no publish or mutation.
16-
concurrency:
17-
group: ${{ github.workflow }}-${{ github.ref }}
18-
cancel-in-progress: true
1912

2013
permissions:
2114
contents: read
22-
# security-events: write serves two purposes (write implies read):
23-
# 1. read — lets the built-in GITHUB_TOKEN query this repo's own
24-
# Dependabot alerts via the Hypatia DependabotAlerts rule
25-
# (DA001-DA004). Without read, `scan_from_path` gets HTTP 403
26-
# and the rule silently returns no findings.
27-
# See 007-lang/audits/audit-dependabot-automation-gap-2026-04-17.md.
28-
# 2. write — lets the "Upload SARIF to code scanning" step publish
29-
# Hypatia findings to the Security → Code scanning page so they
30-
# are triaged/deduplicated like CodeQL alerts instead of living
31-
# only in a build artifact nobody is required to look at.
32-
# See hyperpolymath/burble#35 (SARIF integration).
33-
# This is a single-job workflow, so job-level scoping would not
34-
# narrow the grant further; it stays workflow-level and documented.
35-
security-events: write
36-
# pull-requests: write lets the advisory "Comment on PR with findings"
37-
# step post its summary. Without it the built-in GITHUB_TOKEN gets
38-
# "Resource not accessible by integration" and (absent continue-on-error)
39-
# hard-fails the scan — exactly what the gate-decoupling design forbids.
40-
pull-requests: write
15+
security-events: read
4116

4217
jobs:
4318
scan:

.github/workflows/mirror.yml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
# SPDX-License-Identifier: AGPL-3.0-or-later
22
# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell
33
name: Mirror to Git Forges
4-
54
on:
65
push:
76
branches: [main]
87
workflow_dispatch:
9-
108
permissions:
119
contents: read
12-
1310
jobs:
1411
mirror-gitlab:
1512
runs-on: ubuntu-latest
@@ -24,13 +21,11 @@ jobs:
2421
if: ${{ secrets.GITLAB_SSH_KEY != '' }}
2522
with:
2623
ssh-private-key: ${{ secrets.GITLAB_SSH_KEY }}
27-
2824
- name: Mirror to GitLab
2925
run: |
3026
ssh-keyscan -t ed25519 gitlab.com >> ~/.ssh/known_hosts
3127
git remote add gitlab git@gitlab.com:${{ vars.GITLAB_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }}.git || true
3228
git push --force gitlab main
33-
3429
mirror-bitbucket:
3530
runs-on: ubuntu-latest
3631
timeout-minutes: 15
@@ -44,13 +39,11 @@ jobs:
4439
if: ${{ secrets.BITBUCKET_SSH_KEY != '' }}
4540
with:
4641
ssh-private-key: ${{ secrets.BITBUCKET_SSH_KEY }}
47-
4842
- name: Mirror to Bitbucket
4943
run: |
5044
ssh-keyscan -t ed25519 bitbucket.org >> ~/.ssh/known_hosts
5145
git remote add bitbucket git@bitbucket.org:${{ vars.BITBUCKET_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }}.git || true
5246
git push --force bitbucket main
53-
5447
mirror-codeberg:
5548
runs-on: ubuntu-latest
5649
timeout-minutes: 15
@@ -64,13 +57,11 @@ jobs:
6457
if: ${{ secrets.CODEBERG_SSH_KEY != '' }}
6558
with:
6659
ssh-private-key: ${{ secrets.CODEBERG_SSH_KEY }}
67-
6860
- name: Mirror to Codeberg
6961
run: |
7062
ssh-keyscan -t ed25519 codeberg.org >> ~/.ssh/known_hosts
7163
git remote add codeberg git@codeberg.org:${{ vars.CODEBERG_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }}.git || true
7264
git push --force codeberg main
73-
7465
mirror-sourcehut:
7566
runs-on: ubuntu-latest
7667
timeout-minutes: 15
@@ -84,13 +75,11 @@ jobs:
8475
if: ${{ secrets.SOURCEHUT_SSH_KEY != '' }}
8576
with:
8677
ssh-private-key: ${{ secrets.SOURCEHUT_SSH_KEY }}
87-
8878
- name: Mirror to SourceHut
8979
run: |
9080
ssh-keyscan -t ed25519 git.sr.ht >> ~/.ssh/known_hosts
9181
git remote add sourcehut git@git.sr.ht:~${{ vars.SOURCEHUT_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }} || true
9282
git push --force sourcehut main
93-
9483
mirror-disroot:
9584
runs-on: ubuntu-latest
9685
timeout-minutes: 15
@@ -104,13 +93,11 @@ jobs:
10493
if: ${{ secrets.DISROOT_SSH_KEY != '' }}
10594
with:
10695
ssh-private-key: ${{ secrets.DISROOT_SSH_KEY }}
107-
10896
- name: Mirror to Disroot
10997
run: |
11098
ssh-keyscan -t ed25519 git.disroot.org >> ~/.ssh/known_hosts
11199
git remote add disroot git@git.disroot.org:${{ vars.DISROOT_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }}.git || true
112100
git push --force disroot main
113-
114101
mirror-gitea:
115102
runs-on: ubuntu-latest
116103
timeout-minutes: 15
@@ -124,13 +111,11 @@ jobs:
124111
if: ${{ secrets.GITEA_SSH_KEY != '' }}
125112
with:
126113
ssh-private-key: ${{ secrets.GITEA_SSH_KEY }}
127-
128114
- name: Mirror to Gitea
129115
run: |
130116
ssh-keyscan -t ed25519 ${{ vars.GITEA_HOST }} >> ~/.ssh/known_hosts
131117
git remote add gitea git@${{ vars.GITEA_HOST }}:${{ vars.GITEA_ORG || vars.MIRROR_ORG || github.repository_owner }}/${{ github.event.repository.name }}.git || true
132118
git push --force gitea main
133-
134119
mirror-radicle:
135120
runs-on: ubuntu-latest
136121
timeout-minutes: 15
@@ -139,18 +124,15 @@ jobs:
139124
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
140125
with:
141126
fetch-depth: 0
142-
143127
- name: Setup Rust
144128
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 # stable
145129
with:
146130
toolchain: stable
147-
148131
- name: Install Radicle
149132
run: |
150133
# Install via cargo (safer than curl|sh)
151134
cargo install radicle-cli --locked
152135
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
153-
154136
- name: Mirror to Radicle
155137
run: |
156138
echo "${{ secrets.RADICLE_KEY }}" > ~/.radicle/keys/radicle

.github/workflows/scorecard.yml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
1-
# SPDX-License-Identifier: PMPL-1.0
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
22
name: OSSF Scorecard
3+
34
on:
45
push:
56
branches: [main, master]
67
schedule:
78
- cron: '0 4 * * *'
89
workflow_dispatch:
910

10-
# Estate guardrail: cancel superseded runs so re-pushes / rebased PR
11-
# updates do not pile up queued runs against the shared account-wide
12-
# Actions concurrency pool. Applied only to read-only check workflows
13-
# (no publish/mutation), so cancelling a superseded run is always safe.
14-
concurrency:
15-
group: ${{ github.workflow }}-${{ github.ref }}
16-
cancel-in-progress: true
17-
1811
permissions:
1912
contents: read
2013

.github/workflows/secret-scanner.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,27 @@
11
# SPDX-License-Identifier: PMPL-1.0
22
# Prevention workflow - scans for hardcoded secrets before they reach main
33
name: Secret Scanner
4-
54
on:
65
pull_request:
76
push:
87
branches: [main]
9-
108
# Estate guardrail: cancel superseded runs so re-pushes / rebased PR
119
# updates do not pile up queued runs against the shared account-wide
1210
# Actions concurrency pool. Applied only to read-only check workflows
1311
# (no publish/mutation), so cancelling a superseded run is always safe.
1412
concurrency:
1513
group: ${{ github.workflow }}-${{ github.ref }}
1614
cancel-in-progress: true
17-
1815
permissions:
1916
contents: read
20-
2117
jobs:
2218
trufflehog:
2319
runs-on: ubuntu-latest
2420
timeout-minutes: 15
2521
steps:
2622
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v4
2723
with:
28-
fetch-depth: 0 # Full history for scanning
29-
24+
fetch-depth: 0 # Full history for scanning
3025
- name: TruffleHog Secret Scan
3126
uses: trufflesecurity/trufflehog@30d5bb91af1a771378349dbbb0c82129392acf70 # v3
3227
with:

0 commit comments

Comments
 (0)