<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Raúl González (rafex)</title>
    <description>The latest articles on DEV Community by Raúl González (rafex) (@rafex).</description>
    <link>https://dev.to/rafex</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3792431%2F081c96f3-b32d-46e9-bfd7-1ed950cc2773.jpg</url>
      <title>DEV Community: Raúl González (rafex)</title>
      <link>https://dev.to/rafex</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rafex"/>
    <language>en</language>
    <item>
      <title>Autoría, inteligencia artificial y del dominio público a la originalidad: lo que realmente resolvió el AD 6/2025</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Mon, 01 Jun 2026 02:10:56 +0000</pubDate>
      <link>https://dev.to/rafex/autoria-inteligencia-artificial-y-del-dominio-publico-a-la-originalidad-lo-que-realmente-resolvio-3eik</link>
      <guid>https://dev.to/rafex/autoria-inteligencia-artificial-y-del-dominio-publico-a-la-originalidad-lo-que-realmente-resolvio-3eik</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"…el argumento jurídico más importante que nadie discutió: la sentencia terminó desplazando el debate desde la autoría hacia la propia noción de originalidad."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El &lt;strong&gt;Amparo Directo 6/2025&lt;/strong&gt; de la Suprema Corte de Justicia de la Nación fue presentado por la mayoría de los medios como un asunto simple: &lt;strong&gt;la inteligencia artificial no puede ser autora&lt;/strong&gt;. Correcto, pero incompleto. Una lectura del expediente completo —tanto del proyecto de sentencia como del engrose definitivo— revela &lt;strong&gt;dos conversaciones distintas&lt;/strong&gt;: la que se publicó antes de la sesión y la que realmente quedó en la &lt;strong&gt;resolución vinculante&lt;/strong&gt;. Y en la diferencia entre ambas está el &lt;strong&gt;argumento jurídico más importante que nadie discutió&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Lo que circuló en los medios: el dominio público de toda obra generada con IA
&lt;/h2&gt;

&lt;p&gt;Antes de la sesión del 2 de julio de 2025, la SCJN publicó el proyecto de sentencia —un documento de trabajo que no constituye resolución vinculante. En ese proyecto, la Segunda Sala incluyó los siguientes párrafos:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“100. Por lo tanto, el producto de la IA es una extensión de la capacidad creativa de la humanidad. Por ello, &lt;strong&gt;lo realizado por la IA no es susceptible de registro y, en consecuencia, dichos productos pasan al dominio público&lt;/strong&gt; con el fin de que se difundan gratuitamente sobre todo si el producto puede beneficiar a toda la humanidad.”&lt;/p&gt;

&lt;p&gt;“101. &lt;strong&gt;En conclusión, los productos de la IA son de dominio público&lt;/strong&gt; por no ser una obra original y, en consecuencia, no son registrables ya que se basan en conocimientos previos que tiene en su conjunto la humanidad.”&lt;/p&gt;

&lt;p&gt;“102. Lo anterior, no significa que no pueda registrarse los software o los programas informáticos por los cuales se crea una IA... no menos cierto es que el hecho de pagar por esta, no significa que los 'productos' obtenidos como resultado de su empleo pasen a ser propiedad del suscriptor, sino que siguen siendo estos de dominio público.”&lt;/p&gt;

&lt;p&gt;“103. ...aquellos 'productos' emitidos como resultado de la implementación, uso o aprovechamiento de la IA, con independencia de si se paga por obtener un beneficio mayor para su aprovechamiento, &lt;strong&gt;pasan a ser de dominio público&lt;/strong&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esos párrafos generaron titulares inmediatos. La narrativa que circuló fue: &lt;em&gt;la Corte declaró que todo lo creado con IA es dominio público&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Hay un problema con eso.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. El matiz que los medios omitieron: proyecto ≠ engrose firmado
&lt;/h2&gt;

&lt;p&gt;El documento que contiene los párrafos 100 a 103 es el &lt;strong&gt;proyecto de sentencia&lt;/strong&gt; (&lt;code&gt;scjn-ad-6-2025.pdf&lt;/code&gt;), el borrador que se publica antes de la discusión en sesión para transparencia. &lt;strong&gt;No es la resolución&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La &lt;strong&gt;sentencia definitiva&lt;/strong&gt; —el engrose firmado (&lt;code&gt;2_346361_7265_firmado.pdf&lt;/code&gt;)— es el &lt;strong&gt;documento vinculante&lt;/strong&gt;. Y ese engrose &lt;strong&gt;termina en el párrafo 85&lt;/strong&gt;, antes de cualquier mención al dominio público.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Los párrafos 100 a 103 simplemente no existen en la resolución obligatoria.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Esto no es un tecnicismo menor. En el derecho mexicano, el proyecto es un insumo de deliberación; el engrose es la ley del caso. Lo que no quedó en el engrose no puede invocarse como precedente ni como criterio jurisprudencial.&lt;/p&gt;

&lt;p&gt;Por eso la pregunta correcta no es &lt;em&gt;”¿qué dijo el proyecto?”&lt;/em&gt; sino &lt;em&gt;”¿qué resolvió la Corte?”&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Lo que sí resolvió la Corte: tres conclusiones que sí quedaron
&lt;/h2&gt;

