Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
fb4b1bf
fix(ci): drop invalid job-level timeout-minutes from reusable-workflo…
hyperpolymath Jul 17, 2026
31c0813
fix: repair non-compiling FFI, vacuous gates and three parse-dead wor…
hyperpolymath Jul 21, 2026
f364daf
docs: de-conflate KRL from Tangle, restate the readiness grade honestly
hyperpolymath Jul 21, 2026
0e1bbb4
docs: de-conflate KRL from Tangle, restate the readiness grade honestly
hyperpolymath Jul 21, 2026
6e9d24a
fix(governance): add SPDX header to pages.yml, refresh three stale st…
hyperpolymath Jul 21, 2026
611b5b7
fix(governance): SHA-pin the three actions in pages.yml
hyperpolymath Jul 21, 2026
580f10e
fix(ci): grant security-events: write to the Hypatia caller
hyperpolymath Jul 21, 2026
5701631
fix(ci): update secret-scanner SHA to @7fdc2705df74b4e352d2a1cde3e87a…
hyperpolymath Aug 12, 2026
6eb2ba0
chore(ci): bump standards reusable pins to fix Bug A and Bug B (#426)
hyperpolymath Aug 14, 2026
7fdd6b6
chore(ci): bump standards reusable pins to 5b1d0022 (#426)
hyperpolymath Aug 14, 2026
d10e22d
Merge branch 'main' of github.com:hyperpolymath/krl into fix/ci-426-b…
hyperpolymath Aug 17, 2026
a0bcdfd
Merge branch 'docs/deconflate-krl-tangle' into fix/ci-426-batch12-krl
hyperpolymath Aug 17, 2026
c7e473b
Merge branch 'fix/ci-timeout-minutes-reusable' into fix/ci-426-batch1…
hyperpolymath Aug 17, 2026
678a2b8
Merge branch 'fix/part1-remediation' into fix/ci-426-batch12-krl
hyperpolymath Aug 17, 2026
5561823
Merge remote-tracking branch 'origin/fix/governance-gates' into fix/c…
hyperpolymath Aug 18, 2026
600eb5d
Fix TokenPermissionsID: apply least-privilege permissions
mistral-vibe Sep 11, 2026
382376e
feat: add modern GitHub rulesets for maximum compliance
mistral-vibe Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/rulesets/Immutable-Tags.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "Immutable-Tags",
"target": "tag",
"enforcement": "active",
"conditions": {
"ref_name": {
"include": ["~ALL"],
"exclude": []
}
},
"bypass_actors": [],
"rules": [
{"type": "creation"},
{"type": "deletion"},
{"type": "non_fast_forward"},
{"type": "update"},
{"type": "required_signatures"}
]
}
44 changes: 44 additions & 0 deletions .github/rulesets/Optimus-Branch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"name": "Optimus-Branch",
"target": "branch",
"enforcement": "active",
"conditions": {
"ref_name": {
"include": ["~DEFAULT_BRANCH"],
"exclude": []
}
},
"bypass_actors": [],
"rules": [
{
"type": "deletion"
},
{
"type": "non_fast_forward"
},
{
"type": "required_signatures"
},
{
"type": "pull_request",
"parameters": {
"required_approving_review_count": 2,
"dismiss_stale_reviews_on_push": true,
"require_code_owner_review": true,
"require_last_push_approval": true,
"required_review_thread_resolution": true,
"require_extra_approval_for_unattributed_changes": true,
"required_reviewers": [],
"allowed_merge_methods": []
}
},
{
"type": "required_status_checks",
"parameters": {
"strict_required_status_checks_policy": true,
"do_not_enforce_on_create": false,
"required_status_checks": []
}
}
]
}
18 changes: 0 additions & 18 deletions .github/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,21 +105,3 @@ labels:

# ─── Branch Protection ─────────────────────────────────────────────────────────

