example · workflows/resolve/
Takes a WorkItem and drives it to done: decide the goal, implement it, review the PR, then ship.
4 steps in workflows/resolve/, run in order along the after-chain
---
on: WorkItem
agent: Investigator
output:
goal: str
---
Decide the goal for "{{ event.proposed_goal }}" given the work item at {{ event.link }}.---
after: arbitrate
agent: Fixer
output:
pr_url: url
summary: str
---
Implement the goal: {{ arbitrate.goal }}. Open a PR and summarize the change.---
after: fix
agent: Reviewer
output:
verdict: enum[pass, fail]
---
Review {{ fix.pr_url }}: {{ fix.summary }}. Return a pass/fail verdict.---
after: review
agent: Releaser
emits: GoalShipped
---
If {{ review.verdict }} is pass, merge the PR and ship the change.No sensor. resolve is triggered by the WorkItem event that triage and upkeep emit onto the bus.
The agents and events this workflow refers to by name, from registry.yml.
defaults:
agent:
sandbox: default
harness: { runtime: claude-code, model: claude-sonnet-4-6 }
sandboxes:
default:
provider: daytona
image: { debian_slim: "3.12", apt: [git], workdir: /home/daytona, user: daytona }
network: [github.com]
agents:
Investigator: { skills: [code-review] }
Fixer: { harness: { model: claude-opus-4-8 }, tools: [open_pr], skills: [testing] }
Reviewer: { tools: [run_evals], skills: [code-review] }
Releaser: { tools: [merge_pr, set_flags] }
events:
WorkItem:
fields:
source: enum[sentry, linear, datadog, pagerduty, slack, cve]
link: url
root_cause: str
proposed_goal: str
repro: str
GoalShipped:
fields: { goal_id: id }