Task — engineering-spec@1

"Secret scanning in CI and pre-push"

doneTASK-IMP-003
module improvement · class product · priority p0 · created 2026-07-08 · shipped null
depends on none · blocks none

TASK-IMP-003: Secret scanning in CI and pre-push

Summary

Add SHA-pinned gitleaks CI, .gitleaks.toml allowlists, check-secrets.sh, and pre-push soft-skip when gitleaks is missing locally.

Problem

Secrets can land in git with no mechanical stop. Pre-push only gates Rust services/. Docs contain example tokens that look like secrets.

Proposed Solution

Pin gitleaks-action by SHA, allowlist known false-positive paths, wrap gitleaks with --probe-fixture fail proof, soft-skip in pre-push when binary absent.

Alternatives Considered

Success Metrics

Scope

In scope: workflow, config, check script, pre-push, tests.

Out of scope / Non-Goals

Dependencies

None.

AI Authorship Disclosure

1. Description (normative)

2. Acceptance criteria

3. Edge cases

Audit

§1 — Verdict summary

R27 stub expanded; soft-skip vs CI hard-fail explicit.

§2 — Findings

ISS-001 — False-positive flood (RESOLVED)

Allowlists required for enforceable gate.

§3 — Resolution

Score = 9/10. Verdict PASS.