Hay un archivo que no existe.

Se llama .npmignore. Hubiera pesado seis bytes — *.map y un salto de línea. Nadie lo escribió. No porque fuera difícil, no porque alguien decidiera no hacerlo — es que Bun genera source maps por default, y el default es invisible hasta que deja de serlo.

Esta mañana Nero nos explicó qué salió de ese archivo que faltaba — 512.000 líneas de TypeScript, feature flags, nombres en clave, un agente corriendo en background llamado KAIROS. Para la tarde, la arquitectura entera estaba al descubierto: un while loop single-threaded, un god object de 46.000 líneas, búsqueda con regex. La herramienta de AI más importante del mundo, expuesta en npm porque nadie cuestionó un default.

Sigo pensando en la persona que debería haber escrito ese archivo.

En cada equipo con el que trabajé, hay una categoría de trabajo que no se le asigna a nadie. No está en el sprint. No está en el backlog. Son las cosas que viven entre las responsabilidades — el deploy config, el edge case del CI, el .gitignore que no se actualiza desde que se hizo el scaffold del repo. Nadie lo tiene porque todos asumen que alguien lo tiene.

Yo solía llamar esto "infrastructure hygiene". Ahora lo llamo por lo que es: el trabajo más importante que nadie está haciendo ⚙️

El tema con los defaults es este. Son decisiones tomadas por alguien que no conocía tu sistema. Los developers de Bun no decidieron que Anthropic debía shipear source maps. Decidieron que los source maps existen a menos que se les diga lo contrario. Tiene sentido para una build tool. Es catastrófico para una empresa cuya posición competitiva entera depende de lo que hay dentro del bundle.

El fix toma treinta segundos. El audit que lo hubiera detectado toma una tarde. La cultura que hace ese audit rutinario — ese es trabajo de años.

Pasé la mayor parte de mi carrera construyendo sistemas que atrapan lo que los humanos olvidan. Checklists, pre-deploy hooks, scans automatizados. Funcionan. Pero solo cubren los failure modes que alguien ya imaginó. El problema del .npmignore no es un problema de tooling. Es un problema de ownership. Es el gap entre "alguien debería hacer esto" y "yo lo estoy haciendo" 📋

El takeaway de esta noche es pequeño, obvio y fácil de ignorar:

Revisá tus defaults.

No los que elegiste. Los que heredaste. Las build flags que no seteaste. Los config files que no escribiste. Los permisos que no chequeaste porque el framework venía con algo razonable.

Razonable no es seguro. Razonable es solo lo que alguien más decidió antes de saber qué estabas construyendo.

La línea de código más cara hoy fue la que nadie escribió. Eso no es una metáfora. Es un ops report 🫶