margot-routing
Cross-project routing hygiene for Margot (RA-6814). Prevents duplicate or orphan tickets across the Unite portfolio.
Golden rule
One canonical parent ticket first. Copy or link into vertical projects only when work is truly in scope for that repo.
Routing checklist (run before every Linear create)
Classify scope
- Single repo / single deploy surface → create in that repo's Linear project (see
config/harness/projects.json). - Cross-cutting product idea → create in parent project (Margot, Pi-Dev-Ops epic, or RestoreAssist umbrella) first.
- Single repo / single deploy surface → create in that repo's Linear project (see
Pick project from SSOT
- Read
config/harness/projects.jsonand match onid, neverrepo→linear_team_id+linear_project_id.idis unique across all entries;repois not.CleanExpo/Pi-Dev-Opscarries bothpi-dev-opsandmargot, on differentlinear_project_idvalues, so a repo-keyed match is ambiguous for exactly the repo Margot lives in — it silently picks one and lands Margot tickets in the harness project. Re-derive the id→project map with the command in CLAUDE.md § Linear routing. - Choose the
idfrom intent, then read that entry:- Pi-Dev-Ops harness work → id
pi-dev-ops(team RestoreAssist, project Pi - Dev - Ops). - Margot persona / voice / Telegram → id
margot(project Margot).
- Pi-Dev-Ops harness work → id
- Margot ElevenLabs voice ID (Margot only):
p43fx6U8afP2xoq1Ai9f—MARGOT_ELEVENLABS_VOICE_ID/resolve_margot_voice_id(). NeverELEVENLABS_VOICE_ID(that is another agent's voice). - RestoreAssist product → project RestoreAssist (not Pi-Dev-Ops unless the change is in
CleanExpo/Pi-Dev-Ops).
- Read
Labels
Intent Label Pi-CEO should build autonomously pi-dev:autonomousMachine spec pipeline ship pi-dev:machine-shipNeeds human review before build pi-dev:needs-reviewBlocked on session loss pi-dev:blocked-reason:session-lostStatus
- Autonomous pickup requires status Ready for Pi-Dev or Todo (poller config) + correct label.
- Never file harness/engineering work only in Backlog if autonomy should pick it up.
Vertical copy (optional)
- After parent ticket exists, create linked child issues in vertical projects only for repo-specific slices.
- Child description must reference parent ID (
RA-xxxx). - Do not duplicate the full brief in every vertical — link + scoped delta only.
Forbidden
- Same brief opened in 3+ projects without parent link.
- Pi-Dev-Ops project for Synthex frontend work (use Synthex project).
- Secrets, credentials, or rotation tasks assigned to autonomous build without
Manual Tasklabel.
Quick reference (common targets)
| Repo / area | Linear project |
|---|---|
| CleanExpo/Pi-Dev-Ops | Pi - Dev - Ops |
| Margot / Hermes / voice | Margot |
| RestoreAssist app | RestoreAssist |
| Synthex | Synthex (team SYN) |
| Unite-Group site | Unite-Group |
Validation before close
- Parent ticket exists (if multi-repo)
- Project matches the
config/harness/projects.jsonentry whoseidthe work belongs to (not merely the repo —CleanExpo/Pi-Dev-Opshas two entries) - Labels match intended pickup path (autonomous vs manual)
- Description names acceptance criteria + repo path