&lt;p&gt;El engrose del AD 6/2025 establece tres cosas con claridad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primera.&lt;/strong&gt; La IA no puede ser autora. El artículo 12 de la LFDA es explícito: &lt;em&gt;”Autor es la persona física que ha creado una obra literaria y artística.”&lt;/em&gt; La Corte confirmó que esa definición excluye a cualquier ente artificial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Segunda.&lt;/strong&gt; La IA no puede ser titular de derechos morales. El artículo 18 de la LFDA reserva esa titularidad al autor como persona física. Los derechos morales son personalísimos, irrenunciables e inalienables —atributos que no pueden predicarse de un sistema computacional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tercera.&lt;/strong&gt; El caso concreto tenía un planteamiento muy específico. El propio promovente reconoció ante el INDAUTOR que &lt;em&gt;”la inteligencia artificial fue quien tuvo la capacidad de tomar la decisión en realizar la actividad creativa”&lt;/em&gt; y solicitó expresamente los derechos morales &lt;strong&gt;para la IA&lt;/strong&gt;, reservando para sí únicamente los derechos patrimoniales:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Derecho solicitado&lt;/th&gt;
&lt;th&gt;Titular propuesto&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Derechos morales&lt;/td&gt;
&lt;td&gt;Inteligencia Artificial Leonardo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Derechos patrimoniales&lt;/td&gt;
&lt;td&gt;Gerald García Báez&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La controversia no era &lt;em&gt;”¿puede una persona registrar una obra asistida por IA?”&lt;/em&gt; Sino &lt;em&gt;”¿puede una IA ser reconocida como autora y titular de derechos morales?”&lt;/em&gt; Esa pregunta, con ese planteamiento, tiene una respuesta legal clara en México: no.&lt;/p&gt;

&lt;p&gt;Hasta aquí, la resolución es sólida. El problema empieza cuando se avanza un paso más.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. El problema jurídico real: &lt;strong&gt;&lt;code&gt;originalidad = creación humana&lt;/code&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Dentro del engrose sí quedó un razonamiento que &lt;strong&gt;merece análisis cuidadoso&lt;/strong&gt;. La Corte &lt;strong&gt;no se limitó a decir que la IA no puede ser autora&lt;/strong&gt; —fue más lejos al &lt;strong&gt;abordar el concepto mismo de originalidad&lt;/strong&gt;. En los párrafos 43 y 44 del engrose, la Segunda Sala valida el argumento del TFJA en estos términos:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“43. La Sala Especializada en Materia de Propiedad Intelectual del TFJA, mencionó que, conforme al artículo 3o. de la LFDA, &lt;strong&gt;se exige el requisito de originalidad para registrar una obra, la cual deriva por la creatividad humana y no a partir de una inteligencia artificial&lt;/strong&gt;. Por ende, la Sala señaló que la generación del contenido artificial, como el diseño de la representación gráfica asociada que el actor pretendió registrar, &lt;strong&gt;no es producto de una creación humana&lt;/strong&gt;, por lo que no se cumplió con las condiciones exigidas por la ley en la materia.”&lt;/p&gt;

&lt;p&gt;“44. De lo anterior se desprende que, como refirió la Sala responsable, &lt;strong&gt;la obra no fue generada por un ser humano, por lo que no tiene condiciones para calificar su originalidad&lt;/strong&gt; y, por ende, no puede ser reconocida para efecto de registro ante el INDAUTOR.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ahí está la ecuación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ sin creación humana → ❌ sin originalidad posible → ❌ sin obra protegible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;El problema es que esa ecuación no está escrita en la ley.&lt;/strong&gt; Veamos los dos artículos por separado:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artículo 12 LFDA&lt;/strong&gt; — &lt;em&gt;”Autor es la persona física que ha creado una obra literaria y artística.”&lt;/em&gt;&lt;br&gt;
→ Regula quién puede ser &lt;strong&gt;autor&lt;/strong&gt;. Requisito: persona física.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artículo 3 LFDA&lt;/strong&gt; — &lt;em&gt;”Las obras protegidas por esta Ley son aquellas de **creación original&lt;/em&gt;* susceptibles de ser divulgadas o reproducidas en cualquier forma o medio.”*&lt;br&gt;
→ Regula qué es una &lt;strong&gt;obra protegible&lt;/strong&gt;. Requisito: creación original. La LFDA no contiene una definición legislativa expresa de originalidad que equipare dicho concepto con la ausencia de herramientas de inteligencia artificial. Tampoco contiene una disposición que establezca que el uso de inteligencia artificial excluye por sí mismo la originalidad de una obra.&lt;/p&gt;

&lt;p&gt;La sentencia parece &lt;strong&gt;trasladar al concepto de originalidad&lt;/strong&gt; el &lt;strong&gt;requisito de creatividad humana&lt;/strong&gt; que explícitamente aparece en el régimen de autoría, aunque &lt;strong&gt;sin desarrollar una metodología&lt;/strong&gt; para determinar cuándo una intervención humana resulta suficiente dentro de procesos creativos asistidos por inteligencia artificial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Esa lectura tiene consecuencias que van mucho más allá del caso concreto&lt;/strong&gt;, porque &lt;strong&gt;la Corte no estableció ningún umbral&lt;/strong&gt;: no hay criterio para medir cuánta intervención humana es suficiente para que una obra sea "original" en el sentido del artículo 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Las preguntas que siguen abiertas
&lt;/h2&gt;

