- actions.mjs no longer imports exec from helpers; uses ctx.exec instead - index.mjs builds ctx via make_ctx(), which injects dry-run stubs for exec and mailer_send when --dry-run is active - Handlers now run fully (including permission checks) in dry-run mode; only the actual side effects are stubbed out Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>