chore(compliance): consume erp-mafia/compliancemaxx@v1 (#418)

* chore(compliance): consume erp-mafia/compliancemaxx@v1

Adds the consumer side of the new compliancemaxx orchestrator:

  - .github/workflows/compliance-pr.yml — single-job advisory check
    that calls `uses: erp-mafia/compliancemaxx@v1` on every PR.
    Threshold + skill selection live in .compliance/config.yml.
    `fail-on-findings: false` keeps it strictly advisory while findings
    bed in; flip to true after triage.

  - .compliance/config.yml — bootstrap config: all 5 skills enabled
    (oss-license, owasp-asvs-v5, iso-27001-2022, soc2, gdpr),
    severity_threshold_to_block=critical, no suppressions yet.

The orchestrator code, skill manifests, and reference docs live in the
new public repo: https://github.com/erp-mafia/compliancemaxx

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: retrigger compliance check

* chore(compliance): add full-swarm workflow (nightly + dispatch + label)

Adds the LLM-powered deep_audit alongside the existing PR-mode advisory
check. Triggers:
  - 02:00 UTC nightly cron
  - workflow_dispatch (manual)
  - PRs labeled `compliance:full-audit`

Authenticates to AWS Bedrock via the existing AWS_ACCESS_KEY_ID/SECRET
repo secrets (same path swedish-compliance-review.yml already uses).
`fail-on-findings: false` keeps it observational while findings bed in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-05-07 22:11:33 +02:00
committed by GitHub
co-authored by Claude Opus 4.7
parent 15d4f429f3
commit 97989285c2
3 changed files with 109 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
# yaml-language-server: $schema=../.claude/skills/compliance-swarm/.compliance/config.schema.yml
# Bootstrap config for gnubok itself. Threshold starts at "critical" so the
# advisory PR check warns loudly without blocking merges. Tighten to "high"
# once findings are triaged and suppressions are in place.
enabled_skills:
- oss-license-compliance
- owasp-asvs-v5-compliance
- iso-27001-2022-compliance
- soc2-cicd-compliance
- gdpr-cicd-compliance
asvs_level: L2
soc2_categories: [security, confidentiality]
severity_threshold_to_block: critical
llm_provider: bedrock
llm_model: eu.anthropic.claude-sonnet-4-6
# Add suppressions here as triage progresses. Each rule needs a justification
# and (for ISO/SOC 2 controls) a risk_id pointing at a Risk Register entry.
suppressions: []
+30
View File
@@ -0,0 +1,30 @@
name: compliance — PR mode (advisory)
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
security-events: write
concurrency:
group: compliance-pr-${{ github.ref }}
cancel-in-progress: true
jobs:
compliance:
name: PR static checks (advisory)
runs-on: ubuntu-latest
timeout-minutes: 8
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: erp-mafia/compliancemaxx@v1
with:
mode: pr
base: ${{ github.event.pull_request.base.sha }}
fail-on-findings: false # advisory while bedding in; flip to true after triage
+57
View File
@@ -0,0 +1,57 @@
name: compliance — full swarm
# Full hybrid audit: deterministic scanners + LLM-driven deep_audit checks
# (RoPA drift, AGPL §13 evaluation, IDOR/access-control reasoning, ISMS clause
# review, change-management bypass detection).
#
# Triggers:
# - Nightly cron at 02:00 UTC
# - workflow_dispatch (run anytime)
# - PRs labeled `compliance:full-audit`
on:
schedule:
- cron: '0 2 * * *'
workflow_dispatch:
inputs:
reason:
description: 'Why are you running this manually?'
required: false
default: ''
pull_request:
types: [labeled]
permissions:
contents: read
pull-requests: write
security-events: write
concurrency:
group: compliance-swarm-${{ github.ref }}
cancel-in-progress: false
jobs:
swarm:
name: Full hybrid audit
if: |
github.event_name != 'pull_request'
|| github.event.label.name == 'compliance:full-audit'
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: erp-mafia/compliancemaxx@v1
with:
mode: swarm
llm-provider: bedrock
fail-on-findings: false # observational while bedding in
env:
AWS_REGION: eu-north-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# Override default model if desired:
# COMPLIANCE_BEDROCK_MODEL: 'eu.anthropic.claude-sonnet-4-6'