Skip to content

Merge pull request #570 from percy-raskova/docs/production-port-plan #766

Merge pull request #570 from percy-raskova/docs/production-port-plan

Merge pull request #570 from percy-raskova/docs/production-port-plan #766

Workflow file for this run

name: "CodeQL Security Scan"
# ADR181 R5 (2026-07-30): the SAST budget follows the engine language.
# - `rust` matrix leg added (Amendment AE: rust/ is the engine; the extractor
# is public-preview, build-mode none — findings are informational, never a
# required check, WND-4).
# - `pull_request` trigger DROPPED: 132 runs/day produced zero actionable
# PR-time findings; the alert database lives on the default branch, so
# push + weekly cron keep it fresh at ~1/3 the compute.
# - `paths-ignore` excludes the Amendment-V legacy trees so the alert floor
# stays ZERO and any new alert on src/ or rust/ is news.
on:
push:
branches: [main, dev]
schedule:
# Weekly scan on Sundays at 3am UTC
- cron: "0 3 * * 0"
workflow_dispatch: {}
concurrency:
group: codeql-${{ github.ref }}
cancel-in-progress: true
jobs:
analyze:
name: Analyze ${{ matrix.language }}
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
include:
- language: python
build-mode: none
- language: rust
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.37.6
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# security-extended: catches SQL injection, XSS, command injection,
# path traversal, etc. Good balance of coverage vs noise.
queries: security-extended
config: |
paths-ignore:
- web
- src/frontend
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.37.6
with:
category: "/language:${{ matrix.language }}"
# Only fail on error/critical, not warnings
upload: always