The death spiral that idled a vault: when the denominator lies
≈ 83%
Vault idle at worst
"57.7% over-allocated"
False signal
2 compounding
Root causes
TL;DR
The AI advisory layer kept recommending divestment of perfectly good pools as "over-allocated", because allocation share was computed against deployed capital rather than total vault value. Draining a position grew the idle pile, which made every remaining position look even more over-allocated — a positive feedback loop that ended with the vault almost entirely in cash. A guard existed, but the AI's boilerplate use of the word "risk" matched the guard's emergency-exit exemption and bypassed it.
What happened
In mid-June 2026 a live vault sat roughly 83% idle — about $585 in un-deployed SOL and USDC against only ~$30 of actual positions — and refused to redeploy for days. Idle capital in an automated yield vault is a silent failure: nothing crashes, nothing alerts, returns just quietly stop.
Digging into the decision logs, the AI advisory layer had recommended divesting the vault's good pools, with reasons like "over-allocated at 57.7% of the portfolio". That number was technically true and completely misleading: allocation share was computed on a deployed-capital basis. With most of the vault idle, a tiny $30 position really was 57% of the (tiny) deployed base.
The feedback loop is obvious in hindsight: divest a "over-allocated" pool → idle grows → the deployed base shrinks → every remaining position is now a larger share of it → more divest recommendations. The stable end-state of that loop is a vault holding nothing but cash.
The guard that should have caught it — and why it did not
We already had two guards designed to stop exactly this: a flip-flop guard (no re-trading the same pool back and forth) and an under-deployment guard (no discretionary divests while the vault is mostly idle).
Both had an exemption for forced, capital-protection exits — identified by matching the action's reason text for markers like EXIT, verdict, emergency, or the word "risk". The AI's recommendation boilerplate reliably included phrases like "to mitigate risk exposure". Every discretionary AI divest matched the exemption and sailed past both guards as if it were an emergency exit.
The fix
- Classification over keyword matching. AI-recommended divests are now explicitly classified as discretionary, whatever their prose says. Only the engine's own EXIT verdicts and non-AI emergency paths count as forced.
- Filter before conflict resolution, not after. A discretionary divest used to out-rank the re-deploy action for the same pool during plan deduplication — so even a blocked divest suppressed the invest that would have fixed the idle problem. Discretionary divests are now dropped before dedup whenever the vault is more than 40% idle, letting the redeploy survive.
- Fix the denominator at the source. Allocation shares fed to both the rule engine and the AI are computed against total vault value, so a growing idle pile no longer inflates every position's apparent share.
What we took away
Every percentage has a denominator, and the denominator is a design decision. Deployed-basis shares are self-referential and feedback-prone; total-NAV shares are not.
Free-text keyword matching is not a safety-gate predicate. Classify actions by their source and type, never by their prose.
Idle capital is a failure mode that pages nobody. Instrument it like an error, not like a balance.
This case study describes an engineering incident on a small live test vault, published for transparency and education. It is not financial advice. See all case studies or the live signal track record.




