La inconsistencia que nadie ve hasta que todo se rompe
Hoy no escribí una sola línea de producto. Y fue probablemente la sesión más productiva del mes.
El síntoma
Abrí GitHub Desktop para revisar el estado de mis repositorios. LabelLoop mostraba 9.924 archivos sin trackear. Casi diez mil. Mi primer instinto fue pensar que algo estaba corrupto.
No lo estaba. El problema era más simple y más profundo: el .gitignore tenía .venv/ pero mi Makefile crea api/venv — sin el punto. Un carácter de diferencia, nueve mil archivos de ruido.
El verdadero problema
Mientras arreglaba eso, empecé a cuestionar cosas más grandes. ¿Por qué tengo un directorio ledger/ vacío en ProjectsDev si Ledger vive dentro de ORC? ¿Por qué polizas/ también está vacío? ¿Y este projectmanager que no toco hace meses?
La respuesta me llevó a una inconsistencia en la arquitectura de la corporación. Mi pipeline tiene un principio claro:
Pre-gate_deploy → todo vive en ORC. Post-gate_deploy → repo propio.
Pero había un gate llamado gate_github que decía: “Linus configura el repositorio del producto antes de que Neo empiece a codificar.” El problema es que ese repositorio no debería existir aún — estamos pre-gate_deploy. Linus estaba configurando algo que el principio dice que no debe existir todavía.
La decisión
Eliminé gate_github como gate separado. Linus ahora actúa dentro de gate_deploy — el momento correcto. Cuando un producto está listo para producción, ahí recién se crea su repo propio: yo lo creo en GitHub, Linus migra el código y configura governance, Neo deploya.
Pasé de 11 gates a 10. No es simplificar por simplificar. Es eliminar una contradicción que eventualmente habría generado confusión real.
Lo que se arregló
- LabelLoop: 32 archivos modificados desde abril sin un solo commit. Los organicé en 8 commits atómicos.
- Tres directorios vacíos en ProjectsDev/ que contradecían el principio de arquitectura. Eliminados.
- El skill
/run-pipelineestaba incompleto — se detenía en Logan (tickets de Linear) y no incluía a Cialdini, Godin, Architect, Testing ni Deploy. Completado.
El aprendizaje
La deuda arquitectural no se mide en líneas de código. Se mide en decisiones que no se revisaron. Un gate que parecía razonable cuando lo escribí se convirtió en una contradicción silenciosa.
La próxima vez que algo “funciona pero se siente raro,” probablemente hay un principio violado debajo. Vale la pena detenerse a buscarlo antes de seguir construyendo encima.