| 1 | --- |
| 2 | name: podcaster-handoff-validation |
| 3 | description: Validate Podcaster handoff without exposing secrets or publishing content |
| 4 | domain: quality, pipeline-validation, secret-handling |
| 5 | confidence: medium |
| 6 | source: Fry Podcaster handoff QA validation |
| 7 | --- |
| 8 | |
| 9 | ## Pattern |
| 10 | |
| 11 | - Gate post-publish handoffs on the exact eligible mode (`run_mode == "normal"`) and on successful upstream publish/deploy jobs; broad negative filters are easy to miss when new rerun modes are added. |
| 12 | - Keep downstream handoff failures non-blocking and outside the article publication success criteria; warn and preserve the completed publish. |
| 13 | - Validate the publish manifest immediately before handoff so no-AI, stale, failed, or unpromoted candidates cannot leak into downstream generation. |
| 14 | - Validate client behavior locally with a localhost mock server and a placeholder API key. |
| 15 | - Check secret availability by presence only; never print or retrieve secret values. |
| 16 | - Use project-local scratch space via `TMPDIR=$PWD/.copilot/local-tmp` so existing tests that call `tempfile` do not write outside the repo. |
| 17 | - Treat workflow dry-run support as valid only if the Podcaster job actually runs and sends `dry_run: true` without publishing or mutating production content. |
| 18 | |
| 19 | ## Anti-patterns |
| 20 | |
| 21 | - Dispatching a normal publish workflow solely to test a downstream handoff. |
| 22 | - Reading `.env` or printing configured secret values for validation. |
| 23 | - Assuming a pipeline `dry-run` validates handoff when the handoff job is skipped by workflow conditions. |