recommendPlan math runs as a final fallback.
What happens
- CLI sends a
flow_startenvelope to Scout. - Scout reads the position + pool tick state, loads vol / gas /
yield, classifies the regime (
ranging/trending/volatile/stressed), and forwardscontext_observedto Strategist. - Strategist proposes 2-5 candidate ranges as
(widthMultiplier, centerOffsetTicks)tuples (snapped totickSpacing), each with stress + yield numbers. Forwardsproposalto Critic. - Critic runs deterministic stress (1×, 2×, 3× vol), gas/yield
ratios, and judges each candidate
accept|revise|vetoagainst the user’s risk profile.- On
accept: emitsplan_readyto the CLI, flow ends. - On
revise: forwardscritiqueback to Strategist for round 2. - On
veto_allpastZUNO_MAX_DEBATE_ROUNDS: emitsdeadlockto Arbiter.
- On
- Arbiter (on deadlock) reads the full debate, picks one candidate
from the latest proposal, and emits
plan_readyto the CLI. - CLI prints the result and writes
~/.zuno/plans/<planId>.jsonwith the transcript baked intorisk.reasons.
agent_thought envelopes throughout, rendering each
turn live under the recommendation card:
Example output
Risk profile
SetZUNO_RISK_PROFILE to bias the Critic’s floors and the Arbiter’s
tiebreak:
Confidence labels
Replaying the debate
risk.reasons, which includes every [scout] / [strategist]
/ [critic] / [arbiter] line from the original flow. The transcript
is persisted with the plan so you can read the reasoning later.