branches:
- name: "main"
protection:
required_pull_request_reviews:
required_approving_review_count: 1
dismiss_stale_reviews: true
require_code_owner_reviews: true
required_status_checks:
strict: true
contexts:
- "hypatia-scan"
- "codeql"
- "openssf-compliance"
enforce_admins: true
required_signatures: true
restrictions: null
allow_force_pushes: false
allow_deletions: false
178 changes: 178 additions & 0 deletions .github/workflows/ci-benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# SPDX-License-Identifier: MPL-2.0
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
#
# KRL CI: Benchmarks and Tests
#
# Runs:
# 1. Language-specific tests (lexer, parser, queries)
# 2. Central benchmarks from proven-tests-and-benchmarks repo
# 3. GitGuardian secret scanning
# 4. SonarQubeCloud quality analysis
# 5. Existing E2E tests

name: CI - Tests & Benchmarks

on:
push:
branches: [main, develop]
paths:
- 'src/**'
- 'server/**'
- 'benches/**'
- 'tests/**'
- '.github/workflows/ci-benchmarks.yml'
pull_request:
branches: [main]
paths:
- 'src/**'
- 'server/**'
- 'benches/**'
- 'tests/**'
- '.github/workflows/ci-benchmarks.yml'
workflow_dispatch:
schedule:
# Nightly benchmarks
- cron: '0 2 * * *'

permissions:
contents: read
pull-requests: write

Check warning on line 39 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Move this write permission from workflow level to job level.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj5&open=AaCWGCqvre9coQVtcFj5&pullRequest=78

concurrency:
group: ci-benchmarks-${{ github.ref }}
cancel-in-progress: true

env:
BENCHMARKS_REPO: hyperpolymath/proven
BENCHMARKS_PATH: benchmarks/krl

jobs:
# Job 1: Run KRL-specific tests
krl-tests:
name: KRL Tests
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout KRL repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Zig
uses: goto-bus-stop/setup-zig@v2

Check failure on line 63 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use full commit SHA hash for this dependency.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFjz&open=AaCWGCqvre9coQVtcFjz&pullRequest=78
with:
version: 0.16.0

- name: Set up Julia
uses: julia-actions/setup-julia@v2

Check failure on line 68 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use full commit SHA hash for this dependency.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj0&open=AaCWGCqvre9coQVtcFj0&pullRequest=78
with:
version: '1.12'

- name: Run existing E2E tests
uses: ./.github/workflows/e2e.yml

- name: Run lexer/parser tests
run: |
# TODO: Replace with actual KRL lexer/parser tests

Check warning on line 77 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Complete the task associated to this "TODO" comment.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj1&open=AaCWGCqvre9coQVtcFj1&pullRequest=78
julia --color=yes server/krl/test/lexer_test.jl
julia --color=yes server/krl/test/parser_test.jl

- name: Run query tests
run: |
# TODO: Replace with actual KRL query tests

Check warning on line 83 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Complete the task associated to this "TODO" comment.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj2&open=AaCWGCqvre9coQVtcFj2&pullRequest=78
julia --color=yes server/krl/test/sql_test.jl

# Job 2: Run central benchmarks
benchmarks:
name: KRL Benchmarks
needs: krl-tests
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout KRL repo
uses: actions/checkout@v4

- name: Checkout proven benchmarks repo
uses: actions/checkout@v4
with:
repository: ${{ env.BENCHMARKS_REPO }}
path: proven

- name: Install benchmark dependencies
run: |
sudo apt-get update
sudo apt-get install -y jq bc

- name: Run KRL benchmarks
run: |
cd proven/benchmarks/krl
# Run all benchmarks and compare with baselines
./run.sh --all

- name: Upload benchmark results
uses: actions/upload-artifact@v4
if: always()
with:
name: krl-benchmark-results
path: proven/benchmarks/krl/results.json
retention-days: 30

# Job 3: GitGuardian secret scanning
gitguardian:
name: GitGuardian Secret Scan
needs: krl-tests
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: GitGuardian scan
uses: GitGuardian/ggshield-action@v1

