Worktrunk: árboles paralelos, ciclo de vida y análisis del código
Operar Worktrunk con seguridad: hooks, diferencias confidenciales y eliminación
Examina permisos reales, flujo opcional hacia modelos y límites de recuperación antes de automatizar fusiones o limpieza.
Qué aprenderás
- La aprobación no es aislamiento ni firma de contenido
- La generación opcional puede enviar información del código
- La ubicación temporal de basura no es una copia de seguridad
Antes de empezar
- Ramas Git y navegación básica por terminal
- Un repositorio desechable para ejercicios opcionales
Explicar límites del árbol, verificar un primer checkout y revisar comandos antes de automatizar.
Conclusiones clave
- Una plantilla aprobada puede ejecutar código posteriormente modificado.
- Un generador alojado puede recibir diferencias confidenciales.
- La basura intermedia no sustituye una política de respaldo.
La aprobación no es aislamiento ni firma de contenido
Un hook del proyecto es un comando de terminal con la autoridad de la cuenta que lo invoca. La aprobación establece consentimiento, no aislamiento del sistema operativo. Un comando de pruebas conocido puede invocar scripts modificados en otra revisión. Cuando cambie el contexto de confianza, revisa tanto configuración como scripts referenciados.
Los hooks personales siguen otra ruta de aprobación y los patrones manuales pueden abarcar varios repositorios. Inspecciona ambas fuentes antes de considerar inerte un checkout nuevo. No uses --yes por defecto en proyectos desconocidos. Un árbol distinto no aísla credenciales, acceso de red ni el resto del sistema de archivos.
La generación opcional puede enviar información del código
La función documentada construye un prompt y lo entrega por entrada estándar a un comando externo. Si este llama a un modelo alojado, las diferencias pueden salir de la máquina. Revisa prompt, contenido seleccionado y condiciones del proveedor antes de habilitarlo para código confidencial. Ejecutar un comando local no implica inferencia exclusivamente local.
No uses credenciales de producción en hooks de prueba y trabaja con datos desechables. Ante un fallo de inicio, consulta el registro y distingue tareas bloqueantes de tareas en segundo plano. Que termine el comando principal no demuestra que todos los procesos hayan terminado correctamente. Asigna responsables para servidores y recursos externos creados por hooks.
La ubicación temporal de basura no es una copia de seguridad
La documentación fijada describe una retirada en segundo plano que puede mover el árbol a .git/wt/trash y borrarlo mediante otro proceso, con una alternativa entre sistemas de archivos. Esa ubicación intermedia no garantiza una ventana de recuperación. Conserva el trabajo importante antes de retirar; no dependas de copiarlo más rápido que el proceso de limpieza.
Las opciones de fuerza tienen objetivos diferentes: --force afecta al árbol con cambios sin commit y -D a una rama sin fusionar. Ninguna pertenece a un ejemplo inicial sin explicación. Comprueba rama, ruta, estado y política de conservación. Consulta registros y estado final de Git y archivos; el retorno del comando no demuestra que la limpieza asíncrona haya concluido.
Cómo elegir
| Criterio | Opción A | Opción B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Pasos de implementación
- 1
Revisa plantillas y scripts referenciados.
- 2
Traza los comandos que reciben contenido del código.
- 3
Registra rama, ruta y trabajo preservado antes de limpiar.
- 4
Verifica registros y estado final tras operaciones asíncronas.
Ejemplo para copiar
{
"beforeRemoval": {
"exactBranch": null,
"exactPath": null,
"workingTreeReviewed": false,
"importantWorkPreserved": false,
"branchRetentionDecided": false
},
"removalExecuted": false
}Preguntas frecuentes
¿Aprobar garantiza que el hook sea seguro?
No. Registra consentimiento sobre una plantilla, no una auditoría completa de todo lo accesible para el comando.
¿Puedo recuperar luego los archivos desde trash?
No dependas de ello: la limpieza documentada elimina esa ubicación intermedia.
Fuentes
- Worktrunk / docs/src/content/docs/hook.mdFuente verificada 2026-09-14
- Worktrunk / docs/src/content/docs/llm-commits.mdFuente verificada 2026-09-14
- Worktrunk / docs/src/content/docs/remove.mdFuente verificada 2026-09-14
- Worktrunk / src/config/approvals.rsFuente verificada 2026-09-14