The Agent Core's job is a policy decision, not a sentence
At every step it picks one of four moves: call a tool, load a skill, ask the user, or return a final answer. Each of those has an outcome the runtime can check — so the training signal doesn't need a human in the loop.
Same RL loop, a different place the reward comes from
Both feed a scalar reward into the same GRPO update. What changes is who — or what — produces that scalar.
Correct action type
The coarsest check: did the model reach for the right kind of move at all, before anyone looks at which tool or what arguments.
Correct tool or skill selection
Given the action type is a tool call, did it pick the right one out of 19 tools and 22 skills?
Valid tool arguments
The right tool with the wrong arguments still fails the task — so arguments get their own check, run before the tool ever executes.
Successful execution of the selected action
Right tool, valid arguments — did it actually work when the sandbox ran it? This check is independent of whether the earlier choices were right.
Appropriate stopping behavior
Two failure modes in opposite directions: stopping before the task is actually done, and continuing to call tools once it already is. Both are trace bookkeeping, not judgment.
Overall task completion
The composite check: does the full trajectory actually finish what the user asked for — the metric that matters most, built from the same boolean facts as the other five.
Six deterministic checks, one scalar reward
GRPO needs a single reward per completion. Each verifiable dimension above contributes its own term; nothing here waits on a human or a preference model.