> ## Documentation Index
> Fetch the complete documentation index at: https://docs.accelmars.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Understanding timeouts

> Connection, provider progress and caller delivery need different clocks.

A timeout is meaningful only when it says what was being timed. Waiting for a connection, waiting for model progress and waiting for a caller to read output are different situations.

Gateway's accepted streaming policy has seven fields. They form one coordinated policy; they are not seven independent opportunities to restart the call.

## Getting started

**Connect** bounds the attempt's connection phase. **First activity** bounds the wait for the provider's initial started event. Both begin at attempt dispatch and do not renew themselves with arbitrary traffic.

These controls answer whether the provider interaction has begun as expected. They do not prove that a completed answer exists.

## Watching provider activity

**Transport idle** watches valid canonical provider events after the started event. **Generation idle** watches actual generation progress: reasoning-size progress, text, refusal, tool arguments or qualifying growth in reported output usage.

Malformed input resets neither clock. A well-framed unknown event may be transport activity without being useful generation progress.

During caller-induced backpressure, the applicable idle clocks pause. Otherwise Gateway could mistake its own decision to stop reading for a provider stall.

## Bounding the whole generation

**Generation lifetime** starts at the first provider dispatch of the logical call. It is shared by retries, provider changes and waits. It never resets or pauses.

An attempt that starts late in the call must fit the time remaining. It cannot inherit a fresh full lifetime simply because it uses another provider.

## Watching delivery and keeping the edge alive

**Downstream stall** bounds a blocked caller-facing relay. It remains relevant after the provider has completed, while output still needs to drain.

**Heartbeat interval** schedules edge liveness messages. Those messages can reassure a client that the connection is alive, but they do not reset upstream progress clocks or prove that the model is producing an answer.

## Policy values must be explicit and compatible

The baseline policy supplies all seven fields. A field is disabled or has a positive duration where allowed. An omitted purpose override inherits the baseline; an explicit null is not the same thing as inheritance.

Enabled clocks must respect the generation lifetime, and heartbeat cadence must fit the applicable idle controls. Incremental delivery cannot disable the downstream-stall bound. The source also requires the relevant measured basis for activating idle controls.

This guide introduces no universal timeout values. The selected profile supplies them, and the runtime must validate the relationships rather than quietly repair invalid settings.

## What a timeout does not prove

A provider timeout does not establish zero remote work. A delivery timeout does not prove that the provider failed. A database observation timeout does not prove rollback.

The local streaming implementation recorded at the evidence cut had six clock fields in its particular structure rather than the full accepted seven-field policy, and protected database waits remained an open concern. That is an implementation limitation, not a change to the design.

See [Attempts and retries](/public/gateway/reliability/attempts-and-retries) before deciding what happens next, and [Implementation status](/public/gateway/design/implementation-status) for the evidence boundary.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.