Problem
dotfiles has no scheduled secret re-scan today. symphony's secret-scan.yml has one: trufflehog ships new detector signatures continuously, so a commit that scanned clean last month can be flagged this month against a detector that didn't exist when it was pushed. Push-triggered scanning alone never re-checks history — only what's new in that push. dotfiles is the higher-worry case (per-machine secrets, sops-managed, $HOME worktree) but currently has zero coverage for this failure mode.
Approach
Don't centralize execution — cross-repo scanning from one workflow needs a PAT with access to every repo, which is worse than what exists today. Instead, share the workflow definition via workflow_call, the same pattern symphony's prose-budget job already uses (pulls its engine from dotfiles-ref: claude/prose-budget). Define the gitleaks/trufflehog scan job once — in dotfiles, since that's the natural home for shared engines — and have both dotfiles and symphony call it.
Completion criteria
- A reusable secret-scan workflow exists (in dotfiles), callable via
workflow_call.
- Both
dotfiles and symphony call it on a weekly schedule, each scanning its own repo's history under its own permissions (no cross-repo token).
- symphony's existing
secret-scan.yml schedule job is migrated to call the shared workflow rather than running its own copy of the logic.
- Verified: a scheduled run actually fires and completes green in both repos (not just that the YAML parses).
Context
Raised while scoping symphony issue #71 (ci-gate/secret-gate migration) — the weekly-schedule requirement in symphony's secret-scan.yml is what's keeping that workflow separate from validate.yml, and Mark's a bigger worry is dotfiles lacking the same coverage entirely.
🤖 Generated with Claude Code
Problem
dotfiles has no scheduled secret re-scan today. symphony's
secret-scan.ymlhas one: trufflehog ships new detector signatures continuously, so a commit that scanned clean last month can be flagged this month against a detector that didn't exist when it was pushed. Push-triggered scanning alone never re-checks history — only what's new in that push. dotfiles is the higher-worry case (per-machine secrets, sops-managed,$HOMEworktree) but currently has zero coverage for this failure mode.Approach
Don't centralize execution — cross-repo scanning from one workflow needs a PAT with access to every repo, which is worse than what exists today. Instead, share the workflow definition via
workflow_call, the same pattern symphony'sprose-budgetjob already uses (pulls its engine fromdotfiles-ref: claude/prose-budget). Define the gitleaks/trufflehog scan job once — in dotfiles, since that's the natural home for shared engines — and have both dotfiles and symphony call it.Completion criteria
workflow_call.dotfilesandsymphonycall it on a weekly schedule, each scanning its own repo's history under its own permissions (no cross-repo token).secret-scan.ymlschedule job is migrated to call the shared workflow rather than running its own copy of the logic.Context
Raised while scoping symphony issue #71 (ci-gate/secret-gate migration) — the weekly-schedule requirement in symphony's
secret-scan.ymlis what's keeping that workflow separate fromvalidate.yml, and Mark's a bigger worry is dotfiles lacking the same coverage entirely.🤖 Generated with Claude Code