&lt;p&gt;Si la ecuación &lt;strong&gt;&lt;code&gt;originalidad = creación humana&lt;/code&gt;&lt;/strong&gt; queda como &lt;strong&gt;criterio orientador&lt;/strong&gt;, surgen &lt;strong&gt;preguntas que el AD 6/2025 no responde&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿La Corte está hablando de IA o de autonomía creativa?&lt;/strong&gt; Porque el caso concreto no es realmente: uso de IA sino delegación de la creatividad a la IA. Eso es diferente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué pasa con las obras asistidas por IA?&lt;/strong&gt; Una fotografía seleccionada y editada por un humano usando herramientas generativas. Una composición musical donde la IA propone acordes y el músico elige, descarta, reordena. Un guion escrito con sugerencias de un modelo de lenguaje que el autor acepta, rechaza y transforma. ¿Dónde termina la “creatividad humana” suficiente?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Puede el Estado presumir ausencia de creatividad humana por el solo uso de IA?&lt;/strong&gt; La LFDA no excluye herramientas tecnológicas del proceso creativo. Un fotógrafo usa cámaras, un músico usa DAWs, un diseñador usa Photoshop, un programador usa compiladores. La pregunta jurídica históricamente ha sido sobre la &lt;strong&gt;aportación creativa&lt;/strong&gt;, no sobre el instrumento. Si la Corte desplaza esa pregunta hacia la naturaleza de la herramienta, cambia el estándar sin que el legislador lo haya ordenado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Quién tiene la carga de probar la intervención humana?&lt;/strong&gt; El engrose no lo dice. Si la presunción futura es que toda obra con IA es no-original, la carga recaería en el creador. Si la presunción es la contraria, recaería en quien impugna. Esa asignación no es neutra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Necesita actuar el legislador o puede la jurisprudencia desarrollar el umbral?&lt;/strong&gt; El AD 6/2025 resolvió un caso extremo —donde el propio promovente cedió la creatividad a la máquina. No resolvió los casos intermedios. Y esos casos intermedios son los que hoy tienen relevancia práctica para millones de creadores.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;La dificultad es que el engrose nunca explica cómo debe evaluarse la creatividad humana cuando ésta existe, pero convive con herramientas de inteligencia artificial dentro del mismo proceso creativo.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Porque &lt;strong&gt;hoy prácticamente todas las herramientas creativas ya tienen IA integrada&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  ¿Qué hacer hoy?
&lt;/h3&gt;

