Promover mi worktree

Mergea orch/<session> en la rama base — falla cerrado ante conflictos, y nunca hace push por ti.

Prompt#

La rama del worker se ve bien — promueve su worktree a main.

Qué hace el Chair#

Lista los worktrees de sesión y mergea el que nombres en la rama base del proyecto. Se detiene en el primer conflicto y nunca hace push.

Llamadas MCP#

Mira antes de mergear:

worktree_status({ "project": "billing" })

Después promueve:

worktree_promote({
  "session":  "task-42",
  "project":  "billing",
  "base":     "main",
  "strategy": "merge"
})

Y limpia lo que ya no apunta a nada:

worktree_prune({ "project": "billing" })

Equivalentes en CLI: orch worktree status, orch worktree promote <session>, orch worktree prune, orch worktree base.

Respuesta esperada#

worktree_status devuelve una lista JSON con banderas dirty y orphan por worktree. worktree_promote devuelve el resultado en JSON. Ante un conflicto devuelve un error que nombra los archivos en conflicto — no queda nada a medio mergear ni nada commiteado por ti.

Trampas#

  • session es obligatorio. project, base y strategy son opcionales; base cae a ORCH_GIT_BASE, luego a main o master (orch worktree base imprime lo que resolvió).
  • Fallar cerrado es fallar cerrado. Un conflicto es un error con nombres de archivo, no un merge con marcadores adentro. Resuélvelo en el worktree y promueve de nuevo.
  • Nunca hay push automático. La promoción aterriza en tu rama base local. Hacer push es decisión de una persona y orch no la toma.
  • Revisa verification antes de promover. El resultado de dispatch_worker / task_run y task_list lo traen; verify_status({"session": "task-42"}) lo lee aparte. Un worker que nunca llamó verify_report deja todos los criterios de aceptación como no cumplidos — a propósito.
  • Si promueves un worktree sucio, promueves solo la mitad commiteada. Los cambios sin commit se quedan donde están; worktree_status los marca dirty justo por eso.
  • worktree_prune solo borra huérfanos — directorios y ramas orch/* a los que nada apunta. Es la llamada segura para hacer primero.
  • Un Chair por proyecto git. N repos son N entradas de orch project add, topadas por orch.projects.max de tu plan; entitlements_status te dice el tope.