Engineering Pattern
How to run a cross-cutting campaign
The principle, the three paths, the cascade · Cross-cutting changes finish or they don't. The ones that finish distribute context, not just code. Three paths through, one constraint that decides everything.
The principle
Cross-cutting changes finish or they don’t. The ones that finish share one constraint: every human in the loop has the context they need to act on the change in front of them.
Skip that constraint and the work fans out into a cascade. A platform team launches a campaign across two hundred repos. The PRs stall. The director escalates to the SVP, who broadcasts a directive to merge. The directive lands with selective adoption. A tracking campaign gets spun up to chase compliance on the original campaign. Each incomplete campaign spawns the next:
Campaign → Stall → Escalate → Directive → New Campaign → …
The three paths
If you need a human in the loop, give them context. If you don’t need a human, don’t put one there.
Automate completely. A script (or a codemod — a program that rewrites source code mechanically) does every change end-to-end — PR creation, validation, merge — with CI verification and canary rollout. Why it works: no context problem because no human is in the loop. The machine does the full job. Tradeoff: only works for mechanically safe changes.
Own it vertically. A dedicated team permanently owns the cross-cutting concern with merge authority. They write the PRs, hold the context, and are accountable for completion. Why it works: the human in the loop has deep context and authority — no dependency on another team’s bandwidth or motivation. Tradeoff: requires permanent headcount and org commitment.
Enable completely. Don’t do the work for other teams. Tell each team the next action to take and give them the knowledge to do it: a migration guide, known gotchas, estimated effort, a clear owner to ask. The team builds the PR themselves. Why it works: the human in the loop has full context because they wrote the change. Tradeoff: hard to scale; works best with strong team autonomy.
What the failure costs
Sit in that seat for thirty seconds. An engineer staring at a PR they can’t read, written by someone they don’t know, in a repo they don’t own.
The dead zone
The pattern fails in the middle: you do the work for the team (create the PR) but stop short of finishing it (require them to merge).
No automation. No vertical ownership. No enablement. A human in the loop with no context. Campaigns stall here. The cascade starts here.
Honor the principle — every human in the loop has context-in-hand — and you’re out of the cascade.