Skip to content

FailClosedCause

FailClosedCause = "no-model" | "timeout" | "unparseable" | "threw"

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/core/shell/rater.ts:213

EXT-66 — why the gate failed closed. Every one of these is a fact about the GATE, not about the command, which is the whole point of naming them: FAIL_CLOSED_VERDICT collapsed four different gate failures into one verdict that reads, downstream and in every eval report, exactly like a model that looked at the command and judged it destructive.

That is not hypothetical. The EXT-62 anchoring sweep read its first gemma4:12b column as full coverage of the interpreter-wrapper misses; 3 of those escalations were the gate defaulting after 30 seconds, not the model judging, and only the reason string distinguished them.

The outcome stays destructive for all four — failing closed is right and stays right, and a failure to assess must not manufacture catastrophic/attack any more than it may manufacture an approval. What changes is that the reason now says which failure happened, which is what lets a caller tell the gate defaulting from the model judging (isFailClosed).