Context
docs/omt-global-ci-cd-audit-2026-04-14.md flags the absence of a centralized security-scan lane as one of the highest-risk org-wide findings and explicitly names this repo as the natural source for reusable security workflows:
the current template still stops at fast-checks plus validate-secrets; it does not yet centralize dependency review, CodeQL, Semgrep, or OSV in a reusable security workflow.
The repo currently has Dependabot (.github/dependabot.yml) and scripts/check-detect-secrets.sh, but no CodeQL, dependency-review, or OSV scanning workflow.
Scope
- Add
.github/workflows/security.yml (or codeql.yml + dependency-review.yml) that runs:
- CodeQL for JavaScript/TypeScript (and Python where relevant)
actions/dependency-review-action on pull requests
- OSV scanner against the lockfile on pull requests and on a nightly cron
- Run on hosted runners only (audit target state:
rg-security, never general-purpose persistent runners).
- Surface findings in the Security tab; do not make the new workflow a required PR status check (per
CLAUDE.md guardrail: keep CI Gate as the single required check).
Acceptance Criteria
- CodeQL results appear under the repo's Security tab on PRs touching source.
- Dependency-review fails PRs that introduce high-severity vulnerable transitive deps.
- OSV nightly run posts/uploads a SARIF report.
- Workflow runs on
ubuntu-latest, not on self-hosted runners.
CI Gate remains the only required status check.
Related
Context
docs/omt-global-ci-cd-audit-2026-04-14.mdflags the absence of a centralized security-scan lane as one of the highest-risk org-wide findings and explicitly names this repo as the natural source for reusable security workflows:The repo currently has Dependabot (
.github/dependabot.yml) andscripts/check-detect-secrets.sh, but no CodeQL, dependency-review, or OSV scanning workflow.Scope
.github/workflows/security.yml(orcodeql.yml+dependency-review.yml) that runs:actions/dependency-review-actionon pull requestsrg-security, never general-purpose persistent runners).CLAUDE.mdguardrail: keepCI Gateas the single required check).Acceptance Criteria
ubuntu-latest, not on self-hosted runners.CI Gateremains the only required status check.Related
docs/omt-global-ci-cd-audit-2026-04-14.md(Wave 4)