Part of #834 (Production-Readiness Audit) — Batch B2 (hardening, parallel-safe).
Replaces audit item #8 (P1). Parallel with: audit-b2 siblings — this issue owns a new workflow file.
Problem
No security / supply-chain scanning today. Missing:
- SAST: CodeQL or Semgrep
- Dependency vulnerabilities: Trivy / Grype /
nix flake show audit
- Secret scanning: gitleaks / trufflehog (PR + history)
- SBOM: CycloneDX / SPDX generation
- Provenance: SLSA / sigstore signing of build artifacts
The repo already grants id-token: write to build jobs, so signing/provenance is the natural next step.
Acceptance criteria
Files in scope
.github/workflows/security.yml (new)
.github/codeql.yml or codeql config (new, if CodeQL used)
.gitleaks.toml (new, if custom rules)
Out of scope
Branch / PR
- Branch:
ci/security-pipeline · Targets: dev
Part of #834 (Production-Readiness Audit) — Batch B2 (hardening, parallel-safe).
Replaces audit item #8 (P1). Parallel with:
audit-b2siblings — this issue owns a new workflow file.Problem
No security / supply-chain scanning today. Missing:
nix flake showauditThe repo already grants
id-token: writeto build jobs, so signing/provenance is the natural next step.Acceptance criteria
.github/workflows/security.ymlwith:nix flake showdependency scan.pull_request:,push: dev, and scheduled (nightly).CRITICAL/HIGH).Files in scope
.github/workflows/security.yml(new).github/codeql.ymlor codeql config (new, if CodeQL used).gitleaks.toml(new, if custom rules)Out of scope
SECURITY.mdpolicy file (B1-4 / audit Implement data-driven biome system #9, [B1] repo: add SECURITY.md, CODEOWNERS, CODE_OF_CONDUCT.md #862).Branch / PR
ci/security-pipeline· Targets:dev