&lt;p&gt;Mientras el debate jurídico evoluciona, &lt;strong&gt;la medida más concreta disponible es documentar el proceso creativo desde el inicio&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Historial de versiones&lt;/strong&gt; (Git, commits, snapshots)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompts, iteraciones y resultados descartados&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archivos fuente&lt;/strong&gt; (PSD, Krita, Blender, DAW, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capturas del proceso creativo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registro de decisiones artísticas&lt;/strong&gt; y selección de resultados&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Si el argumento jurídico que finalmente prospere es que hay originalidad cuando hay contribución creativa humana demostrable, esa evidencia será lo que distinja una obra protegible de una que no lo es.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El AD 6/2025 resolvió correctamente que &lt;strong&gt;una inteligencia artificial no puede ser autora&lt;/strong&gt; bajo el marco legal vigente. Sin embargo, &lt;strong&gt;el verdadero desafío jurídico no está en las obras creadas exclusivamente por sistemas de IA&lt;/strong&gt;, sino &lt;strong&gt;en las obras creadas por personas que utilizan inteligencia artificial como herramienta&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La pregunta relevante para el futuro del derecho de autor mexicano &lt;strong&gt;ya no es si una máquina puede ser autora&lt;/strong&gt;. &lt;strong&gt;La pregunta es cómo identificar, medir y acreditar la contribución creativa humana&lt;/strong&gt; dentro de procesos de creación cada vez más asistidos por sistemas automatizados.&lt;/p&gt;

&lt;p&gt;Esa cuestión &lt;strong&gt;permanece abierta&lt;/strong&gt;. Y probablemente será &lt;strong&gt;mucho más importante para los creadores mexicanos&lt;/strong&gt; que la controversia específica que dio origen al &lt;strong&gt;Amparo Directo 6/2025&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que este caso no resolvió
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Este caso no era una obra asistida por IA."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El &lt;strong&gt;propio promovente sostuvo&lt;/strong&gt; que la &lt;strong&gt;actividad creativa correspondía a la IA&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por ello, &lt;strong&gt;la sentencia no analizó obras híbridas ni obras asistidas por inteligencia artificial&lt;/strong&gt; en las que una persona física conserve la dirección creativa principal.&lt;/p&gt;




&lt;h3&gt;
  
  
  Referencias
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://transparencia-ciudadana.scjn.gob.mx/sites/default/files/page/2025-08/scjn-ad-6-2025.pdf" rel="noopener noreferrer"&gt;SCJN Amparo Directo 6/2025 — Proyecto de sentencia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www2.scjn.gob.mx/juridica/engroses/2/2025/1/2_346361_7265_firmado.pdf" rel="noopener noreferrer"&gt;SCJN Amparo Directo 6/2025 — Engrose firmado&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gob.mx/cultura/prensa/indautor-reconoce-la-decision-de-la-suprema-corte-de-justicia-de-la-nacion-sobre-el-registro-de-obras-creadas-con-ia" rel="noopener noreferrer"&gt;INDAUTOR reconoce la decisión de la SCJN sobre el registro de obras creadas con IA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.diputados.gob.mx/LeyesBiblio/pdf/LFDA.pdf" rel="noopener noreferrer"&gt;Ley Federal del Derecho de Autor (LFDA)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mx</category>
      <category>scjn</category>
    </item>
    <item>
      <title>Programando con Agentes de IA</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Sun, 31 May 2026 17:21:41 +0000</pubDate>
      <link>https://dev.to/rafex/programando-con-agentes-de-ia-ai4</link>
      <guid>https://dev.to/rafex/programando-con-agentes-de-ia-ai4</guid>
      <description>&lt;h1&gt;
  
  
  La ironía de la IA: los programadores tendremos que hacer justo lo que menos nos gustaba
&lt;/h1&gt;

&lt;p&gt;Durante años existió una especie de consenso silencioso entre muchos desarrolladores: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentar era aburrido &lt;/li&gt;
&lt;li&gt;Escribir pruebas era algo que se hacía cuando había tiempo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;La parte divertida era construir funcionalidades. Crear productos. Resolver problemas. Escribir código.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Las dos habilidades que más valor están ganando son precisamente documentar y escribir pruebas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Cuando el programador era la memoria del sistema
&lt;/h2&gt;

&lt;p&gt;Durante décadas gran parte del conocimiento de los proyectos vivía dentro de las cabezas de los desarrolladores. Y actualmente sigue siendo así en casos concretos, ejemplo COBOL.&lt;/p&gt;

&lt;p&gt;Sabíamos...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;...por qué una función estaba escrita de cierta manera.&lt;/li&gt;
&lt;li&gt;...qué endpoints no se debían tocar.&lt;/li&gt;
&lt;li&gt;...qué módulo era delicado.&lt;/li&gt;
&lt;li&gt;...cuáles eran las reglas de negocio que nunca aparecían en ningún documento.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El problema es que ese conocimiento no escala ni para equipos ni para agentes.&lt;/p&gt;

&lt;h2&gt;
  
  
  La IA no puede leer tu mente
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Los agentes actuales son impresionantes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Claude Code, OpenCode, Codex, Cursor&lt;/em&gt; y otras herramientas pueden &lt;strong&gt;generar miles de líneas de código en minutos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pero tienen una limitación fundamental:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No pueden leer la mente del equipo.&lt;/li&gt;
&lt;li&gt;No conocen las decisiones arquitectónicas que se tomaron hace dos años.&lt;/li&gt;
&lt;li&gt;No saben qué convenciones son obligatorias.&lt;/li&gt;
&lt;li&gt;No entienden qué partes del sistema son especialmente sensibles (para el negocio).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solo conocen el contexto que les proporcionamos: Por eso la documentación deja de ser un lujo y se convierte en infraestructura. &lt;em&gt;Ya no documentamos únicamente para futuros desarrolladores.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Documentamos para los agentes que están generando código hoy.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  El surgimiento de una nueva documentación
&lt;/h2&gt;

&lt;p&gt;No es casualidad que estén apareciendo estándares como AGENTS.md o propuestas más completas como Agent OS.&lt;/p&gt;

&lt;p&gt;Ambos parten de la misma idea: proporcionar contexto estructurado para que los agentes trabajen de forma consistente dentro de un proyecto.&lt;br&gt;
La documentación ya no sirve solamente para onboarding o transferencia de conocimiento.&lt;br&gt;
Ahora también sirve para guiar a los agentes que generan código.&lt;/p&gt;

&lt;p&gt;Lo interesante es que estas iniciativas &lt;em&gt;no intentan enseñar a programar a la IA&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intentan enseñarle cómo programamos nosotros.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  La documentación se convierte en contexto ejecutable
&lt;/h2&gt;

&lt;p&gt;Antes un documento podía quedar olvidado durante meses sin generar grandes problemas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ahora una buena documentación puede influir directamente en miles de líneas de código generadas por IA.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;La documentación dejó de ser pasiva.&lt;/em&gt; &lt;strong&gt;Se convirtió en una herramienta operativa.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Los tests también cambiaron de función
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Los tests protegen conocimiento del negocio cuando la IA modifica el código.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  El nuevo perfil del desarrollador
&lt;/h2&gt;

&lt;p&gt;La programación no está desapareciendo.&lt;/p&gt;

&lt;p&gt;Está evolucionando.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cada vez dedicaremos menos tiempo a escribir código repetitivo y más tiempo a definir contexto, reglas, restricciones y criterios de aceptación.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En otras palabras:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Menos tiempo escribiendo implementaciones.&lt;/li&gt;
&lt;li&gt;Más tiempo describiendo sistemas.&lt;/li&gt;
&lt;li&gt;Menos tiempo creando funciones.&lt;/li&gt;
&lt;li&gt;Más tiempo definiendo comportamientos.&lt;/li&gt;
&lt;li&gt;Menos tiempo produciendo código.&lt;/li&gt;
&lt;li&gt;Más tiempo produciendo conocimiento.&lt;/li&gt;
&lt;li&gt;Más tiempo validando.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Ejemplos:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Usa TypeScript strict
&lt;span class="p"&gt;-&lt;/span&gt; No uses any
&lt;span class="p"&gt;-&lt;/span&gt; Ejecuta tests antes de cada PR
&lt;span class="p"&gt;-&lt;/span&gt; Nunca usar float para cálculos monetarios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// implementación...&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Decimal&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;decimal.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateTotal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Decimal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Decimal&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Decimal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;plus&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// test&lt;/span&gt;

&lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;does not allow withdrawing more money than the available balance&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;withdraw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;toThrow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;InsufficientFundsError&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;"Porque escribir código ya no es el recurso más escaso. La claridad sí."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencias
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AGENTS.md: &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;https://agents.md/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent OS: &lt;a href="https://buildermethods.com/agent-os" rel="noopener noreferrer"&gt;https://buildermethods.com/agent-os&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>dev</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Claude Code Leak: cuando el hype supera a la ingeniería</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Wed, 01 Apr 2026 18:55:54 +0000</pubDate>
      <link>https://dev.to/rafex/claude-code-leak-cuando-el-hype-supera-a-la-ingenieria-4mo0</link>
      <guid>https://dev.to/rafex/claude-code-leak-cuando-el-hype-supera-a-la-ingenieria-4mo0</guid>
      <description>&lt;p&gt;El día de ayer circularon titulares alarmantes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Se filtraron más de 500 000 líneas del código de Claude Code”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sin embargo, al analizar el incidente con calma, la realidad es mucho menos dramática.&lt;br&gt;
Lo que realmente se publicó por error fue un &lt;strong&gt;source map&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Y el código funcional ya estaba &lt;strong&gt;disponible&lt;/strong&gt; en el paquete &lt;strong&gt;npm&lt;/strong&gt; del proyecto.&lt;/p&gt;


&lt;h2&gt;
  
  
  1️⃣ El punto de partida: el bundle JS ya estaba público
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@anthropic-ai/claude-code" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@anthropic-ai/claude-code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anthropics/claude-code" rel="noopener noreferrer"&gt;https://github.com/anthropics/claude-code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si el paquete npm ya incluía el &lt;strong&gt;bundle JS&lt;/strong&gt;, entonces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La lógica del programa ya estaba disponible.&lt;/li&gt;
&lt;li&gt;Cualquiera podía analizarlo con:

&lt;ul&gt;
&lt;li&gt;deobfuscadores&lt;/li&gt;
&lt;li&gt;herramientas AST&lt;/li&gt;
&lt;li&gt;agentes LLM&lt;/li&gt;
&lt;li&gt;ingeniería inversa clásica.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En otras palabras:&lt;/p&gt;

&lt;p&gt;El bundle JS ya contiene la lógica ejecutable del programa.&lt;/p&gt;

&lt;p&gt;El &lt;strong&gt;.map no agrega lógica nueva&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Solo agrega:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nombres originales&lt;/li&gt;
&lt;li&gt;estructura de archivos&lt;/li&gt;
&lt;li&gt;comentarios&lt;/li&gt;
&lt;li&gt;metadata de compilación.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Por lo tanto no revela funcionalidad que no estuviera ya ahí.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🧪 Ejemplo simple: cómo funciona un source map
&lt;/h2&gt;

&lt;p&gt;Para entender por qué el &lt;code&gt;.map&lt;/code&gt; no contiene lógica nueva, veamos un ejemplo mínimo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Código original (TypeScript)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Código compilado/minificado (JavaScript distribuido)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Este es el código que normalmente termina dentro del &lt;strong&gt;bundle publicado en npm&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Archivo source map (simplificado)
&lt;/h3&gt;

&lt;p&gt;Un &lt;code&gt;.map&lt;/code&gt; contiene información que permite relacionar el bundle con el código original:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sources"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"src/math.ts"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"names"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"sum"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mappings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AAAA,SAASA,IAAIC,EAAGC..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ese archivo indica cosas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qué archivo original generó ese código&lt;/li&gt;
&lt;li&gt;cómo se llamaban realmente las funciones&lt;/li&gt;
&lt;li&gt;qué variables corresponden a qué posiciones en el bundle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Con esa información una herramienta puede hacer esto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle.js + bundle.js.map
        ↓
reconstruir
        ↓
src/math.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pero observa algo importante:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La lógica (&lt;code&gt;return a + b&lt;/code&gt;) ya estaba en el bundle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El source map solo permite reconstruir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nombres originales&lt;/li&gt;
&lt;li&gt;estructura de archivos&lt;/li&gt;
&lt;li&gt;posiciones de código&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No añade &lt;strong&gt;comportamiento nuevo&lt;/strong&gt; al programa.&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ Lo que realmente aporta el .map: información para humanos
&lt;/h2&gt;

&lt;p&gt;Esto es clave:&lt;/p&gt;

&lt;p&gt;&lt;u&gt;los nombres y comentarios son para humanos&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Un agente puede inferir cosas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;){...}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ inferir que probablemente es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;executeAgentTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hoy con análisis semántico eso es &lt;strong&gt;trivial&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Por eso muchos proyectos open-source publican directamente el JS compilado sin preocuparse demasiado.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ El bundle no “oculta” arquitectura
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;El bundle no elimina la arquitectura del programa; simplemente reduce su legibilidad.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aunque esté minificado, aún puedes ver:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imports&lt;/li&gt;
&lt;li&gt;llamadas a APIs&lt;/li&gt;
&lt;li&gt;flujo del programa&lt;/li&gt;
&lt;li&gt;dependencias&lt;/li&gt;
&lt;li&gt;estructura de módulos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./agentLoop&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./tools/fileTool&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eso ya te revela cómo funciona el &lt;strong&gt;runtime&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Lo que sí cambia el .map &lt;strong&gt;(pero no dramáticamente)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;El .map reduce el &lt;strong&gt;trabajo humano&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caso&lt;/th&gt;
&lt;th&gt;Esfuerzo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;bundle minificado&lt;/td&gt;
&lt;td&gt;medio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bundle + LLM&lt;/td&gt;
&lt;td&gt;bajo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bundle + map&lt;/td&gt;
&lt;td&gt;inmediato&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pero no cambia la información disponible, solo la fricción para analizarla.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bundle publicado en npm
        ↓
