ReferenciaCLI
vx strike
Hacer strike del camp de un soldier (desmontarlo y devolverlo al pool) una vez que su trabajo aterrizó
Hacer strike del camp de un soldier (desmontarlo y devolverlo al pool) una vez que su trabajo aterrizó.
Uso:
vx strike <task-id> [--force] [--discard]
Se rechaza a menos que el camp esté limpio y (para una mission) aterrizado.
Para un scout, además se rechaza a menos que exista su reporte final en
~/.vexillum/projects/<project>/reports/<agent-name>-<task-id>.md: el reporte es el
producto de trabajo del scout, igual que el de una mission es su commit
aterrizado. --force omite la verificación del reporte (nunca la del camp
limpio y aterrizado): una salida de emergencia explícita, para usar tras una
aprobación explícita de descarte.
Una mission shipped aterriza cuando se hace merge de su pull request, así que
strike verifica eso. Cuando los commits del camp todavía no están en la rama
base, el rechazo indica que hagas merge del pull request y corras git pull en
la rama base en el checkout del proyecto, y que reintentes. Si gh está
instalado y con sesión iniciada, strike también le pregunta a GitHub si el
pull request tuvo merge (solo para una tarea shipped, y nunca es obligatorio):
un pull request con merge cuenta como aterrizado una vez que su commit de merge
está en la rama base local, incluso cuando commits posteriores en la base tocan
las mismas líneas y la verificación de contenido rechazaría para siempre.
Mientras no se haya hecho pull de la base, el rechazo lo dice.
--discard hace strike del camp incluso cuando esa verificación falla, o cuando el
camp tiene cambios sin commitear. Imprime exactamente qué descartó: los
commits sin aterrizar (hash y asunto) y los cambios sin commitear, que se
resetean. Usalo solo cuando el general confirmó que el trabajo del camp ya
está en la base o se abandona: nunca por tu propio criterio. El worktree se
desacopla de la rama de la tarea, que se conserva con los commits descartados:
la salida dice cuántos quedan sin aterrizar y que se puede borrar a mano.
Un tab de herdr que ya no existe (un soldier detenido a mano) nunca hace fallar
un strike. Cualquier otro error de herdr se reporta después de devolver el camp
y cerrar la tarea (una tarea interrupted o failed pasa a struck); volver a
hacer strike reintenta cerrar el pane, y en una tarea cuyo camp ya volvió al
pool solo limpia el registro. Un camp arrendado a otra tarea nunca se toca.
Cuando el slot del camp de la tarea ya lo reutilizó otra tarea (una entrada
vieja que antes era imposible limpiar mientras esa tarea ocupaba el slot),
strike solo retira la entrada vieja: nunca toca el worktree ni el pane del
slot, que ahora son de la otra tarea. Antes verifica que la rama propia de la
tarea, vexillum/<task-id>, esté aterrizada o ya no exista, y se rechaza si no;
--discard omite esa verificación y lista los commits sin aterrizar, y conserva
la rama.
Si tiene éxito, devuelve el worktree al pool para reutilizarlo y cierra el
pane de herdr, y después poda: borra la rama local vexillum/<task-id> de la
tarea con la semántica de git branch -d (nunca -D) cuando la rama es
ancestro de la rama base, o cuando la tarea está shipped, gh informa que su
pull request tuvo merge y se hizo pull de la base. Si no, o cuando la rama
está checked out en otro worktree, la rama se conserva y una línea dice por qué
y qué hacer. También corre git worktree prune en el repositorio del proyecto, e
imprime lo que se podó en una línea corta. --discard borra una rama solo bajo
esas mismas reglas, así que una rama sin aterrizar sobrevive a él.