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).