On this page
Reference

Runtime limits

Every runnable Program has a finite ceiling for each quantity that matters. A ceiling is never a request for the first N items: exceeding it fails the protected work with an error, and nothing is truncated or returned as if it were complete. Which forms run today in each environment is on Implementation status.

Where a limit comes from

SourceExample
Program proofA LIMIT 10 or a proven unique key bounds the rows that follow.
Author guardMAX_OUTPUT_ROWS n on a join, MAX ITEMS n on INFER, a guard bound from --params.
Connector contractA source's page size and maximum rows; an Effect's maximum items per request.
Language lawFixed ceilings such as the decimal precision of 38.
Host policyCapacity limits the operator configures for the Host.

The effective limit is the smallest applicable candidate. An author guard that is stricter than everything else is binding; otherwise it is kept and reported as currently non-binding. The plan (actql explain --json) shows every resolved limit with its source.

Default ceilings

QuantityDefaultSet by
Rows in a local VALUES Program100 (configurable up to 10,000)Host installation (valuesMaxRows, an installation option where the SDK creates the Host)
Rows read from a source per RunConnector contractConnector
Bytes read per Run and total workHost capacity policy (512 MiB in the default Local profile)Host
Model calls per INFERRow count, capped by MAX ITEMS when set; no call is made if the count would exceed the limitProgram and Connector
Model retriesTransient failures only, within a fixed boundLanguage law
Rows produced by a joinMAX_OUTPUT_ROWS when set, otherwise Host capacity policyProgram and Host
Effect items per SetConnector contractConnector
Result read response1 MiB per read by default, 16 MiB maximumClient option
Query textA fixed decoded size and token budgetLanguage law

Author guards

A guard is a positive integer the author adds to a Program, as a literal or a parameter: JOIN … MAX_OUTPUT_ROWS 1000, INFER … MAX ITEMS 500, and the per-operation guards listed in the language specification. Guards are kept even when a proof or a ceiling is tighter, so a reviewer can see the author's intent.

What a limit does not do

  • It does not select rows. LIMIT selects; a guard only fails.
  • It does not change meaning when the Host changes; only whether the Program may run.
  • It does not promise that an external system answers. Finite work can still wait for a reply, and an unknown outcome is reconciled, not timed out into failure.

See Execution model and guarantees for the guarantee these limits implement.

Source: actql/actql/docs/reference/limits.md at d904416674e4 · Edit on GitHub