Idea

Budgets and refusals

Spend, memory and admission are first-class controls, and the system says no with a number instead of degrading

Control principleFour systemsDollars · pages · memory · tokens
A limit set by a person · checked at the door
2,048clients in one burst, no corrupted answer

Every resource an agent or a kernel can consume has a stated limit in my systems, and crossing it produces a typed refusal with a reason attached. Dollars per day, device pages per context, key-value memory per request, concurrent sequences per engine, tokens per step. The alternative, letting the system find its own limit by thrashing, stalling or running out of memory mid-step, hides the failure where it is most expensive to find.

The shape

The limit is explicit and set by a human: a whole number of gibibytes, a dollar figure, a count. Admission checks the limit before load is taken on. Budgets sit in paths an agent cannot reach from inside the work; an agent that wants more asks a human. Reclamation, when it happens, is ordered and counted so a wait can be explained afterwards.

Where the failure lands With a stated limit
✕refused at the door
Left to find its own limit
!

fails after the cost is paid

What a refusal carries
A typed reason
how much was needed
how much was available
whether a retry can help

Where it appears

In FAFO Core and Function Forge, the daily budget gates GPU provisioning on local, LAN and cloud hardware, with per-second spend accounting, and it is set by a human on a path agents do not have.

In ActiveKV, a host-pool geometry that does not fit stops at startup and names the setting to change: Staging without a stall.

In the Capabilities model, a sequence never runs out of cache mid-answer, even in a burst of clients: A router beside a production model.

In AgentOS, cost is a field on every task: What the work cost, to the penny.

Load already admitted, against the limit a person set
FAFO Coredollars a day

Fail closed: no budget set means no spend.

ActiveKVdevice pages, whole gibibytes

Set by hand, never automatic. Each context has a floor, a target and a burst; the least recently active is reclaimed first, then the pool refuses.

Capabilities modelcache pages per answer

Pages for the whole answer are reserved at admission, or the request is refused with a typed reason.

AgentOSspend per work order

The ceiling is part of the contract; exhausting it stops the work.

What it buys and what it costs

It buys predictability: a system that refuses at the door never surprises you at the bottom of a run. It buys explainable waits and auditable spend. It buys the confidence to let agents provision real hardware.

It costs capacity left on the table at the margin, because a budget set by a human is conservative, and it costs the occasional refusal of work that would have fit. I take that trade every time the silent alternative is spend, data loss or a corrupted answer.

The judgment in it

Fail closed where the silent alternative is money, loss or a false result; degrade gracefully where the alternative is merely lower quality.

A reranker that saturates under load is fine. A GPU that runs out of memory halfway through a token is not.