Código JavaScript ejecutable
        ↓
Puede analizarse con
- herramientas AST
- ingeniería inversa
- agentes LLM

Source map
        ↓
solo añade
- nombres originales
- estructura de archivos
- comentarios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5️⃣ El verdadero motivo del ruido mediático
&lt;/h2&gt;

&lt;p&gt;Las noticias &lt;strong&gt;exageran&lt;/strong&gt; por tres razones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;“512 000 líneas filtradas”&lt;/del&gt; suena dramático&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pero esas líneas ya estaban en el bundle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;del&gt;“código interno de Anthropic”&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pero Claude Code no es el modelo ni la infraestructura.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;narrativa de &lt;del&gt;“AI company leak”&lt;/del&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eso genera clics.&lt;/p&gt;




&lt;h2&gt;
  
  
  6️⃣ Qué sí sería un leak serio
&lt;/h2&gt;

&lt;p&gt;Algo realmente grave sería filtrar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pesos del modelo&lt;/li&gt;
&lt;li&gt;prompts internos del sistema&lt;/li&gt;
&lt;li&gt;pipelines de entrenamiento&lt;/li&gt;
&lt;li&gt;datasets&lt;/li&gt;
&lt;li&gt;infra de serving&lt;/li&gt;
&lt;li&gt;estrategias de RLHF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Eso no ocurrió.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7️⃣ En resumen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;El “leak” de Claude Code &lt;strong&gt;no es un leak real&lt;/strong&gt;, sino un &lt;strong&gt;source map&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;bundle JS&lt;/strong&gt; ya estaba público, por lo que la lógica del programa ya era accesible.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;.map&lt;/strong&gt; solo facilita la lectura humana, pero no revela funcionalidad nueva.&lt;/li&gt;
&lt;li&gt;El &lt;strong&gt;impacto técnico real es limitado&lt;/strong&gt;, aunque el hype mediático ha sido grande.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;map file ≠ código nuevo&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;map file = metadata para humanos&lt;/u&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El código funcional ya estaba público en &lt;strong&gt;npm&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por eso varios desarrolladores también han comentado que la noticia es más hype que incidente de seguridad real.&lt;/p&gt;




