Phase 5: tier ladder + escalation (runbook §6, §4.3) #9
No reviewers
Labels
No labels
agent
coordinate
agent
dev
agent
plan
agent
reflect
agent
test
agent
triage
ai/off
blocked
night
blocked
usage
loop
1
loop
2
loop
3
needs/approval
needs/human
needs/input
needs/review
plan/approved
run/night
state
blocked
state
building
state
passed
state
planning
state
testing
tier
fable
tier
haiku
tier
local
tier
opus
tier
sonnet
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
valssi-public/agent-workflows!9
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "phase5/tier-ladder-escalation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 5 — tier ladder + escalation
Wires the tier→model matrix and the loop escalation from the runbook (§6, §4.3).
Tier ladder (dispatch.yaml). New
resolvejob = the single edit point for the tier→model matrix. It reads the governing issue'stier/*label (for the test route, recovered from theagent/issue-Nbranch), maps it to--model, and passesmodel+ local env to the route workflows vianeeds.resolve.outputs.*. Role defaults when notier/*: plan=opus, dev/test=sonnet.ANTHROPIC_BASE_URL=$VLLM_URL+ANTHROPIC_AUTH_TOKEN=dummy, model$VLLM_MODEL; unset vars ⇒ falls back tohaikuclaude-haiku-4-5claude-sonnet-5claude-opus-4-8(top rung)claude-fable-5— human-applied only, outside the escalation ladderLocal rung plumbing (plan/dev/test.yaml). New
base-url/auth-tokeninputs; each workflow pointsANTHROPIC_*at the vLLM endpoint and dropsCLAUDE_CODE_OAUTH_TOKENjust before invokingclaudewhenbase-urlis set.Escalation (lib/preflight). Replaces the interim
loop/3→park. On a dev run whose issue carriesloop/3: read the tier (absent ⇒ dev defaultsonnet), bump one runglocal→haiku→sonnet→opus, swap the tier label, resetloop/3→loop/1, and re-applyagent/dev(remove+re-add so the label event re-fires and dispatch re-resolves the new tier). That run stops (proceed=false); the re-fired run executes on the new model. Attier/opus(or a non-ladder tier like a human-settier/fable): park toneeds/humanwith an attempt summary.Attempt backstop.
max-attempts-24hdefault raised 6→12 so the 24h cap does not preempt a fullsonnet→opusclimb (≈10 attempts); it remains the ultimate runaway ceiling.Requires (human, org owner): set org vars
VLLM_URL+VLLM_MODELbeforetier/localcan be used; until then it falls back tohaiku.Validated:
js-yamlon all files +bash -non every run block.🤖 Generated with Claude Code
Updated per review: local rung now routes through the LiteLLM gateway (org vars
LITELLM_URL+LITELLM_MODEL, secretLITELLM_KEY; unset ⇒ falls back tohaiku, keyless ⇒dummy), not vLLM.tier/fableis now excluded from all automation —resolvefalls back tosonnetand never invokesclaude-fable-5. Re-validated: js-yaml + bash -n clean.