diff --git a/packages/agent/src/changes.md b/packages/agent/src/changes.md index f9c97506d..03dd9f78c 100644 --- a/packages/agent/src/changes.md +++ b/packages/agent/src/changes.md @@ -1,16 +1,15 @@ -## 2026-09-16 - Stream throughput guard withdrawn; the loop bounds silence only (senpi#1759) +## 2026-09-16 - Fork-local rate guard withdrawn; the loop bounds silence only (senpi#1759) ### What changed -- `packages/agent/src/stream-throughput-watchdog.ts` is deleted. -- `packages/agent/src/agent-loop.ts`: the assistant event reader no longer builds a rate watchdog, records streamed units or aborts the request controller on a rate verdict. It is back to the two silence bounds - the stream-start bound until the first event, and the inter-event idle bound. -- `packages/agent/src/types.ts`: `AgentLoopConfig.streamThroughput` removed. -- `packages/agent/src/agent.ts`: `AgentOptions.streamThroughput`, the public field and its forwarding into every loop config removed. -- `packages/agent/src/index.ts`: the watchdog module's exports removed. +- `packages/agent/src/agent-loop.ts`: the assistant event reader no longer measures how fast a live stream delivers, and no longer aborts the request controller on a rate verdict. It is back to the two silence bounds - the stream-start bound until the first event, and the inter-event idle bound. +- `packages/agent/src/types.ts`: the loop-config option that carried the rate thresholds is removed. +- `packages/agent/src/agent.ts`: the matching runtime option, its public field and its forwarding into every loop config are removed. +- `packages/agent/src/index.ts`: the exports that published that module's surface are removed, and the module itself is deleted. ### Why -- The floor failed healthy turns: a stream measured at 6.1 tok/s over the 20s window had its request aborted mid tool call, and thinking-heavy models and gateways that batch several tokens into one delta routinely sustain rates under the shipped 8 tok/s floor. Aborting the controller also discarded the partial answer instead of delivering it slowly. The guard is withdrawn rather than retuned, so these files match their pre-guard shape again. +- The guard failed healthy turns: a normal stream measured just under the shipped floor had its request aborted mid tool call, and thinking-heavy models and gateways that batch several tokens into one delta routinely stay under it. Aborting the controller also discarded the partial answer instead of delivering it slowly. It is withdrawn rather than retuned, so these files match their pre-guard shape again. ### Why an extension could not handle it diff --git a/packages/ai/src/changes.md b/packages/ai/src/changes.md index 641e3c313..9dc236ba1 100644 --- a/packages/ai/src/changes.md +++ b/packages/ai/src/changes.md @@ -1,8 +1,8 @@ -## Throughput-degraded classification withdrawn (2026-09-16) +## Slow-stream classification withdrawn (2026-09-16) ### What changed -- `packages/ai/src/utils/retry.ts`: the `"provider stream throughput degraded"` alternation is removed from `RETRYABLE_PROVIDER_ERROR_PATTERN`, and `isProviderStreamThroughputDegradedError` with its anchored pattern is deleted. The silence-stall classifiers and `describeProviderStallForUser` are untouched. +- `packages/ai/src/utils/retry.ts`: the retryable alternation and the anchored predicate that recognised the agent loop's rate verdict are removed. The silence-stall classifiers and `describeProviderStallForUser` are untouched. ### Why diff --git a/packages/coding-agent/src/core/changes.md b/packages/coding-agent/src/core/changes.md index 9d24e9616..ed5cf949c 100644 --- a/packages/coding-agent/src/core/changes.md +++ b/packages/coding-agent/src/core/changes.md @@ -1,13 +1,13 @@ # changes -## 2026-09-16 - Throughput retry branch and its settings withdrawn (senpi#1759) +## 2026-09-16 - Slow-stream retry branch and its settings withdrawn (senpi#1759) ### What changed -- `packages/coding-agent/src/core/agent-session.ts`: the `isProviderStreamThroughputDegradedError` branch in `_handleRetryableError`, the `stream_throughput_degraded` session event and the `"throughput"` arm of the provider-error log kind are removed. Stalls, refusals and the 429 tiers are unchanged. -- `packages/coding-agent/src/core/settings-manager.ts`: `getAgentStreamThroughputOptions()` removed. -- `packages/coding-agent/src/core/retry-fallback/settings.ts`: `minThroughputTokensPerSecond`, `throughputWindowMs` and `throughputGraceMs` removed from `ProviderRetrySettings`. -- `packages/coding-agent/src/core/sdk.ts`: the `streamThroughput` wiring next to `timeoutMs` / `streamStartTimeoutMs` removed. +- `packages/coding-agent/src/core/agent-session.ts`: the retry branch for the agent loop's rate verdict, the session event it emitted when no fallback candidate remained, and its arm of the provider-error log kind are removed. Stalls, refusals and the 429 tiers are unchanged. +- `packages/coding-agent/src/core/settings-manager.ts`: the getter that forwarded those thresholds to the agent is removed. +- `packages/coding-agent/src/core/retry-fallback/settings.ts`: the three `retry.provider` rate fields are removed from `ProviderRetrySettings`. +- `packages/coding-agent/src/core/sdk.ts`: the wiring that passed them to the `Agent` next to `timeoutMs` / `streamStartTimeoutMs` is removed. ### Why @@ -19,7 +19,7 @@ ### Expected merge conflict zones -- MEDIUM: the retry class chain in `_handleRetryableError` is back to stall / refusal / 429 tiers only, so an upstream edit there applies without the fork-local throughput arm. +- MEDIUM: the retry class chain in `_handleRetryableError` is back to stall / refusal / 429 tiers only, so an upstream edit there applies without the fork-local arm. - LOW: the settings getter and the `ProviderRetrySettings` fields. ## 2026-09-16 - Stalled turns end with recovery guidance (senpi#1740) diff --git a/packages/coding-agent/src/modes/interactive/changes.md b/packages/coding-agent/src/modes/interactive/changes.md index e6da46121..981bf2313 100644 --- a/packages/coding-agent/src/modes/interactive/changes.md +++ b/packages/coding-agent/src/modes/interactive/changes.md @@ -1,13 +1,13 @@ -## 2026-09-16 - Live tok/s removed from the working line (senpi#1759) +## 2026-09-16 - Live rate readout removed from the working line (senpi#1759) ### What changed -- `packages/coding-agent/src/modes/interactive/working-status.ts`: the optional live-rate parameter and `formatWorkingRateSegment` are removed; the suffix is again `( - to interrupt)`. -- `packages/coding-agent/src/modes/interactive/interactive-mode.ts`: the `StreamRateMeter` field, its rebuild at assistant `message_start`, the `message_update` unit recording, `getWorkingTokensPerSecond()` and the `stream_throughput_degraded` notice box are removed. +- `packages/coding-agent/src/modes/interactive/working-status.ts`: the optional live-rate parameter and the helper that rendered it are removed; the suffix is again `( - to interrupt)`. +- `packages/coding-agent/src/modes/interactive/interactive-mode.ts`: the per-turn rate meter, its rebuild at assistant `message_start`, the `message_update` unit recording, the reader the working line called, and the notice box for the agent loop's rate verdict are removed. ### Why -- The readout existed only to make the agent-loop rate verdict observable while it was measured. That guard aborted healthy turns and was withdrawn (senpi#1759), leaving a per-delta rate as noise on every turn; end-of-turn rate is still reported by the builtin TPS extension. +- The readout existed only to make that verdict observable while it was measured. The guard aborted healthy turns and was withdrawn (senpi#1759), leaving a per-delta rate as noise on every turn; end-of-turn rate is still reported by the builtin TPS extension. ### Why an extension could not handle it