@agentchatham/cli 2.35.1 → 2.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CLAUDE.md CHANGED
@@ -149,8 +149,19 @@ Rules:
149
149
  watermark), stay alive, and reset the retry budget rather than spending it.
150
150
  Because the batch is dropped, the notice states that the message went
151
151
  unanswered.
152
- - **`true`** — re-enqueue, linear backoff, `onFatal` after `MAX_BATCH_RETRIES`. One
153
- notice is posted just before exiting.
152
+ - **`true`** — re-enqueue, linear backoff, `onFatal` after `MAX_BATCH_RETRIES`. Each
153
+ failed attempt announces itself (`stage: "retrying"`) and the exit announces itself
154
+ (`stage: "fatal"`); the cooldown below thins the retrying ones to one per window.
155
+ Announcing early is deliberate: a harness surfaces a retryable failure only after
156
+ its own internal retries are spent, so the channel has already been waiting minutes,
157
+ and the streak usually ends in a `stop`, a reconnect or a container SIGTERM rather
158
+ than in the fatal notice.
159
+
160
+ A notice's `NoticeStage` (`src/errors/format.ts`) says which of those moments it
161
+ describes — `retrying` (batch still queued, so ask for patience), `dropped` (batch
162
+ gone, so ask for a re-send), `fatal` (the daemon is exiting). Only `fatal` reaches
163
+ the wire, as `TurnErrorInfo.fatal`; the other two differ only in what the sentence
164
+ asks of the reader.
154
165
 
155
166
  It means "does the dispatcher retry this automatically", not "could a retry ever
156
167
  succeed": `usage_limit` is `false` because the notice carries the reset time and the