&lt;h3&gt;
  
  
  Este episodio deja una lección simple:
&lt;/h3&gt;

&lt;p&gt;Si publicas JavaScript en &lt;strong&gt;npm&lt;/strong&gt;, tu lógica ya es pública.&lt;/p&gt;

&lt;p&gt;Los &lt;em&gt;source maps&lt;/em&gt; solo hacen que el código sea más fácil de leer para humanos.&lt;/p&gt;

&lt;p&gt;La verdadera propiedad intelectual de las empresas de IA no está en el CLI que distribuyen,&lt;br&gt;
sino en:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;los modelos&lt;/li&gt;
&lt;li&gt;los datos&lt;/li&gt;
&lt;li&gt;la infraestructura&lt;/li&gt;
&lt;li&gt;los sistemas de entrenamiento&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;Nada de eso fue filtrado en este caso.&lt;/u&gt;&lt;br&gt;
Lo único que ocurrió fue que un archivo de depuración llegó a producción.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Este caso también sirve como recordatorio para leer con espíritu crítico las noticias sobre “filtraciones” tecnológicas.&lt;br&gt;
Muchas veces el impacto técnico real es muy diferente al que sugieren los titulares.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>news</category>
      <category>security</category>
    </item>
    <item>
      <title>COBOL, IA y la democratización del conocimiento técnico</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:01:22 +0000</pubDate>
      <link>https://dev.to/rafex/cobol-ia-y-la-democratizacion-del-conocimiento-tecnico-3bd9</link>
      <guid>https://dev.to/rafex/cobol-ia-y-la-democratizacion-del-conocimiento-tecnico-3bd9</guid>
      <description>&lt;p&gt;Durante décadas, COBOL fue el corazón de muchos sistemas críticos del mundo: banca, seguros, aerolíneas y gobierno.&lt;/p&gt;

