feat(security): semgrep+trivy CI, pre-push hooks, auto docker release, badges (#14)
- release chain: publish-pypi now calls docker-publish via workflow_call after the GitHub Release (a GITHUB_TOKEN-created tag cannot fire tag-push triggers, which left the image unbuilt). docker-publish resolves the version from the call input or the tag ref. - security.yml: blocking semgrep SAST (p/python, p/security-audit, p/secrets) and trivy fs scan (vuln+misconfig+secret, HIGH/CRITICAL) on push/PR/weekly. - pre-push: .pre-commit-config.yaml (ruff, ggshield, semgrep, sanity hooks) at the pre-push stage; install with `pre-commit install --hook-type pre-push`. - findings triage: 6 semgrep logger-credential false positives annotated with justified nosemgrep (messages log status/host/port, never secrets); wildcard CORS justified (MCP clients, credentials disabled). Dockerfile fixed for real trivy findings: non-root USER, --no-install-recommends. - README: CI/Security/PyPI/Python/ghcr/license + tool badges. Verified: semgrep PASS, trivy PASS, image builds and serves /healthz as the non-root user, 129 tests passing. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
B
Bl4nk44 committed
c688ebbbf45cf5e900f882226a23a8dafbc39005
Parent: 8211eb5
Committed by GitHub <noreply@github.com>
on 7/12/2026, 3:44:43 PM