---
title: "@henryqw/pi-orchestrator"
seo:
  description: "Run durable checked implementation task graphs for Pi."
---

<div class="not-prose my-6 flex flex-wrap items-center gap-3"><a href="https://www.npmjs.com/package/@henryqw/pi-orchestrator" aria-label="View @henryqw/pi-orchestrator version v0.1.0 on npm"><img alt="Version v0.1.0" height="20" src="https://img.shields.io/static/v1?cacheSeconds=7200&amp;color=1d4ed8&amp;label=version&amp;labelColor=6a7282&amp;style=flat-square&amp;message=v0.1.0" width="96"></a><div class="ml-auto flex flex-wrap items-center justify-end gap-3"><a href="https://www.npmjs.com/package/@henryqw/pi-orchestrator" aria-label="View @henryqw/pi-orchestrator on npm"><img alt="Monthly npm downloads" height="20" src="https://img.shields.io/npm/dm/%40henryqw%2Fpi-orchestrator?cacheSeconds=7200&amp;color=1d4ed8&amp;label=downloads&amp;labelColor=6a7282&amp;style=flat-square" width="144"></a><a href="https://github.com/HenryQW/pi-harness/blob/main/extensions/pi-orchestrator/LICENSE" aria-label="View the MIT license for @henryqw/pi-orchestrator"><img alt="MIT license" height="20" src="https://img.shields.io/npm/l/%40henryqw%2Fpi-orchestrator?cacheSeconds=7200&amp;color=1d4ed8&amp;label=license&amp;labelColor=6a7282&amp;style=flat-square" width="78"></a></div></div>

Run durable, checked local implementation graphs from Pi Main. Independent tasks run in parallel. Dependencies run in later waves.

This package is the sole owner of that checked protocol. `delegate_task` remains lightweight generic delegation.

## Install

Settle every unfinished Auto DAG run before upgrading. Old Auto DAG state is inert. Pi Orchestrator does not read or migrate it.

The repository installer installs all selected packages first. When Pi Orchestrator was selected, it then removes only the exact `npm:@henryqw/pi-auto-dag` source if present. A missing source needs no action.

Install the Main-side packages:

```bash
pi install npm:@henryqw/pi-task-models
pi install npm:@henryqw/pi-subagent
pi install npm:@henryqw/pi-orchestrator
```

### Requirements

- Use a clean Git worktree on an attached branch with a committed `HEAD`.
- Use Herdr `0.9.0` or newer, with protocol version 22 or newer. Run `herdr --version` to verify the installed version.
- Configure Pi task-model profiles for every requested model class. Run `/task-models` to verify the profiles.
- Use `@henryqw/pi-subagent` 16 or newer for Role launch, execution, worktrees, and exact review evidence.

## Works with

