dispatch: run resolve unconditionally so a skipped resolve can't block the run #13
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!13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/dispatch-resolve-always-run"
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?
Problem
On any non-labeled event that reaches
dispatch(a scheduletick, a merged-PRreflect, an issue comment, …), theresolvejob is skipped by itsif:. But forgejo-runner (now v12.10.1, so reusable workflows finally evaluate) eagerly evaluates the route jobs'with: needs.resolve.outputs.*while building the job graph — before applying each job'sif:. A skippedresolveexposes no outputs, so the runner aborts the whole run:Every job shows 0s — including
tick, which should have run.reflect's${{ … || 'opus' }}fallback can't save it, because the block happens before the expression is evaluated (proven:reflecthasif: always()+ the||and was still blocked).This is why the every-15-min schedule ticks (and merged-PR reflects) all fail.
Fix
resolvenow runs unconditionally (if: ${{ always() }}) so its declaredmodel/base_urloutputs always exist and the route jobs'with:is always evaluable. For non-command events the step early-exits with empty outputs (before any label API lookup), so:plan,implement,dev-bounce,test,coordinate) still skip via their ownif:;reflect's merged-PR path gets an empty model → its|| 'opus'fallback applies exactly as before;agent/plan,plan/approved,agent/dev,agent/test,agent/coordinate,agent/reflect) resolve the tier→model matrix unchanged.Only
.forgejo/workflows/dispatch.yamlchanges (+22/-3).Validation to run after merge/preview
workflow_dispatchon a repo whose caller subscribes → run completes,tickexecutes, no "blocked execution" banner.agent/plan→resolveruns andplanfires with the correct--model.🤖 Generated with Claude Code