WealthVille
Allocation logic·June 2026

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

1

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.

2

Free-text keyword matching is not a safety-gate predicate. Classify actions by their source and type, never by their prose.

3

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.

Explore more on WealthVille

Latest insights

Research, Recaps & Solana Alpha

Data-driven yield analysis and weekly market wraps — written for active LPs.

All insights