setup
/setup
Interactive onboarding. The deterministic parts (detection, pin verification, marker) run in the Go binary (
evolve setup detect|complete); the judgment parts (recommend models, explain the pipeline) run HERE, in your session — zero extra API cost. You PROPOSE per-phase pins; the kernel CLAMP (envelope + allowed_clis) is enforced two ways:evolve setup detectreports any pin that breaches the floor aspin_violation, and dispatch hard-fails an out-of-bounds pin at cycle time. Step 9 removed the oldllm_config.jsonlayer — the durable per-phase override is now.evolve/policy.jsonpins. See docs/architecture/setup-onboarding.md and the deterministic core in go/internal/setup/setup.go.
When to use
- The loop printed
[setup] First run …, or the user typed/setup, or asked to configure models / learn the pipeline. - Re-running is always safe — it re-detects and rewrites
.evolve/policy.jsonpins.
Binary
Call evolve if on PATH; otherwise ./go/bin/evolve (or $EVOLVE_GO_BIN). All commands below are read-only except complete (stamps the marker) and your Write of .evolve/policy.json.
Procedure
-
Detect. Run
evolve setup detect --jsonand parse it. The digest hasclis[](per family:binary_present,auth_mode,subscription_type,capability_tier,verdict, andtier_models{fast,balanced,deep} → that CLI's NATIVE model) andphases[](per role:current_cli,current_tier,source—profileorpolicy-pin,envelope{min,default,max},cross_family_with,allowed_clis, andpin_violationwhen a pin breaches the floor). A malformed.evolve/policy.jsonshows up as a top-levelpolicy_error. -
Present the detection as a compact table — one row per CLI family with binary/auth/tier/verdict.
- Caveat (state, don't hide): on macOS,
claudemay reportMISCONFIGURED/blockedeven when authed, because detection only checks~/.claude/.credentials.jsonand misses Keychain-stored OAuth. If the user is clearly running in a Claude session, treat claude as available and say so.
- Caveat (state, don't hide): on macOS,