The credential corpus — no secret reaches the repo
- A new rule family, BC, for credentials written into a migration: a role created or altered with a plaintext password (BC001; an md5 verifier is a warning, a SCRAM verifier stays silent), a foreign server, user mapping or subscription carrying an embedded credential (BC002), a connection string with the password inline in any string literal (BC003), a vendor-format API key, JWT or PEM private key in any literal (BC004), and a secret-named column given a literal value (BC005).
- Published formats only, never entropy: sk_live_, AKIA, ghp_, xoxb-, -----BEGIN PRIVATE KEY----- and friends fire; a uuid, a bcrypt hash, a placeholder or an empty string stays silent.
- Every finding masks the value. When a BC rule fires on a statement, the engine redacts the secret in every finding on that statement — the report, the PR comment and the run log never repeat it.
- New command: bolvrk secrets runs the same credential rules over any file — .env, YAML, JSON, source, shell — line by line, with a text-only rule for secret-named settings assigned a literal (BC006). Same findings contract, same policy overrides, same SARIF output. Always local: the scanner has no remote mode by design.
- Suppression works the same way: bolvrk-ignore BC006: reason on the line or the line above, in any comment syntax, reason required.