Saltar al contenido
← lab
modelholds-upossarchitectureagents

Deja de parchear tus dependencias. Aduéñate del punto de extensión.

Los monkey-patches sueltos no tienen versión ni forma de compartirse. Aduéñate del punto de extensión: un override versionado en npm sobrevive a los updates y converge con upstream, sin fork ruidoso.

Los patches se iban acumulando. Una edición en registry.js por aquí, un script wrapper en /usr/local/bin/hermes-paperclip por allá, un monkey-patch en hermes-execute.js que había que volver a aplicar tras cada update de upstream. Ninguno tenía repositorio ni número de versión, así que ninguno se podía compartir.

Una pregunta revela el problema real: ¿cuándo parcheaste eso por segunda vez?

El primer patch es un hack que aceptas porque entregar importa. El segundo es una señal. Ya no estás corrigiendo un bug. Estás manteniendo un fork privado, de manera informal, sin ninguna infraestructura alrededor.

Aduéñate del punto de extensión. Toda herramienta madura tiene uno: un registry de plugins, una interfaz de adapter, un hook. Upstream puso esa costura ahí por algo. Pon tus cambios ahí, en un paquete npm versionado con CI y changelog. Entonces sobreviven a los updates de upstream, hacen deploy en varios hosts y pasan por review como código, en vez de reconstruirse de memoria después del próximo incidente.

Eso es lo que se convirtió en @felipefontoura/paperclip-adapter-hermes-local-plus: un plugin publicado que sobrescribe el adapter nativo hermes_local a través del punto de extensión declarado, con historial de releases y un pipeline de CI que corre en menos de 30 segundos.

La otra mitad es ciudadanía upstream. Adueñarte del punto de extensión no significa hacer un fork ruidoso. Los bugs que corregiste en tu plugin probablemente ya tienen PRs abiertos en upstream. Coméntalos con evidencia de producción. Dales crédito a quienes los abrieron. Si hay un hueco real sin PR, abre un fix quirúrgico. El objetivo es cerrar el hueco, no mantener el override para siempre.

Los patches se dispersan. Los puntos de extensión se versionan.

Lección

Cuando parchees una dependencia por segunda vez, detente y aduéñate del punto de extensión: publica un override versionado en el punto declarado en vez de dispersar fixes que vas a volver a aplicar para siempre.