&lt;p&gt;No porque fuera el único lenguaje capaz de resolver esos problemas, sino porque estaba profundamente integrado con el ecosistema de &lt;strong&gt;mainframes&lt;/strong&gt;, donde gran parte del conocimiento técnico estaba concentrado en pocos lugares.&lt;/p&gt;

&lt;p&gt;Aprender COBOL en serio significaba, muchas veces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trabajar dentro de una gran organización,&lt;/li&gt;
&lt;li&gt;acceder a entornos mainframe,&lt;/li&gt;
&lt;li&gt;o aprender de consultores especializados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El conocimiento estaba ahí, pero &lt;strong&gt;no era fácilmente accesible&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Durante muchos años, ese modelo funcionó. La tecnología y el conocimiento estaban controlados por un ecosistema relativamente cerrado.&lt;/p&gt;

&lt;p&gt;Hoy el panorama es muy distinto. Con la aparición de &lt;strong&gt;herramientas abiertas, documentación pública y ahora inteligencia artificial&lt;/strong&gt;, entender sistemas heredados o incluso escribir código COBOL ya no requiere acceso a un mainframe corporativo.&lt;/p&gt;

&lt;p&gt;De hecho, hoy puedes programar COBOL desde tu laptop con Linux usando un compilador open source.&lt;/p&gt;

&lt;p&gt;Y ahí aparece una ironía interesante de la historia tecnológica:&lt;/p&gt;

&lt;p&gt;Muchos de los expertos que durante años formaron parte de un ecosistema donde el conocimiento era escaso y difícil de acceder, hoy participan activamente en &lt;strong&gt;difundir ese conocimiento en internet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;El resultado es algo positivo: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;una democratización del conocimiento técnico.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Y para demostrarlo, hagamos algo simple. Programar COBOL en Linux.&lt;/p&gt;




&lt;h2&gt;
  
  
  Programando COBOL hoy en Linux
&lt;/h2&gt;

&lt;p&gt;Existe un compilador open source llamado GnuCOBOL, disponible en la mayoría de distribuciones Linux.&lt;/p&gt;

&lt;p&gt;Este compilador traduce código COBOL a C y luego usa el compilador de C del sistema para generar el ejecutable. Es decir: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;COBOL funcionando sobre un stack completamente open source. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Instalar el compilador
&lt;/h3&gt;

&lt;p&gt;En Debian o Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;gnucobol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verificamos la instalación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cobc &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Nuestro primer programa COBOL
&lt;/h3&gt;

&lt;p&gt;Creamos un archivo llamado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hola.cob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con el siguiente contenido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IDENTIFICATION DIVISION.
PROGRAM-ID. HOLA.

PROCEDURE DIVISION.
DISPLAY "Hola mundo desde COBOL en Linux".
STOP RUN.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;COBOL tiene una estructura muy clásica basada en divisiones:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;IDENTIFICATION DIVISION → metadatos del programa&lt;br&gt;
DATA DIVISION → definición de datos&lt;br&gt;
PROCEDURE DIVISION → lógica del programa&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En este ejemplo solo usamos la parte más simple.&lt;/p&gt;




&lt;h3&gt;
  
  
  Compilar el programa
&lt;/h3&gt;

&lt;p&gt;Usamos el compilador:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cobc &lt;span class="nt"&gt;-x&lt;/span&gt; hola.cob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto generará un ejecutable llamado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hola
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora lo ejecutamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./hola
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Hola mundo desde COBOL en Linux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Lo interesante de todo esto
&lt;/h3&gt;

&lt;p&gt;Hace algunas décadas, compilar COBOL implicaba tener acceso a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un mainframe&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;licencias costosas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;y conocimientos muy específicos del entorno&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hoy puedes hacerlo con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;software open source&lt;/li&gt;
&lt;li&gt;y documentación pública&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esto refleja un cambio profundo en la industria tecnológica.&lt;/p&gt;

&lt;p&gt;El verdadero cambio no es solo la modernización de sistemas COBOL con IA.&lt;/p&gt;

&lt;p&gt;El cambio real es que &lt;strong&gt;el conocimiento que antes estaba concentrado ahora está disponible para cualquiera que quiera aprenderlo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Y eso, probablemente, sea una de las transformaciones más importantes de nuestra industria.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cómo la IA está ayudando a modernizar COBOL
&lt;/h2&gt;

&lt;p&gt;Aquí es donde entra el fenómeno actual.&lt;/p&gt;

