Recursive inference
When the evidence is larger than the model window, Autolith treats it as an environment instead of a prompt: bounded inference frames read selected slices, and only their conclusions come back.
Three operations
- infer
- One bounded frame over explicit read-only views, for one judgment you would otherwise have to drag bulky evidence into the conversation for.
- map
- The same question applied to many resources as concurrent frames sharing one budget. Results keep task order; a failed frame reports its error in place.
- complete
- A root run over one large external context. The root drives a dedicated Lisp environment that slices the context, fans sub-inferences over the pieces, and records the final value.
Frames are isolated
A frame never inherits this conversation, your identity, or unrestricted tools. The task is the governing instruction. Views, resource observations, and nested inference results are untrusted data, not instructions. A frame with read capability can use the workspace search and resource tools and nest further frames, but nothing else.
Views, contracts, budgets
Views are literal text, a resource URI, or a stored context object
(context: plus a content hash). Pass the smallest
complete evidence set that answers the task. When the result feeds
further code, give the frame a JSON Schema contract and it returns
exactly one conforming value. Every frame runs under an explicit
allowance for provider calls, tokens, and recursion depth; the
defaults cover most fan-outs, and budget exhaustion is reported
per frame instead of silently truncating.
Provenance
Every frame and root run persists a private trace. The conversation receives the value and the trace identifier, and the trace can be read back later to audit what evidence produced the answer.