Skip to content

Commit 27b62d5

Browse files
committed
feat(agents): pm-dispatch cross-shard transfer protocol — work crosses shards via the target queue, PMs never do
A sharded PM whose task needs a change in another shard's repo files it into the target repo's queue (pm:queue + source line) instead of dispatching across the line; dependencies via Blocked-by, follow-up chores belong to the consuming shard, and anything touching packages/spec transfers to the main-backlog PM. The queue label is the inter-PM channel — no direct PM-to-PM coordination needed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012C2cd7tL8QDoZ2QKN3djJ5
1 parent fe2510d commit 27b62d5

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

.claude/skills/pm-dispatch/SKILL.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,33 @@ shared files, and the merge queue is one lane regardless. Scaling order:
114114
2. When one PM genuinely can't keep up: a second session takes a **whole
115115
repo** as its shard (`/pm-dispatch repo:objectstack-ai/objectui`) —
116116
file universes are disjoint by construction. A sharded PM states its
117-
shard in every claim comment and **never claims outside it**; cross-repo
118-
parent/sub-issue chains stay with the main-backlog PM.
117+
shard in every claim comment and **never claims outside it**.
119118
3. Multiple PMs on the SAME queue: prohibited — all cost, no throughput.
120119

120+
**Cross-shard transfer protocol — work crosses shard lines, PMs never
121+
do.** When a sharded PM's task (or a sub-task of its parent issue) needs a
122+
change in another shard's repo:
123+
124+
- **Transfer via the target queue**: file the piece as an issue in the
125+
target repo with `pm:queue` and a source line (`Part of
126+
<owner/repo>#<n>`). The target shard's PM picks it up through its own
127+
backlog sweep — the queue label IS the inter-PM channel; PMs never need
128+
to talk directly, and never dispatch into a repo whose in-flight batch
129+
they cannot see (that is the same collision the same-queue ban exists
130+
for).
131+
- **Dependencies via `Blocked-by:`** on the waiting side; the waiting PM's
132+
batch selection skips it until the upstream merges.
133+
- **Follow-up chores belong to the consuming shard**: when the upstream
134+
change lands (say spec gained a key), the dependent-repo adaptation issue
135+
is filed by the PM of the repo that consumes it — it knows its surfaces.
136+
- **Shared contract surfaces have one owner**: anything touching
137+
`packages/spec` transfers to the main-backlog (objectstack) PM
138+
regardless of who needs it — only that PM sees the repo's in-flight
139+
batch and generated-baseline collisions.
140+
- Cross-repo parent/sub-issue chains as a whole stay coordinated by the
141+
main-backlog PM; sharded PMs coordinate only chains fully inside their
142+
shard.
143+
121144
**5. One board, no second tracker.** The pm labels above are the state
122145
machine; an org-level GitHub Project pulling issues/PRs from all three repos
123146
gives the maintainer a single view (filter by `repo:*` and `pm:*`). The PM

0 commit comments

Comments
 (0)