| Package | Relationship | Purpose |
| --- | --- | --- |
| [`@henryqw/pi-subagent`](https://pi.henry.wang/extensions/pi-subagent) | Required | Provides Role launch, execution, worktrees, and exact review evidence. |
| [`@henryqw/pi-task-models`](https://pi.henry.wang/extensions/pi-task-models) | Required | Provides configured profiles for every requested model class. |

## Use

Call `orchestrate_execute` with a bounded request. It runs the graph through checked integration in the local repository.

| Surface | Type | Purpose |
| --- | --- | --- |
| `orchestrate_execute` | tool | Start one durable checked task graph. |
| `orchestrate_status` | tool | Read one request and report workspace drift. |
| `orchestrate_resume` | tool | Retry, verify, or finalize an unfinished request. |
| `orchestrate_abort` | tool | Stop workers and abort an unfinished request. |
| `pi-orchestrator` | skill | Guide Main to choose generic delegation or checked orchestration. |

Use `delegate_task` for lightweight generic delegation. Use `orchestrate_*` when implementation needs durable state, checks, dependencies, integration, or recovery.

### Start a request

```json
{
  "id": "repair-auth",
  "goal": "Repair sign-in and prove the release is ready.",
  "budgetMs": 1800000,
  "tasks": [
    {
      "id": "auth-runtime",
      "modelClass": "balanced",
      "requirements": "Fix the sign-in failure without changing unrelated session behavior.",
      "deliverable": "A focused committed runtime fix.",
      "dependsOn": [],
      "checks": [
        { "command": "pnpm", "args": ["test", "--filter", "auth"] }
      ]
    }
  ],
  "finalChecks": [
    { "command": "pnpm", "args": ["typecheck"] }
  ]
}
```

## Flow

The graph runs ready tasks in waves. Independent tasks run in parallel. Dependencies run in later waves.

The architecture diagram shows the guarded path from the checked request through isolated Herdr work, direct checks, optional review, and Main integration.

![Architecture showing the guarded path from a checked request through isolated Herdr work to Main integration](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTI4MCIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxMjgwIDcyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0ib3JjaGVzdHJhdGlvbi1hcmNoaXRlY3R1cmUtdGl0bGUgb3JjaGVzdHJhdGlvbi1hcmNoaXRlY3R1cmUtZGVzYyI+CiAgICAgIDx0aXRsZSBpZD0ib3JjaGVzdHJhdGlvbi1hcmNoaXRlY3R1cmUtdGl0bGUiPlBpIE9yY2hlc3RyYXRvciBjaGVja2VkIGV4ZWN1dGlvbiBhcmNoaXRlY3R1cmU8L3RpdGxlPgogICAgICA8ZGVzYyBpZD0ib3JjaGVzdHJhdGlvbi1hcmNoaXRlY3R1cmUtZGVzYyI+QXJjaGl0ZWN0dXJlIGRpYWdyYW0gc2hvd2luZyBQaSBNYWluIHJvdXRpbmcgYSBzdHJpY3QgcmVxdWVzdCB0aHJvdWdoIGR1cmFibGUgb3JjaGVzdHJhdGlvbiwgYW4gaXNvbGF0ZWQgSGVyZHIgSW1wbGVtZW50ZXIgd2l0aCB0YXNrLXNjb3BlZCB0b29scyBhbmQgc2tpbGxzLCBkaXJlY3QgY2hlY2tzLCBhbiBvcHRpb25hbCByZWFkLW9ubHkgUmV2aWV3ZXIsIGFuZCBndWFyZGVkIE1haW4gaW50ZWdyYXRpb24sIHdoaWxlIHJlY3Vyc2l2ZSBvcmNoZXN0cmF0aW9uIGFuZCB1bmNoZWNrZWQgR2l0IGJ5cGFzc2VzIHN0b3AgYXQgdHJ1c3QgYm91bmRhcmllcy48L2Rlc2M+CiAgICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnN0cnVtZW50K1NlcmlmOml0YWxAMDsxJmFtcDtmYW1pbHk9R2Vpc3Q6d2dodEA0MDA7NTAwOzYwMCZhbXA7ZmFtaWx5PUdlaXN0K01vbm86d2dodEA0MDA7NTAwOzYwMCZhbXA7ZGlzcGxheT1zd2FwJyk7PC9zdHlsZT4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAuem9uZSB7IGZpbGw6ICNlNmU0ZGU7IHN0cm9rZTogIzEwMTgyODsgc3Ryb2tlLW9wYWNpdHk6IC4xNDE7IHN0cm9rZS13aWR0aDogMTsgfQogICAgICAgICAgLnpvbmUtcHJvdGVjdGVkIHsgZmlsbDogIzFkNGVkODsgZmlsbC1vcGFjaXR5OiAuMDU7IHN0cm9rZTogIzFkNGVkODsgc3Ryb2tlLW9wYWNpdHk6IC41MDsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiA0IDQ7IH0KICAgICAgICAgIC56b25lLWxhYmVsIHsgZmlsbDogIzZhNzI4MjsgZm9udDogNTAwIDhweCAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgbGV0dGVyLXNwYWNpbmc6IC4xNmVtOyB9CiAgICAgICAgICAubm9kZS1tYXNrIHsgZmlsbDogI2YwZWVlOTsgfQogICAgICAgICAgLm5vZGUgeyBmaWxsOiAjZmZmZmZmOyBzdHJva2U6ICMxMDE4Mjg7IHN0cm9rZS13aWR0aDogMTsgfQogICAgICAgICAgLm5vZGUtaW5wdXQgeyBmaWxsOiAjNGM1NjY1OyBmaWxsLW9wYWNpdHk6IC4xMDsgc3Ryb2tlOiAjNmE3MjgyOyBzdHJva2Utd2lkdGg6IDE7IH0KICAgICAgICAgIC5ub2RlLXN0b3JlIHsgZmlsbDogIzEwMTgyODsgZmlsbC1vcGFjaXR5OiAuMDU7IHN0cm9rZTogIzRjNTY2NTsgc3Ryb2tlLXdpZHRoOiAxOyB9CiAgICAgICAgICAubm9kZS1mb2NhbCB7IGZpbGw6ICMxZDRlZDg7IGZpbGwtb3BhY2l0eTogLjA4OyBzdHJva2U6ICMxZDRlZDg7IHN0cm9rZS13aWR0aDogMS4yOyB9CiAgICAgICAgICAudGFnIHsgZmlsbDogbm9uZTsgc3Ryb2tlOiAjMTAxODI4OyBzdHJva2Utb3BhY2l0eTogLjM0OyBzdHJva2Utd2lkdGg6IC44OyB9CiAgICAgICAgICAudGFnLWZvY2FsIHsgZmlsbDogbm9uZTsgc3Ryb2tlOiAjMWQ0ZWQ4OyBzdHJva2Utb3BhY2l0eTogLjU1OyBzdHJva2Utd2lkdGg6IC44OyB9CiAgICAgICAgICAudGFnLXRleHQgeyBmaWxsOiAjNmE3MjgyOyBmb250OiA1MDAgOHB4ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBsZXR0ZXItc3BhY2luZzogLjA4ZW07IHRleHQtYW5jaG9yOiBtaWRkbGU7IH0KICAgICAgICAgIC50YWctdGV4dC1mb2NhbCB7IGZpbGw6ICMxZDRlZDg7IGZvbnQ6IDUwMCA4cHggJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGxldHRlci1zcGFjaW5nOiAuMDhlbTsgdGV4dC1hbmNob3I6IG1pZGRsZTsgfQogICAgICAgICAgLm5hbWUgeyBmaWxsOiAjMTAxODI4OyBmb250OiA2MDAgMTJweCAnR2Vpc3QnLCBzYW5zLXNlcmlmOyB0ZXh0LWFuY2hvcjogbWlkZGxlOyB9CiAgICAgICAgICAuc3ViIHsgZmlsbDogIzRjNTY2NTsgZm9udDogNDAwIDhweCAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgdGV4dC1hbmNob3I6IG1pZGRsZTsgfQogICAgICAgICAgLmVkZ2UgeyBmaWxsOiBub25lOyBzdHJva2U6ICM0YzU2NjU7IHN0cm9rZS13aWR0aDogMS4yOyBtYXJrZXItZW5kOiB1cmwoI2Fycm93KTsgfQogICAgICAgICAgLmVkZ2UtYXBwcm92ZWQgeyBmaWxsOiBub25lOyBzdHJva2U6ICMxZDRlZDg7IHN0cm9rZS13aWR0aDogMS4yOyBtYXJrZXItZW5kOiB1cmwoI2Fycm93LWFjY2VudCk7IH0KICAgICAgICAgIC5lZGdlLWF1ZGl0IHsgZmlsbDogbm9uZTsgc3Ryb2tlOiAjNGM1NjY1OyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IDUgNDsgbWFya2VyLWVuZDogdXJsKCNhcnJvdyk7IH0KICAgICAgICAgIC5lZGdlLWJsb2NrZWQgeyBmaWxsOiBub25lOyBzdHJva2U6ICM2YTcyODI7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogNSA0OyB9CiAgICAgICAgICAubGFiZWwtbWFzayB7IGZpbGw6ICNmMGVlZTk7IH0KICAgICAgICAgIC5sYWJlbCB7IGZpbGw6ICM0YzU2NjU7IGZvbnQ6IDUwMCA4cHggJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGxldHRlci1zcGFjaW5nOiAuMDRlbTsgdGV4dC1hbmNob3I6IG1pZGRsZTsgfQogICAgICAgICAgLmxhYmVsLWFwcHJvdmVkIHsgZmlsbDogIzFkNGVkODsgZm9udDogNTAwIDhweCAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgbGV0dGVyLXNwYWNpbmc6IC4wNGVtOyB0ZXh0LWFuY2hvcjogbWlkZGxlOyB9CiAgICAgICAgICAuc3RvcCB7IGZpbGw6ICNmMGVlZTk7IHN0cm9rZTogIzZhNzI4Mjsgc3Ryb2tlLXdpZHRoOiAxLjI7IH0KICAgICAgICAgIC5zdG9wLW1hcmsgeyBzdHJva2U6ICM2YTcyODI7IHN0cm9rZS13aWR0aDogMS4yOyB9CiAgICAgICAgICAubGVnZW5kIHsgZmlsbDogIzEwMTgyODsgZm9udDogNDAwIDEycHggJ0dlaXN0Jywgc2Fucy1zZXJpZjsgfQogICAgICAgICAgLmxlZ2VuZC1sYWJlbCB7IGZpbGw6ICM2YTcyODI7IGZvbnQ6IDUwMCA4cHggJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGxldHRlci1zcGFjaW5nOiAuMTZlbTsgfQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPG1hcmtlciBpZD0iYXJyb3ciIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjYiIHJlZlg9IjciIHJlZlk9IjMiIG9yaWVudD0iYXV0byI+CiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAgMCw4IDMsMCA2IiBmaWxsPSIjNGM1NjY1Ii8+CiAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgPG1hcmtlciBpZD0iYXJyb3ctYWNjZW50IiBtYXJrZXJXaWR0aD0iOCIgbWFya2VySGVpZ2h0PSI2IiByZWZYPSI3IiByZWZZPSIzIiBvcmllbnQ9ImF1dG8iPgogICAgICAgICAgPHBvbHlnb24gcG9pbnRzPSIwIDAsOCAzLDAgNiIgZmlsbD0iIzFkNGVkOCIvPgogICAgICAgIDwvbWFya2VyPgogICAgICAgIDxtYXJrZXIgaWQ9ImFycm93LWxpbmsiIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjYiIHJlZlg9IjciIHJlZlk9IjMiIG9yaWVudD0iYXV0byI+CiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9IjAgMCw4IDMsMCA2IiBmaWxsPSIjMWQ0ZWQ4Ii8+CiAgICAgICAgPC9tYXJrZXI+CiAgICAgIDwvZGVmcz4KCiAgICAgIDxyZWN0IHdpZHRoPSIxMjgwIiBoZWlnaHQ9IjcyMCIgZmlsbD0iI2YwZWVlOSIvPgoKICAgICAgPCEtLSBUcnVzdCB6b25lcyAtLT4KICAgICAgPHJlY3QgY2xhc3M9InpvbmUiIHg9IjI0OCIgeT0iOTYiIHdpZHRoPSIzNDQiIGhlaWdodD0iNDQ4IiByeD0iOCIvPgogICAgICA8cmVjdCBjbGFzcz0ibGFiZWwtbWFzayIgeD0iMjYwIiB5PSIxMDAiIHdpZHRoPSIxNTIiIGhlaWdodD0iMTYiIHJ4PSIyIi8+CiAgICAgIDx0ZXh0IGNsYXNzPSJ6b25lLWxhYmVsIiB4PSIyNjgiIHk9IjExMiI+TUFJTiBDT05UUk9MIFBMQU5FPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9InpvbmUiIHg9IjYyNCIgeT0iOTYiIHdpZHRoPSIzMDQiIGhlaWdodD0iNDQ4IiByeD0iOCIvPgogICAgICA8cmVjdCBjbGFzcz0ibGFiZWwtbWFzayIgeD0iNjM2IiB5PSIxMDAiIHdpZHRoPSIxNjQiIGhlaWdodD0iMTYiIHJ4PSIyIi8+CiAgICAgIDx0ZXh0IGNsYXNzPSJ6b25lLWxhYmVsIiB4PSI2NDQiIHk9IjExMiI+SVNPTEFURUQgVEFTSyBBVFRFTVBUPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9InpvbmUtcHJvdGVjdGVkIiB4PSI5NjAiIHk9Ijk2IiB3aWR0aD0iMjgwIiBoZWlnaHQ9IjQ3MiIgcng9IjgiLz4KICAgICAgPHJlY3QgY2xhc3M9ImxhYmVsLW1hc2siIHg9Ijk3MiIgeT0iMTAwIiB3aWR0aD0iMTk2IiBoZWlnaHQ9IjE2IiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0iem9uZS1sYWJlbCIgeD0iOTgwIiB5PSIxMTIiPlBST1RFQ1RFRCBNQUlOIFJFUE9TSVRPUlk8L3RleHQ+CgogICAgICA8IS0tIEFwcHJvdmVkIGFuZCBhdWRpdCBwYXRocyAtLT4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UiIHgxPSIyMTYiIHkxPSIyMTYiIHgyPSIyODAiIHkyPSIyMTYiLz4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UiIHgxPSI1NjAiIHkxPSIyMTYiIHgyPSI2NTYiIHkyPSIyMTYiLz4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UiIHgxPSI0MjAiIHkxPSIyNzIiIHgyPSI0MjAiIHkyPSI0MDAiLz4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UiIHgxPSI3NzYiIHkxPSIyNzIiIHgyPSI3NzYiIHkyPSIzMzYiLz4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UtYXBwcm92ZWQiIHgxPSI3NzYiIHkxPSI0NDgiIHgyPSI3NzYiIHkyPSI0NzIiLz4KICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UtYXBwcm92ZWQiIHgxPSI4OTYiIHkxPSI1MTYiIHgyPSI5OTIiIHkyPSI1MTYiLz4KICAgICAgPHBhdGggY2xhc3M9ImVkZ2UtYXVkaXQiIGQ9Ik0xMDY4IDU2MCBWNTg0IFExMDY4IDU5MiAxMDYwIDU5MiBINDI4IFE0MjAgNTkyIDQyMCA1ODQgVjUxMiIvPgoKICAgICAgPCEtLSBGb3JiaWRkZW4gcm91dGVzIHN0b3AgYmVmb3JlIGNyb3NzaW5nIC0tPgogICAgICA8cGF0aCBjbGFzcz0iZWRnZS1ibG9ja2VkIiBkPSJNNzA0IDI3MiBWMjk2IFE3MDQgMzA0IDY5NiAzMDQgSDYyNCIvPgogICAgICA8Y2lyY2xlIGNsYXNzPSJzdG9wIiBjeD0iNjI0IiBjeT0iMzA0IiByPSI4Ii8+CiAgICAgIDxsaW5lIGNsYXNzPSJzdG9wLW1hcmsiIHgxPSI2MjAiIHkxPSIzMDAiIHgyPSI2MjgiIHkyPSIzMDgiLz4KICAgICAgPGxpbmUgY2xhc3M9InN0b3AtbWFyayIgeDE9IjYyOCIgeTE9IjMwMCIgeDI9IjYyMCIgeTI9IjMwOCIvPgoKICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UtYmxvY2tlZCIgeDE9Ijg5NiIgeTE9IjQyMCIgeDI9Ijk1MiIgeTI9IjQyMCIvPgogICAgICA8Y2lyY2xlIGNsYXNzPSJzdG9wIiBjeD0iOTUyIiBjeT0iNDIwIiByPSI4Ii8+CiAgICAgIDxsaW5lIGNsYXNzPSJzdG9wLW1hcmsiIHgxPSI5NDgiIHkxPSI0MTYiIHgyPSI5NTYiIHkyPSI0MjQiLz4KICAgICAgPGxpbmUgY2xhc3M9InN0b3AtbWFyayIgeDE9Ijk1NiIgeTE9IjQxNiIgeDI9Ijk0OCIgeTI9IjQyNCIvPgoKICAgICAgPCEtLSBDb25uZWN0b3IgbGFiZWxzIC0tPgogICAgICA8cmVjdCBjbGFzcz0ibGFiZWwtbWFzayIgeD0iMjIwIiB5PSIxOTYiIHdpZHRoPSI1NiIgaGVpZ2h0PSIxMiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9ImxhYmVsIiB4PSIyNDgiIHk9IjIwNCI+RVhFQ1VURTwvdGV4dD4KCiAgICAgIDxyZWN0IGNsYXNzPSJsYWJlbC1tYXNrIiB4PSI1ODAiIHk9IjE5NiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjEyIiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0ibGFiZWwiIHg9IjYwOCIgeT0iMjA0Ij5MQVVOQ0g8L3RleHQ+CgogICAgICA8cmVjdCBjbGFzcz0ibGFiZWwtbWFzayIgeD0iNDI4IiB5PSIzMjQiIHdpZHRoPSI3MiIgaGVpZ2h0PSIxMiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9ImxhYmVsIiB4PSI0NjQiIHk9IjMzMiI+Q0hFQ0tQT0lOVDwvdGV4dD4KCiAgICAgIDxyZWN0IGNsYXNzPSJsYWJlbC1tYXNrIiB4PSI3ODQiIHk9IjI5NiIgd2lkdGg9IjcyIiBoZWlnaHQ9IjEyIiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0ibGFiZWwiIHg9IjgyMCIgeT0iMzA0Ij5JTVBMRU1FTlQ8L3RleHQ+CgogICAgICA8cmVjdCBjbGFzcz0ibGFiZWwtbWFzayIgeD0iOTE2IiB5PSI0OTYiIHdpZHRoPSI1NiIgaGVpZ2h0PSIxMiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9ImxhYmVsLWFwcHJvdmVkIiB4PSI5NDQiIHk9IjUwNCI+VkVSSUZZPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9ImxhYmVsLW1hc2siIHg9IjYyOCIgeT0iMjg0IiB3aWR0aD0iOTYiIGhlaWdodD0iMTIiIHJ4PSIyIi8+CiAgICAgIDx0ZXh0IGNsYXNzPSJsYWJlbCIgeD0iNjc2IiB5PSIyOTIiPk5PIENPTlRST0wgQVBJPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9ImxhYmVsLW1hc2siIHg9IjkwMCIgeT0iNDAwIiB3aWR0aD0iNDgiIGhlaWdodD0iMTIiIHJ4PSIyIi8+CiAgICAgIDx0ZXh0IGNsYXNzPSJsYWJlbCIgeD0iOTI0IiB5PSI0MDgiPk5PIEJZUEFTUzwvdGV4dD4KCiAgICAgIDxyZWN0IGNsYXNzPSJsYWJlbC1tYXNrIiB4PSI2OTYiIHk9IjU3MiIgd2lkdGg9IjgwIiBoZWlnaHQ9IjEyIiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0ibGFiZWwiIHg9IjczNiIgeT0iNTgwIj5BVURJVCBSRVNVTFQ8L3RleHQ+CgogICAgICA8IS0tIE9wYXF1ZSBub2RlIG1hc2tzIC0tPgogICAgICA8cmVjdCBjbGFzcz0ibm9kZS1tYXNrIiB4PSI0MCIgeT0iMTYwIiB3aWR0aD0iMTc2IiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtbWFzayIgeD0iMjgwIiB5PSIxNjAiIHdpZHRoPSIyODAiIGhlaWdodD0iMTEyIiByeD0iNiIvPgogICAgICA8cmVjdCBjbGFzcz0ibm9kZS1tYXNrIiB4PSIyODAiIHk9IjQwMCIgd2lkdGg9IjI4MCIgaGVpZ2h0PSIxMTIiIHJ4PSI2Ii8+CiAgICAgIDxyZWN0IGNsYXNzPSJub2RlLW1hc2siIHg9IjY1NiIgeT0iMTYwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtbWFzayIgeD0iNjU2IiB5PSIzMzYiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTEyIiByeD0iNiIvPgogICAgICA8cmVjdCBjbGFzcz0ibm9kZS1tYXNrIiB4PSI2NTYiIHk9IjQ3MiIgd2lkdGg9IjI0MCIgaGVpZ2h0PSI3MiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtbWFzayIgeD0iOTkyIiB5PSI0NzIiIHdpZHRoPSIyMTYiIGhlaWdodD0iODgiIHJ4PSI2Ii8+CgogICAgICA8IS0tIFJlcXVlc3QgLS0+CiAgICAgIDxyZWN0IGNsYXNzPSJub2RlLWlucHV0IiB4PSI0MCIgeT0iMTYwIiB3aWR0aD0iMTc2IiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9InRhZyIgeD0iNTIiIHk9IjE3MiIgd2lkdGg9IjQwIiBoZWlnaHQ9IjE2IiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0idGFnLXRleHQiIHg9IjcyIiB5PSIxODQiPklOUFVUPC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ibmFtZSIgeD0iMTI4IiB5PSIyMTYiPkNoZWNrZWQgcmVxdWVzdDwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9InN1YiIgeD0iMTI4IiB5PSIyNDAiPlRBU0sgREFHIMK3IENIRUNLUyDCtyBCVURHRVQ8L3RleHQ+CgogICAgICA8IS0tIE1haW4gY29udHJvbCBwbGFuZSAtLT4KICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtZm9jYWwiIHg9IjI4MCIgeT0iMTYwIiB3aWR0aD0iMjgwIiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9InRhZy1mb2NhbCIgeD0iMjkyIiB5PSIxNzIiIHdpZHRoPSI0MCIgaGVpZ2h0PSIxNiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9InRhZy10ZXh0LWZvY2FsIiB4PSIzMTIiIHk9IjE4NCI+TUFJTjwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9Im5hbWUiIHg9IjQyMCIgeT0iMjEyIj5QaSBPcmNoZXN0cmF0b3I8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJzdWIiIHg9IjQyMCIgeT0iMjM2Ij5GUkVFWkVTIFJPTEUgKyBNT0RFTCBST1VURVM8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJzdWIiIHg9IjQyMCIgeT0iMjUyIj5PV05TIFJFUVVFU1QgTElGRUNZQ0xFPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtc3RvcmUiIHg9IjI4MCIgeT0iNDAwIiB3aWR0aD0iMjgwIiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9InRhZyIgeD0iMjkyIiB5PSI0MTIiIHdpZHRoPSI0OCIgaGVpZ2h0PSIxNiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9InRhZy10ZXh0IiB4PSIzMTYiIHk9IjQyNCI+QVVESVQ8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJuYW1lIiB4PSI0MjAiIHk9IjQ1MiI+RHVyYWJsZSByZXF1ZXN0IHN0YXRlPC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ic3ViIiB4PSI0MjAiIHk9IjQ3NiI+Q09ORklHL1BJLU9SQ0hFU1RSQVRPUi9TVEFURTwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9InN1YiIgeD0iNDIwIiB5PSI0OTIiPlNUUklDVCBTQ0hFTUEgwrcgUkVDT1ZFUlkgRVZJREVOQ0U8L3RleHQ+CgogICAgICA8IS0tIElzb2xhdGVkIGF0dGVtcHQgLS0+CiAgICAgIDxyZWN0IGNsYXNzPSJub2RlIiB4PSI2NTYiIHk9IjE2MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxMTIiIHJ4PSI2Ii8+CiAgICAgIDxyZWN0IGNsYXNzPSJ0YWciIHg9IjY2OCIgeT0iMTcyIiB3aWR0aD0iNDAiIGhlaWdodD0iMTYiIHJ4PSIyIi8+CiAgICAgIDx0ZXh0IGNsYXNzPSJ0YWctdGV4dCIgeD0iNjg4IiB5PSIxODQiPlJPTEU8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJuYW1lIiB4PSI3NzYiIHk9IjIxMiI+SGVyZHIgSW1wbGVtZW50ZXI8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJzdWIiIHg9Ijc3NiIgeT0iMjM2Ij5UQVNLLVNDT1BFRCBUT09MUyArIFNLSUxMUzwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9InN1YiIgeD0iNzc2IiB5PSIyNTIiPk5PIE9SQ0hFU1RSQVRFXyogUkVDVVJTSU9OPC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9Im5vZGUtc3RvcmUiIHg9IjY1NiIgeT0iMzM2IiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjExMiIgcng9IjYiLz4KICAgICAgPHJlY3QgY2xhc3M9InRhZyIgeD0iNjY4IiB5PSIzNDgiIHdpZHRoPSIzMiIgaGVpZ2h0PSIxNiIgcng9IjIiLz4KICAgICAgPHRleHQgY2xhc3M9InRhZy10ZXh0IiB4PSI2ODQiIHk9IjM2MCI+R0lUPC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ibmFtZSIgeD0iNzc2IiB5PSIzODgiPklzb2xhdGVkIHRhc2sgd29ya3RyZWU8L3RleHQ+CiAgICAgIDx0ZXh0IGNsYXNzPSJzdWIiIHg9Ijc3NiIgeT0iNDEyIj5PTkUgQVRURU1QVCDCtyBDT01NSVRURUQgQ0FORElEQVRFPC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ic3ViIiB4PSI3NzYiIHk9IjQyOCI+RElSVFkgT1IgQU1CSUdVT1VTIEZBSUxTIENMT1NFRDwvdGV4dD4KCiAgICAgIDwhLS0gUG9zdC1zdG9wIHRhc2sgZ2F0ZSAtLT4KICAgICAgPHJlY3QgY2xhc3M9Im5vZGUiIHg9IjY1NiIgeT0iNDcyIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjcyIiByeD0iNiIvPgogICAgICA8cmVjdCBjbGFzcz0idGFnIiB4PSI2NjgiIHk9IjQ4NCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjE2IiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0idGFnLXRleHQiIHg9IjY4OCIgeT0iNDk2Ij5DSEVDSzwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9Im5hbWUiIHg9Ijc3NiIgeT0iNTA4Ij5Qb3N0LXN0b3AgY2hlY2tzICsgcmV2aWV3PC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ic3ViIiB4PSI3NzYiIHk9IjUyOCI+UkVCQVNFIMK3IERJUkVDVCBBUkdWIMK3IEVYQUNUIFBBVENIPC90ZXh0PgoKICAgICAgPCEtLSBQcm90ZWN0ZWQgTWFpbiByZXBvc2l0b3J5IC0tPgogICAgICA8cmVjdCBjbGFzcz0ibm9kZS1mb2NhbCIgeD0iOTkyIiB5PSI0NzIiIHdpZHRoPSIyMTYiIGhlaWdodD0iODgiIHJ4PSI2Ii8+CiAgICAgIDxyZWN0IGNsYXNzPSJ0YWctZm9jYWwiIHg9IjEwMDQiIHk9IjQ4NCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjE2IiByeD0iMiIvPgogICAgICA8dGV4dCBjbGFzcz0idGFnLXRleHQtZm9jYWwiIHg9IjEwMjQiIHk9IjQ5NiI+R0FURTwvdGV4dD4KICAgICAgPHRleHQgY2xhc3M9Im5hbWUiIHg9IjExMDAiIHk9IjUyMCI+R3VhcmRlZCBNYWluIGludGVncmF0aW9uPC90ZXh0PgogICAgICA8dGV4dCBjbGFzcz0ic3ViIiB4PSIxMTAwIiB5PSI1NDQiPklERU5USVRZIEZFTkNFIMK3IERFQ0xBUkVEIE9SREVSPC90ZXh0PgoKICAgICAgPCEtLSBMZWdlbmQgLS0+CiAgICAgIDxsaW5lIHgxPSI0MCIgeTE9IjY0MCIgeDI9IjEyNDAiIHkyPSI2NDAiIHN0cm9rZT0iIzEwMTgyOCIgc3Ryb2tlLW9wYWNpdHk9Ii4xNDEiIHN0cm9rZS13aWR0aD0iLjgiLz4KICAgICAgPHRleHQgY2xhc3M9ImxlZ2VuZC1sYWJlbCIgeD0iNDAiIHk9IjY3MiI+TEVHRU5EPC90ZXh0PgoKICAgICAgPGxpbmUgY2xhc3M9ImVkZ2UtYXBwcm92ZWQiIHgxPSIxMzYiIHkxPSI2NjgiIHgyPSIxODQiIHkyPSI2NjgiLz4KICAgICAgPHRleHQgY2xhc3M9ImxlZ2VuZCIgeD0iMjAwIiB5PSI2NzIiPmFwcHJvdmVkIGNoZWNrZWQgcGF0aDwvdGV4dD4KCiAgICAgIDxsaW5lIGNsYXNzPSJlZGdlLWF1ZGl0IiB4MT0iMzk2IiB5MT0iNjY4IiB4Mj0iNDQ0IiB5Mj0iNjY4Ii8+CiAgICAgIDx0ZXh0IGNsYXNzPSJsZWdlbmQiIHg9IjQ2MCIgeT0iNjcyIj5kdXJhYmxlIGF1ZGl0IHJlY29yZDwvdGV4dD4KCiAgICAgIDxsaW5lIGNsYXNzPSJlZGdlLWJsb2NrZWQiIHgxPSI2NjAiIHkxPSI2NjgiIHgyPSI3MDAiIHkyPSI2NjgiLz4KICAgICAgPGNpcmNsZSBjbGFzcz0ic3RvcCIgY3g9IjcwOCIgY3k9IjY2OCIgcj0iOCIvPgogICAgICA8bGluZSBjbGFzcz0ic3RvcC1tYXJrIiB4MT0iNzA0IiB5MT0iNjY0IiB4Mj0iNzEyIiB5Mj0iNjcyIi8+CiAgICAgIDxsaW5lIGNsYXNzPSJzdG9wLW1hcmsiIHgxPSI3MTIiIHkxPSI2NjQiIHgyPSI3MDQiIHkyPSI2NzIiLz4KICAgICAgPHRleHQgY2xhc3M9ImxlZ2VuZCIgeD0iNzI4IiB5PSI2NzIiPmJsb2NrZWQgYmVmb3JlIGJvdW5kYXJ5PC90ZXh0PgoKICAgICAgPHJlY3QgY2xhc3M9InpvbmUtcHJvdGVjdGVkIiB4PSI5ODgiIHk9IjY2MCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjE2IiByeD0iNCIvPgogICAgICA8dGV4dCBjbGFzcz0ibGVnZW5kIiB4PSIxMDM2IiB5PSI2NzIiPnRydXN0IGJvdW5kYXJ5PC90ZXh0PgogICAgPC9zdmc+Cg==)

### Execution and review

A request accepts one to eight tasks. Every task needs direct checks and an explicit model class.

`dependsOn` creates later waves. Tasks in one ready wave use separate worktrees and visible Herdr workers.

Preliminary validation uses checks only while the worker remains available. A settled implementation block or unchanged failed check can trigger one same-agent correction.

The worker then stops. The orchestrator rebases the candidate and reruns every task check directly, without a shell.

Add `judgment` only for a criterion that checks cannot decide. One read-only Reviewer runs after the rebase with exact private patch evidence. Its final response is mandatory. Zero findings must return exactly `PASS`; blank or other output fails.

## API

The package root exports its strict request and state schemas, runner contracts, checked Git runtime, Herdr host runtime, and composition helpers. The Pi entry point is `extensions/orchestrator.ts`.

## State and storage

State lives under `~/.pi/agent/config/pi-orchestrator/state/`, namespaced by repository and request ID. Do not edit state files.

## Limits and recovery

### Recovery actions

Use `orchestrate_status` after interruption or when a request needs attention. Then choose one reported action:

- `retry` continues pre-dispatch recovery or sends one eligible correction to the same agent. It never replaces a prompted agent.
- `verify` checks retained task work before integration or finishes pending cleanup.
- `finalize` reruns the final gate when Main still matches the recorded identity.

`orchestrate_abort` terminates owned workers and records an aborted request. It does not claim uncertain cleanup succeeded.

### Version 1 scope

Version 1 stops after checked integration in the local repository. It does not push, open or manage pull requests, run swarms, or support old protocols and state.

It does not use outboxes, delivery hosts, receipts, or broad transport machinery.
