Dispatch a task contract to a role for execution.

Usage:
- `task_id` must be a task created in the current run.
- `role_id` selects the executing role. The first dispatch binds that role to the task.
- `prompt` carries the coordinator's execution instruction for this dispatch attempt.
- Re-dispatching a completed task requires a non-empty `prompt`.