Check failure on line 136 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use full commit SHA hash for this dependency.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj3&open=AaCWGCqvre9coQVtcFj3&pullRequest=78
with:
args: scan repo .
env:
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}

# Job 4: SonarQubeCloud quality analysis
sonarqube:
name: SonarQubeCloud Analysis
needs: krl-tests
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: SonarQube scan
uses: SonarSource/sonarqube-scan-action@v2

Check failure on line 156 in .github/workflows/ci-benchmarks.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use full commit SHA hash for this dependency.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqvre9coQVtcFj4&open=AaCWGCqvre9coQVtcFj4&pullRequest=78
with:
args: >-
-Dsonar.projectKey=krl
-Dsonar.organization=hyperpolymath
-Dsonar.sources=src,server
-Dsonar.language=julia
env:
SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}

# Job 5: CodeQL analysis (existing)
codeql:
name: CodeQL Analysis
needs: krl-tests
uses: ./.github/workflows/codeql.yml
secrets: inherit

# Job 6: Dependabot (existing)
dependabot:
name: Dependabot
needs: krl-tests
uses: ./.github/workflows/dependabot-automerge.yml
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-automerge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ on:
pull_request:
types: [opened, reopened, synchronize]
permissions:
contents: write # needed to enable auto-merge
contents: read # needed to enable auto-merge
pull-requests: write # needed to approve
# NB: keep narrow — do NOT add secrets: read or id-token: write here.
jobs:
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/fragment-conformance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# SPDX-License-Identifier: MPL-2.0
name: KRL fragment conformance
on:
pull_request:
push:
branches: [main, master]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
fragment:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout specification
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
persist-credentials: false
- name: Checkout current QuandleDB implementation
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
repository: hyperpolymath/quandledb
path: deps/quandledb
persist-credentials: false
- name: Record implementation revision
run: git -C deps/quandledb rev-parse HEAD
- name: Install Julia 1.12
run: |
set -euo pipefail
curl -fsSL https://install.julialang.org -o "$RUNNER_TEMP/juliaup-init.sh"

Check warning on line 33 in .github/workflows/fragment-conformance.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Not enforcing HTTPS here might allow for redirections to insecure websites. Make sure it is safe here.

See more on https://sonarcloud.io/project/issues?id=hyperpolymath_krl&issues=AaCWGCqPre9coQVtcFjy&open=AaCWGCqPre9coQVtcFjy&pullRequest=78
sh "$RUNNER_TEMP/juliaup-init.sh" --yes --default-channel 1.12
echo "$HOME/.juliaup/bin" >> "$GITHUB_PATH"
- name: Check fragment acceptance and rejection
run: julia --startup-file=no tests/conformance/retrieval_fragment.jl deps/quandledb
2 changes: 1 addition & 1 deletion .github/workflows/governance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ permissions:

jobs:
governance:
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@f9dca6ded2cad8ab54044c1cb0489b558ae2682b
2 changes: 1 addition & 1 deletion .github/workflows/hypatia-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ permissions:

jobs:
scan:
uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@f9dca6ded2cad8ab54044c1cb0489b558ae2682b
2 changes: 1 addition & 1 deletion .github/workflows/mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ permissions:
contents: read
jobs:
mirror:
uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@5b1d00229e5e8c0c0fbfedc7e80f37ea50f49236
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/rhodibot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
workflows: ["Hypatia Neurosymbolic Analysis"]
types: [completed]
permissions:
contents: write
contents: read
pull-requests: write
jobs:
rhodibot:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ permissions:

jobs:
scorecard:
uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9
uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@f9dca6ded2cad8ab54044c1cb0489b558ae2682b
permissions:
contents: read
security-events: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/secret-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ jobs:
scan:
permissions:
contents: read
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@5b1d00229e5e8c0c0fbfedc7e80f37ea50f49236
secrets: inherit