&lt;p&gt;Durante muchos años, &lt;strong&gt;modernizar sistemas COBOL implicaba&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    leer millones de líneas de código&lt;/li&gt;
&lt;li&gt;    entender dependencias&lt;/li&gt;
&lt;li&gt;    reescribir todo manualmente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Un proceso extremadamente caro y lento.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hoy la IA está empezando a ayudar en tres áreas clave. &lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>learning</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>¿Por qué deberíamos decir bibliotecas y no librerías en software?</title>
      <dc:creator>Raúl González (rafex)</dc:creator>
      <pubDate>Wed, 25 Feb 2026 19:03:57 +0000</pubDate>
      <link>https://dev.to/rafex/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software-3k6b</link>
      <guid>https://dev.to/rafex/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software-3k6b</guid>
      <description>&lt;p&gt;Uno de los errores más comunes que cometemos al hablar de programación en español es referirnos a las &lt;em&gt;software libraries&lt;/em&gt; como “librerías”. Aunque parezca una traducción directa e inocente, este término es, en realidad, un falso amigo. En este artículo te explico por qué deberíamos usar la palabra correcta: &lt;strong&gt;bibliotecas&lt;/strong&gt;.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtribsomiecbupklvh5r.png" alt="Image cada que decimos libreria muere un gatito" width="800" height="800"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🧠 La trampa del falso amigo
&lt;/h2&gt;

&lt;p&gt;En inglés, &lt;em&gt;library&lt;/em&gt; hace referencia a una colección organizada de funciones, clases o recursos reutilizables. En español, la palabra más cercana por significado no es “librería” (que es una tienda de libros), sino &lt;strong&gt;biblioteca&lt;/strong&gt;. Ambas palabras comparten raíz etimológica (liber en latín, biblion en griego), pero tomaron caminos distintos.&lt;br&gt;&lt;br&gt;
Así que cuando decimos &lt;del&gt;“librería de software”&lt;/del&gt;, estamos usando una palabra que en español significa otra cosa completamente diferente. Es como si tradujéramos &lt;em&gt;actually&lt;/em&gt; como “actualmente” cuando realmente significa “en realidad”.  &lt;/p&gt;




&lt;h2&gt;
  
  
  📌 ¿Y por qué importa?
&lt;/h2&gt;

&lt;p&gt;Porque el lenguaje técnico también construye pensamiento. Usar correctamente “biblioteca” en lugar de “librería” no es solo una cuestión de purismo lingüístico: es una forma de comunicarnos con precisión y evitar malentendidos, especialmente cuando explicamos conceptos a personas que están aprendiendo.  &lt;/p&gt;

&lt;p&gt;Además, muchas traducciones oficiales y comunidades en español ya han adoptado este estándar. Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;En Python, hablamos de la &lt;strong&gt;biblioteca estándar&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;En Java, usamos el término &lt;strong&gt;bibliotecas externas&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 Conceptos relacionados
&lt;/h2&gt;

&lt;p&gt;Aquí tienes algunos términos útiles para entender mejor este fenómeno lingüístico:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Falso amigo (False friend)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Palabras que parecen similares en dos idiomas pero tienen significados diferentes. Por ejemplo: &lt;em&gt;library&lt;/em&gt; → &lt;strong&gt;biblioteca&lt;/strong&gt;, no &lt;em&gt;librería&lt;/em&gt;.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traducción literal (Literal translation)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Traducir palabra por palabra sin considerar el contexto real.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Calco lingüístico&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Adoptar literal y directamente una expresión extranjera, aunque no sea natural en el idioma destino.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Anglicismo&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Uso innecesario o incorrecto de una palabra en inglés cuando existe una opción correcta en español.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Malapropismo&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Error en el uso de una palabra confundiéndola con otra de sonido similar.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🤔 ¿Y si ya todo el mundo dice “librería”?
&lt;/h2&gt;

&lt;p&gt;Es verdad que el uso está bastante extendido. Pero eso no significa que sea correcto ni que no podamos mejorar nuestra precisión técnica. Muchos términos se han ido afinando con el tiempo, y este es uno que vale la pena corregir.  &lt;/p&gt;




&lt;h2&gt;
  
  
  🇫🇷 Bonus: ¿y en francés?
&lt;/h2&gt;

&lt;p&gt;Sí, es totalmente cierto: en francés, el término correcto para &lt;em&gt;software library&lt;/em&gt; también es &lt;strong&gt;bibliothèque&lt;/strong&gt;, no &lt;em&gt;librairie&lt;/em&gt;.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Library (software)&lt;/strong&gt; → &lt;em&gt;bibliothèque logicielle&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Librairie&lt;/strong&gt; → tienda de libros
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En la documentación oficial de Python en francés se habla de la “bibliothèque standard de Python”.&lt;br&gt;&lt;br&gt;
&lt;a href="https://theworldofrafex.blog/2025/05/06/por-que-deberiamos-decir-bibliotecas-y-no-librerias-en-software/" rel="noopener noreferrer"&gt;The World of Rafex's&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;¿Te gustó este artículo? ¡Comparte y ayúdame a promover un uso más preciso del lenguaje técnico! 💬&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>software</category>
    </item>
  </channel>
</rss>
