# Run Your First Workflow
{{< tier level="sovereign" note="Deliver Task coordinates implementation, independent review, bounded corrections, and verification in one run." >}}

## What you will run

The included **Deliver Task** workflow takes one prepared task through implementation and review:

{{< thumbcard src="/images/ui/workflows/deliver-task-workflow.svg" fit="contain" alt="Deliver Task workflow from prepared staffing through implementation, independent review, bounded correction, and verification" caption="The workflow reuses staffing decisions and repeats implementation only when reviewers request changes." >}}

## Before you start

Prepare:

- The compatible Valdr core pack, followed by the official **Valdr Workflow pack**, imported through [Settings > Valdr Packs](/valdr/docs/getting-started/configure/#import-via-the-ui). The [compatibility table](/valdr/docs/getting-started/configure/#compatible-releases) lists the exact versions and filenames.
- A ready task in a registered Git-backed project, with an [assignee](/valdr/docs/ui/tasks/sidebar/#assignee).
- An [existing review](/valdr/docs/ui/tasks/task-detail/#requesting-a-review) with every intended reviewer assigned.
- An enabled [router launcher preset](/valdr/docs/getting-started/configure/#create-an-agent-preset).
- Enabled repository-capable launcher presets that the router can select for the assigned executor and every assigned reviewer. These presets must support linked worktree execution for the registered Git project.

The delivery workflow uses those staffing decisions; it does not silently choose replacements when they are missing.

## 1. Start the saved workflow

Open **Workflows**, find **Deliver Task**, and note the imported version shown in its catalog entry. You can also discover the newest active version through `pm_workflow`:

```text
pm_workflow {
  action: "list",
  workflowKey: "valdr-workflow.task.deliver",
  latestOnly: true
}
```

Then run the call below from an [MCP client connected to Valdr](/valdr/docs/getting-started/install/#configure-your-mcp-host):

```text
pm_workflow {
  action: "start",
  workflowKey: "valdr-workflow.task.deliver",
  version: "<catalog-version>",
  taskKey: "NOVA-42",
  actorHandle: "your-operator-handle",
  inputs: {
    taskKey: "NOVA-42",
    routerLauncherConfigKey: "your-router-preset"
  },
  clientRequestId: "deliver-task:NOVA-42:1"
}
```

Replace the task, registered actor handle, preset, and catalog version with your own values. If `actorHandle` is omitted and a step needs an actor, Valdr uses the registered `pm` agent. You can also ask Verdandi to start the workflow with these values after the Valdr Orchestrator skill is installed.

## 2. Open the run in Valdr UI

Open **Workflows > Runs** and select the new run. The task's **Workflows** tab also shows runs already scoped to that task; it is an inspection view, not a launch control.

## 3. Follow implementation

The workflow reads the existing executor and reviewer assignments and asks the router to choose from the current launcher presets. If no preset is selected, the run blocks for correction. Otherwise, it launches the executor and waits for that session to finish. Open the linked session when you want to inspect the implementation work before review begins.

## 4. Follow review and correction

Each assigned reviewer evaluates the implementation. The workflow then routes the combined result:

| Outcome | What happens |
| --- | --- |
| `review_approved` | The task advances to verification |
| `review_changes_requested` | Work returns to implementation, then review runs again |

The workflow limits correction passes. Reaching the limit blocks the run instead of claiming success.

## 5. Inspect results

Select the parent run, open **Inputs / Outputs**, and review **Run results** to confirm the task, selected executor, primary reviewer, chosen preset, review outcome, linked implementation session, and reviewed Git receipt. Then inspect each review step and its accepted evidence for the full staffed reviewer set. A successful **Deliver Task** run leaves the task `verified`; it does not commit the work or mark the task done. Use **Deliver And Close Out Task** when the workflow should also commit the approved delivery and finish the task.

## 6. Recover when needed

- Use **Retry step** when Valdr offers it for the selected attempt.
- Use **Run again** to create a separate run with the same workflow versions.
- Use **Cancel run** to stop workflow orchestration. See [cancellation scope](/valdr/docs/workflows/reliability-and-recovery/#cancellation) before stopping a run.
- Use **Delete run** only after the root and every child are blocked, failed, completed, or cancelled. It permanently removes the run tree and, by default, linked session records, events, transcripts, and session-owned worktrees. Select **Keep linked sessions** to preserve them.

## Next step

Read [How Workflows Run](/valdr/docs/workflows/how-workflows-run/) for the workflow lifecycle and recovery model.

