CatalogTruncatedEvent
@forge/monorepo / backend/src / CatalogTruncatedEvent
Type Alias: CatalogTruncatedEvent
CatalogTruncatedEvent =
EventBase<"catalog.truncated"> &object
Defined in: backend/src/core/events.ts:189
A catalogue did not fit its budget, and what was left out — REQ-045 (#204), task #210, AC-3 and AC-5.
This event is the guarantee. A truncated tool list is invisible from inside a run: the model is not told a tool was withheld, so it never calls it, and the transcript reads exactly like a run where the model chose not to. Every other failure at least looks like a failure; this one looks like a decision. So the names go in the log, in full, and #210's AC-7 is a test that deleting this event fails the build.
Names, not a count. "14 tools were dropped" tells a reader that something happened and nothing about whether
it mattered; github_merge_pull_request tells them immediately.
Type Declaration
budgetTokens
readonlybudgetTokens:number
catalog
readonlycatalog:"tools"|"skills"
Which catalogue. One event rather than two, because the fact is the same fact and a reader asking "what was withheld from this turn" should not have to know there are two mechanisms.
dropped
readonlydropped: readonlystring[]
Every dropped tool, by name.
findable
readonlyfindable:boolean
Whether the model can still get to what was dropped.
find_tools makes a truncated tool catalogue a deferral; without it the same event describes a permanent
removal, and a reader cannot tell which from the names alone. There is no find_skills, so a truncated
skill catalogue is always false today — which is a fact worth having in the log rather than a field to
leave off.
overBudget?
readonlyoptionaloverBudget?:boolean
Set when the protected set alone exceeds the budget — a misconfiguration, not the mechanism working.
A deployment in this state believes it capped its context and has not.
residentTokens
readonlyresidentTokens:number