Walkthrough
Deployer Agents
The role that ships safely — and stops short of blast-radius operations.
The deployer's job is to take an approved diff to staging, run smoke tests, and open the PR. Critically, it does not merge to production — that gate stays human. Deployers that auto-merge are how outages happen.
Steps · 0 / 3 done
Define the deployer's tool surface
Allow: branch, push, deploy to staging, run smoke tests, open PR. Deny: merge, force-push, rollback, modify CI.
// roles/deployer.json { "allow": ["git.branch", "git.push", "deploy.staging", "smoke.run", "pr.open"], "deny": ["git.merge", "git.force_push", "deploy.production", "ci.modify"] }VerifyDeployer attempts to merge → blocked with explicit reason. The block is the feature.Define what "smoke pass" means
Don't trust the deployer's judgment of what passing looks like. Specify the exact commands.
// roles/deployer.json — smoke section { "smoke": { "commands": [ "curl -fsS $STAGING/api/health | jq -e '.status==\"ok\"'", "npm run e2e:smoke" ], "timeout_s": 120 } }VerifyIf either command exits non-zero, the deployer rolls back staging and flags the PR as not-ready.Open the PR with a structured body
Specify the PR body template so every PR carries the plan, the diff summary, and the smoke output.
// roles/deployer.json — pr template { "pr_body": "## Plan\n{plan}\n\n## Changes\n{diff_summary}\n\n## Smoke\n{smoke_output}" }VerifyPR description is identical structure across every roster run; reviewers know where to look.
Check your understanding
Q1. Why deny merge from the deployer's tool surface?
· Tick off the 3 step(s) above.
· Score 100% on the quiz.