> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/phases/phase_19/session_04_campaign_workbench.md).

# Session 04: Campaign Workbench

**Session ID**: `phase19-session04-campaign-workbench` **Packages**: apps/server, apps/web **Status**: Complete **Completed**: 2026-06-26 **Estimated Tasks**: \~12-25 **Estimated Duration**: 2-4 hours

***

## Objective

Turn the queue into a plan and campaign workbench with real mutation and dispatch controls.

***

## Scope

### In Scope (MVP)

* Plan and campaign intake, preview, approval, cancel, pause, resume, retry-failed, refine, and dispatch flows
* Editable generated task prompts, task dependency graph, verification status, and plan/task revision timelines
* Queue mutation controls for create from template, update state, reject with reason, restore, mark unavailable, and dispatch
* Detail drawers for source, owner hero, related plan/template, evidence, workpad, verification, and last transition
* Tests for idempotency, stale revision conflicts, task graph rendering, and mutation controls

### Out of Scope

* Model-backed plan decomposition if no current local provider path exists
* Executor-family implementation beyond dispatch capability states

***

## Prerequisites

* [x] Sessions 01 through 03 complete
* [x] Existing `TaskQueueManager` behavior and current queue docs inspected

***

## Deliverables

1. Plan campaign manager behavior and REST routes
2. Campaign and queue workbench tabs in Orchestration
3. Store/API mutation flows with stale revision handling
4. Server and web tests covering successful and rejected mutations

***

## Source Coverage And Evidence

Source coverage:

* Session Split Plan Session 04: Campaign Workbench
* Implementation Target 1: Turn Queue Into A Campaign Workbench
* Balls-To-The-Wall Track B `planCampaignManager` routes
* Execution Family Order item 1 for queue/campaign mutations and plan approval

Key EXAMPLES links:

* [Task queue and plan routes](https://github.com/AI-with-Apex-VIP/factionos/tree/main/.spec_system/EXAMPLES/findings/api-routes.txt#L159-L189)
* [Plan decomposer schema](https://github.com/AI-with-Apex-VIP/factionos/tree/main/.spec_system/EXAMPLES/findings/llm-prompts/plan-decomposer.md#L23-L45)
* [Plan downstream flow](https://github.com/AI-with-Apex-VIP/factionos/tree/main/.spec_system/EXAMPLES/findings/llm-prompts/plan-decomposer.md#L66-L73)
* [Plan decomposer full prompt](https://github.com/AI-with-Apex-VIP/factionos/tree/main/.spec_system/EXAMPLES/findings/llm-prompts/plan-decomposer.md#L1-L76)

***

## Success Criteria

* [x] A user can create or preview a campaign and approve dispatch from Orchestration
* [x] Plans can be paused, resumed, canceled, refined, and retried
* [x] Queue rows stay summary-only while artifacts open in scoped details
* [x] Tests cover API, store, component, and route behavior


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/phases/phase_19/session_04_campaign_workbench.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
