A Cap Is a Recorded Stop
Caps, when configured, are recorded stops — steps, tokens, wall clock, context, child depth, child count. A cap is not an exception you catch and hide. It is a stop reason the record can replay. Interactive turns have no step cap by default because the operator is watching and can interrupt. Headless run has no operator, so it carries a finite floor — a hundred and twenty steps and an hour unless the operator explicitly chooses unlimited. Delegates keep their own finite caps. Unlimited never means unbounded-on-nonsense.
Two repetition breakers end a turn independent of any step cap. Five consecutive steps whose calls never became executable close as invalid-calls: the engine's correction is not landing. Six identical back-to-back call sets close as no-progress. An executable call resets the invalid counter. Those numbers are product sentences, not magic. They exist because a small model will otherwise thank you forever for a schema error it keeps repeating.
Cuts Are Not Errors You Paper Over
A transport that ends before a terminal event is a cut. Partial blocks stay in the record and stay out of the transcript. Resume continues from the last durable step. The Claude agent-class wall that can end a heavy turn without a result message is the same kind: named, recorded, not retried by hope. Context overflow is a typed stop before transport when the estimate hits the window, or a mapped HTTP 400 when the daemon finally tells the truth under truncate: false.