docs(rag): fix PM delegate signature + cross-link cell-pm ↔ main-pm

The cell-pm role doc showed delegate with a nonexistent nested body={...}
and omitted covers_parent_criteria, so an agent following it would make a
malformed call and burn turns rediscovering the real shape. Both PM docs now
match the actual flow_server.delegate signature (flat keywords, with
covers_parent_criteria; the subtask inherits the parent's project — resolved
from the product cell→project map for coordination roots, never passed).

Also document reassign (cell PM could call it but it was undocumented) and
cross-link the two roles: cell-pm explains submit_up hands finished work to
Main PM; main-pm explains the receiving side — the integration-branch chain,
that its complete on the root opens the master PR, and that only Main PM and
the CEO act on master.
This commit is contained in:
Renn F
2026-06-17 17:21:50 +02:00
parent ef609085e4
commit b278c55c64
2 changed files with 49 additions and 21 deletions
+23 -5
View File
@@ -42,7 +42,10 @@ note(
title="Task breakdown for [feature]",
)
# 3. Delegate a subtask to each cell PM (parent must be in_progress)
# 3. Delegate a subtask to each cell PM (parent must be in_progress).
# Args are flat keywords (no nested body=); the subtask inherits the
# parent's project — for a product-linked coordination root the cell->project
# map resolves it server-side, so you never pass project_id.
delegate(
parent_task_id=initiative_id,
title="Backend: Implement API",
@@ -50,10 +53,10 @@ delegate(
assigned_to="be-pm",
team="backend",
task_type="planning",
nature="...",
estimated_complexity="...",
nature="technical",
acceptance_criteria=["..."],
project_id="<project-uuid>",
estimated_complexity="medium",
covers_parent_criteria=["<initiative-ac-id>", "..."],
)
# 4. Open a coordination session for the related subtasks
@@ -91,11 +94,26 @@ Registering repositories and storing git tokens is **not** an agent action — i
## Handling Cell PM Escalations
When a Cell PM escalates:
When a Cell PM escalates (`escalate_up`):
1. Review cross-cell impact
2. Coordinate with other Cell PMs if needed
3. Make the decision (`unblock`, `complete`) or escalate up
This is for *help while work is in flight*. Finished cell-scoped work arrives by a different path — `submit_up` (below).
## Integrating cell work + completing the root
You own the integration-branch chain and the master PR. Cell PMs `submit_up(task_id, notes)` their finished cell-scoped tasks to you; they merge only their own cell/leaf PRs and never touch master (see the Cell PM role doc, "Submitting Finished Work Up").
```
master ← feature/main_pm/{root} ← feature/{cell}/{root}/{cell-pm} ← dev branches
(you + CEO) (you) (cell PM) (devs)
```
- A cell PM's `complete` merges a leaf PR into its cell branch; `submit_up` then hands the cell-scoped result to you.
- Your `complete(root_task_id, notes)` on the **root** parent is what opens/merges the master-bound PR — once every cell's subtasks are terminal.
- For major work, escalate the finished root to the CEO with `escalate_to_ceo(root_task_id, reason)` instead; the CEO approves and merges from the panel. Only Main PM and the CEO ever act on master.
## A2A
```python