Feature Request
Summary
cleo orchestrate waves <epic> recomputes the plan on every call from current dep state. Operators who author a wave plan in a markdown doc (e.g., NEXT_SESSION.md Wave 1 / Wave 2 / Wave 3 sections) have no way to bind that intent back to CLEO. Two sources of truth drift.
Concrete need
This project's NEXT_SESSION.md has 7 hand-authored waves combining Track A (infra migration) and Track B (SG-SoR product) with specific task slotting per agent. cleo orchestrate waves T009 ignores the doc entirely and outputs a different topology. Each session needs manual reconciliation: doc says "Wave 1 absorbs T148+T149"; CLEO would never compute that pairing because T148 lives under T123 (an SG-SoR epic with no readiness signal from parentId traversal — see issue on saga traversal).
cleo orchestrate waves T009 # → CLEO's computed plan
# vs
cat NEXT_SESSION.md | grep -A1 "^- \*\*Wave" # → operator's plan
# No way to reconcile.
Proposed design
- New table
wave_plans(id, epic_id, wave_number, task_ids text[], notes, locked_by, locked_at, created_at).
cleo orchestrate waves --save [--name <slug>] persists the current computation as a baseline.
cleo orchestrate waves --from <slug> loads a saved plan.
cleo orchestrate waves --diff <slug> shows drift vs persisted plan (added tasks, removed tasks, moved between waves).
cleo wave assign <task-id> --wave N [--plan <slug>] for manual slotting.
cleo wave show <slug> renders the wave table.
Impact
Operators currently maintain wave plans in markdown for human readability; CLEO maintains its own plan for orchestration. Persisting the operator's plan lets cleo orchestrate spawn honor manual slotting decisions (e.g., "Wave 1 includes T148 from a different parent because of external deadline").
Cross-ref
.cleo/research/sg-sor/06-cleo-gaps.md issue #7.
Area: dispatch
Are you using an AI agent?
Yes - AI agent filed this issue
Environment
| Component |
Version |
| CLEO |
2026.2.1 |
| Node.js |
v24.13.1 |
| OS |
linux 6.19.14-200.fc43.x86_64 x64 (x64) |
| Shell |
/bin/bash |
| gh CLI |
gh version 2.87.3 (2026-02-23) |
| Install |
/home/keatonhoskins/.npm-global/bin/cleo |
Feature Request
Summary
cleo orchestrate waves <epic>recomputes the plan on every call from current dep state. Operators who author a wave plan in a markdown doc (e.g.,NEXT_SESSION.mdWave 1 / Wave 2 / Wave 3 sections) have no way to bind that intent back to CLEO. Two sources of truth drift.Concrete need
This project's
NEXT_SESSION.mdhas 7 hand-authored waves combining Track A (infra migration) and Track B (SG-SoR product) with specific task slotting per agent.cleo orchestrate waves T009ignores the doc entirely and outputs a different topology. Each session needs manual reconciliation: doc says "Wave 1 absorbs T148+T149"; CLEO would never compute that pairing because T148 lives under T123 (an SG-SoR epic with no readiness signal fromparentIdtraversal — see issue on saga traversal).Proposed design
wave_plans(id, epic_id, wave_number, task_ids text[], notes, locked_by, locked_at, created_at).cleo orchestrate waves --save [--name <slug>]persists the current computation as a baseline.cleo orchestrate waves --from <slug>loads a saved plan.cleo orchestrate waves --diff <slug>shows drift vs persisted plan (added tasks, removed tasks, moved between waves).cleo wave assign <task-id> --wave N [--plan <slug>]for manual slotting.cleo wave show <slug>renders the wave table.Impact
Operators currently maintain wave plans in markdown for human readability; CLEO maintains its own plan for orchestration. Persisting the operator's plan lets
cleo orchestrate spawnhonor manual slotting decisions (e.g., "Wave 1 includes T148 from a different parent because of external deadline").Cross-ref
.cleo/research/sg-sor/06-cleo-gaps.mdissue #7.Area: dispatch
Are you using an AI agent?
Yes - AI agent filed this issue
Environment