Phase 4 — Run Without You (the recurring loop)¶
A scheduled deployment fires a fresh session on a cron cadence — the agent runs without you. Each firing can carry its own outcome, nesting the bounded grade→iterate loop inside every recurring run.
Choose the trigger¶
| Answer | Shape | Tool |
|---|---|---|
| "every morning / weekly / nightly" | recurring cron deployment | deployment_builder.py + cron_validator.py |
| "when X happens" | event-driven curl (documented, not scheduled) | deployment_builder.py (message only) |
| "only when I ask" | on-demand (no deployment) | none — just re-send a user.message |
Workflow (recurring)¶
- Validate the schedule. Invalid cron/timezone → exit 1. Read the DST note: wall-clock semantics mean spring-forward times are skipped and fall-back times fire twice — avoid 02:00–03:00 in DST zones if exactly-once matters.
- Build the deployment payload.
python3 scripts/deployment_builder.py \ --sheet ./my-agent/build-sheet.json --agent-id agent_123 --env-id env_456 \ --nest-outcome --out ./my-agent/payloads/deployment.json--nest-outcomeincludes the rubric so each firing self-grades. The tool prints the BYOK curl to create it and to test it once with the manualrunendpoint before trusting the schedule. - Test before you trust. Fire one manual
run, read the verdict, only then leave the cron in place. Pin the agent version in the deployment once it passes. - Finalize the roadmap.
- Advance + hand to wrap-up.
goal_state.py set --phase wrap-up, then invoke thewrap-upskill.
Hard rules¶
- Test with a manual
runfirst. Never commit a schedule you haven't fired once. - Safety rails on by default.
always_askMCP,limitednetworking where you can,read_onlyuntrusted memory,max_iterationsper firing, workspace spend limit. There is no spend cap inside CMA. - DST is wall-clock. Surface the note; pick safe times.
- ≤1,000 deployments/org.
Forcing-question library (recommend + cite)¶
- "Cadence, event, or on-request?" Recommend: on-request v0 → cadence once graded. Cite: loops-and-workflows.md.
- "Should each firing self-grade?" Recommend: yes — nest the outcome. Cite: loops-and-workflows.md (nesting rule).
- "Which timezone, and is the time DST-safe?" Recommend: avoid 02:00–03:00 in DST zones. Cite: cma-primitives.md (wall-clock DST).
- "Did you fire one manual run first?" Recommend: always. Cite: this SKILL.
Tools¶
scripts/deployment_builder.py— POST /v1/deployments payload (+ test-run curl).scripts/cron_validator.py— 5-field cron + IANA tz + DST note.scripts/next_directions_writer.py— write/refresh NEXT-DIRECTIONS.md.