feat(fleet): dedicated orchestrator persona, split from planner #662

Merged
jason.woltje merged 2 commits from feat/orchestrator-persona into main 2026-06-24 16:42:24 +00:00
Owner

Why

Today the role library has no dedicated orchestratorroles/planner.md claimed "the planner role IS the existing orchestrator class", and profiles/software-delivery.yaml (landed in #660) used lead: planner as a workaround.

The product owner wants a dedicated orchestrator for cleaner context separation:

  • orchestrator = always-on coordinator/dispatcher (runs the supervisor loop, assigns work, interfaces with the user, holds only lean coordination state).
  • planner = carries the heavy goal-decomposition context, dispatched to by the orchestrator.

Separate seats -> separate, focused context windows. This also aligns the library with the live runtime (the fleet's floor is already "orchestrator + enhancer") and the North Star floor (AC-NS-1 / ASM-3: "1 orchestrator + >=1 enhancer").

What changed

  • New roles/orchestrator.md — dedicated class: orchestrator, persistent_persona: true. Mandate: run the supervisor tick, dispatch ready dependency-satisfied work, route PRs to the merge-gate, interface with the operator/user, hold only coordination state. Boundaries: does not decompose goals (planner's lane), write code, review, or merge itself; keeps its context lean.
  • Reconciled roles/planner.md — removed the "planner IS the orchestrator class" alias; reframed planner as the goal-decomposition seat that reports to / is dispatched by the orchestrator.
  • Updated profiles/software-delivery.yamllead: orchestrator, floor: [orchestrator, enhancer], added the orchestrator lead seat (no reports_to), planner now reports_to: orchestrator, and re-pointed the coordination seats (board, review, documentation, merge-gate, operator, session-review, enhancer) from planner to orchestrator. Planning/execution chain preserved (decomposition->planner, code->decomposition x2, security-review/site-tester->review, rebase->merge-gate). Header comment updated.
  • Updated roles/LIBRARY.md — added orchestrator to the engineering group index.
  • Updated fleet-profiles.spec.ts — the drift-guard test now asserts orchestrator resolves and that software-delivery's lead/floor/topology reflect the dedicated orchestrator.

Gates (all green)

  • turbo build (deps + mosaic): pass
  • vitest: 585/585 pass (profile drift-guard green: orchestrator resolves, software-delivery valid)
  • typecheck: pass
  • lint: pass
  • prettier --check: pass
  • smoke (fleet profile show software-delivery): lead=orchestrator, floor=orchestrator, enhancer

Do NOT merge — reviewable only.

🤖 Generated with Claude Code

## Why Today the role library has no dedicated `orchestrator` — `roles/planner.md` claimed "the planner role IS the existing orchestrator class", and `profiles/software-delivery.yaml` (landed in #660) used `lead: planner` as a workaround. The product owner wants a dedicated orchestrator for **cleaner context separation**: - **orchestrator** = always-on coordinator/dispatcher (runs the supervisor loop, assigns work, interfaces with the user, holds only lean coordination state). - **planner** = carries the heavy goal-decomposition context, dispatched to by the orchestrator. Separate seats -> separate, focused context windows. This also aligns the library with the live runtime (the fleet's floor is already "orchestrator + enhancer") and the North Star floor (AC-NS-1 / ASM-3: "1 orchestrator + >=1 enhancer"). ## What changed - **New** `roles/orchestrator.md` — dedicated `class: orchestrator`, `persistent_persona: true`. Mandate: run the supervisor tick, dispatch ready dependency-satisfied work, route PRs to the merge-gate, interface with the operator/user, hold only coordination state. Boundaries: does not decompose goals (planner's lane), write code, review, or merge itself; keeps its context lean. - **Reconciled** `roles/planner.md` — removed the "planner IS the orchestrator class" alias; reframed planner as the goal-decomposition seat that reports to / is dispatched by the orchestrator. - **Updated** `profiles/software-delivery.yaml` — `lead: orchestrator`, `floor: [orchestrator, enhancer]`, added the `orchestrator` lead seat (no reports_to), `planner` now `reports_to: orchestrator`, and re-pointed the coordination seats (board, review, documentation, merge-gate, operator, session-review, enhancer) from `planner` to `orchestrator`. Planning/execution chain preserved (decomposition->planner, code->decomposition x2, security-review/site-tester->review, rebase->merge-gate). Header comment updated. - **Updated** `roles/LIBRARY.md` — added `orchestrator` to the engineering group index. - **Updated** `fleet-profiles.spec.ts` — the drift-guard test now asserts `orchestrator` resolves and that software-delivery's lead/floor/topology reflect the dedicated orchestrator. ## Gates (all green) - turbo build (deps + mosaic): pass - vitest: 585/585 pass (profile drift-guard green: orchestrator resolves, software-delivery valid) - typecheck: pass - lint: pass - prettier --check: pass - smoke (`fleet profile show software-delivery`): lead=orchestrator, floor=orchestrator, enhancer Do NOT merge — reviewable only. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jason.woltje added 1 commit 2026-06-24 16:18:52 +00:00
feat(fleet): dedicated orchestrator persona (split from planner) + software-delivery lead
Some checks failed
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/pr/ci Pipeline was canceled
c316312344
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
jason.woltje force-pushed feat/orchestrator-persona from c316312344 to 1edaf9b492 2026-06-24 16:21:26 +00:00 Compare
jason.woltje added 1 commit 2026-06-24 16:33:42 +00:00
chore: re-trigger CI
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
e0b0cfc26a
jason.woltje merged commit 6c84ccd0b1 into main 2026-06-24 16:42:24 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#662