BUDGET_EXCEEDED
A per-request complexity budget was exceeded before any solving started. HTTP 413. Split the ruleset or the claim dictionary.
The request is larger than one call may be. It was refused before any solver work started, so an oversized ruleset costs a structured 413 rather than a tied-up worker.
The envelope
{"ok": false,
"error": {"code": "BUDGET_EXCEEDED",
"message": "source_bytes budget exceeded: limit 65536, submitted 91204",
"docs": "https://docs.agents.jaxon.ai/errors/budget-exceeded.md",
"budget": "source_bytes", "limit": 65536, "actual": 91204},
"versions": {"...": "..."}}
budget names which limit — source size, declaration count, assertion count, claim count, or nesting depth — and limit and actual say by how much.
The fix
- Split the policy. One ruleset per policy area compiles, reviews and approves more cleanly than one ruleset for everything. A person signing off on forty assertions is signing off on nothing.
- Remove what the check does not need. Prose belongs in
@askand@contextannotations, briefly; the ruleset is not the place for the policy's preamble. - Trim the claim dictionary to the declared claims. Extra keys are refused by validation anyway.
The budgets are not client-tunable. If a legitimately sized ruleset trips one, that is a finding worth reporting to Jaxon rather than working around.
See also: Error codes.