1 min lesson
How the contracts compose
Name the parts in "How the contracts compose" and give the practical job of each one.
Step 1 of 3
How the contracts composefour services, clean seams
The seams
- Auth → Agent backend
- A validated identity + scopes token. Agent backend trusts it, never re-implements auth.
- Agent backend → SCM
- Provider-neutral calls; the agent never knows whether it's GitHub or GitLab.
- Agent backend → Webhooks
- A typed completion event handed to a delivery service with its own retry/DLQ semantics.
- Each → Observability
- Every hop emits a trace span on one run id, so a failure is traceable end to end.
Learn more
Full explanation
Failure modes and blast radius
Failure modes and blast radiusname them before you're asked
- Hop
- Auth
- Failure mode
- Auth provider slow or down
- Containment
- Cache valid sessions; fail closed on the action, not the whole app
- Hop
- SCM
- Failure mode
- Provider rate limit or 5xx
- Containment
- Serve cached reads, queue writes, circuit-break the adapter
- Hop
- Agent run
- Failure mode
- Model timeout or runaway loop
- Containment
- Checkpoint + idempotent retry; cost and step caps kill runaways
- Hop
- Webhook
- Failure mode
- Receiver down or slow
- Containment
- Retry with backoff + jitter; dead-letter after N attempts; never block the run
| Hop | Failure mode | Containment |
|---|---|---|
| Auth | Auth provider slow or down | Cache valid sessions; fail closed on the action, not the whole app |
| SCM | Provider rate limit or 5xx | Serve cached reads, queue writes, circuit-break the adapter |
| Agent run | Model timeout or runaway loop | Checkpoint + idempotent retry; cost and step caps kill runaways |
| Webhook | Receiver down or slow | Retry with backoff + jitter; dead-letter after N attempts; never block the run |
Each hop fails into a contained mode, so no single dependency takes the pipeline down.