<?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: lu1tr0n</title>
    <description>The latest articles on DEV Community by lu1tr0n (@lu1tr0n).</description>
    <link>https://dev.to/lu1tr0n</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%2F806044%2F070ecfe6-05a6-44e1-95e3-81211fc13ab4.png</url>
      <title>DEV Community: lu1tr0n</title>
      <link>https://dev.to/lu1tr0n</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lu1tr0n"/>
    <language>en</language>
    <item>
      <title>MOOP Map 2025: el dataset de 20 años que cambió a 70.000 personas</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Thu, 07 May 2026 14:23:40 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/moop-map-2025-el-dataset-de-20-anos-que-cambio-a-70000-personas-2po1</link>
      <guid>https://dev.to/lu1tr0n/moop-map-2025-el-dataset-de-20-anos-que-cambio-a-70000-personas-2po1</guid>
      <description>&lt;p&gt;Cada agosto, 70.000 personas convergen en un lago seco del desierto de Nevada para levantar desde cero una ciudad temporal. Ocho días después, Black Rock City se desvanece. Pero queda algo: 150 voluntarios formados hombro con hombro recorriendo 1.540 hectáreas (3.800 acres) de polvo a paso humano, registrando cada tornillo, cada lentejuela, cada colilla. El resultado es uno de los proyectos de datos comunitarios más particulares del mundo: el Burning Man &lt;strong&gt;MOOP Map&lt;/strong&gt;. La edición 2025 acaba de publicarse y, como cada año desde 2006, cuenta una historia poco común para una comunidad de 70.000 personas: cómo un dataset puede modificar el comportamiento colectivo sin policías, sin multas, sin algoritmos de moderación. Solo con un mapa público pintado de verde, amarillo y rojo.&lt;/p&gt;

&lt;p&gt;Para los desarrolladores en LATAM acostumbrados a dashboards de observabilidad, mapas de cobertura de tests o métricas DORA, el MOOP Map es un caso de estudio inesperado: una infraestructura analógica de accountability comunitaria, sostenida durante dos décadas, con resultados medibles que mejoran año tras año. Vamos a revisar qué dicen los números de 2025, cómo llegamos hasta acá, y qué lecciones tiene este modelo para cualquier equipo que use datos para cambiar conductas.&lt;/p&gt;

&lt;h2&gt;
  
  
  El MOOP Map 2025 en cifras
&lt;/h2&gt;

&lt;p&gt;El 2025 MOOP Map fue publicado por el equipo de Restauración Ambiental de Burning Man tras varias semanas de barrido forense de la playa. El método es brutalmente analógico: 150 personas alineadas a la distancia de un brazo cada una, caminando lentamente sobre 3.800 acres (15,4 km²) de lecho seco, recogiendo y catalogando todo objeto humano que encuentren. Cada hallazgo se geolocaliza y se incorpora al mapa, que se publica con un código de color por severidad: verde (limpio), amarillo (limpieza moderada que ralentiza al equipo) y rojo (zonas tan contaminadas que detienen el avance).&lt;/p&gt;

&lt;p&gt;En palabras de Dominic "DA" Tinio, gerente de Restauración Ambiental de Burning Man, "en términos simples, mientras más MOOPier es un área, más trabajo y tiempo de campo toma limpiarla hasta que las cuadrillas dejan de encontrar restos". MOOP, por sus siglas en inglés, significa &lt;em&gt;Matter Out of Place&lt;/em&gt;: cualquier objeto humano que no debería estar en el desierto.&lt;/p&gt;

&lt;p&gt;Lo más llamativo del informe 2025 son los &lt;strong&gt;lag bolts&lt;/strong&gt; —tirafondos largos que anclan tiendas, instalaciones y arte al suelo— que dominaron el ranking de basura encontrada. A diferencia de las colillas o los purpurinas, los lag bolts no responden a un comportamiento específico de un grupo; son fallas distribuidas: prácticamente todos los campos perdieron algunos. Para los lectores con background en ingeniería, suena familiar: un bug sistémico que aparece con baja frecuencia en muchos servicios distintos, no un problema concentrado en un módulo.&lt;/p&gt;

&lt;p&gt;El balance general: Black Rock City 2025 pasó la inspección oficial sin sobresaltos. Pero la historia detrás de este "sin sobresaltos" es mucho más interesante.&lt;/p&gt;

&lt;p&gt;Severidad de cleanup por zona: verde, amarillo y rojo. Cada color implica horas de trabajo distintas.&lt;/p&gt;

&lt;h2&gt;
  
  
  20 años haciendo Leave No Trace data-driven
&lt;/h2&gt;

&lt;p&gt;El MOOP Map no nació por iniciativa estética: nació por necesidad legal. El terreno donde se realiza Burning Man pertenece al &lt;strong&gt;Bureau of Land Management (BLM)&lt;/strong&gt;, la agencia federal que administra tierras públicas en Estados Unidos. Para que el evento pueda regresar cada año, debe pasar una inspección post-evento estricta: &lt;strong&gt;no más de un pie cuadrado de basura por acre&lt;/strong&gt; (0,23 m²/ha). El BLM mide en 120 puntos repartidos por el sitio, y como máximo 12 de esos puntos pueden superar el umbral. Si 13 o más fallan, Black Rock City no vuelve.&lt;/p&gt;

&lt;p&gt;En la práctica, el evento aprueba con holgura casi todos los años. Pero "casi" deja espacio para sustos. En 2023, &lt;strong&gt;11 de los 120 puntos del BLM se pasaron del límite&lt;/strong&gt; —el resultado más cercano al fracaso en la historia reciente. Una unidad más por encima del umbral y la edición 2024 podría no haber sucedido. La comunidad lo asumió como un wake-up call: cuando un sistema que toleras como margen se aproxima a su techo, los costos de un fracaso son catastróficos. En lenguaje de SRE: estás quemando tu error budget más rápido de lo previsto y es hora de reevaluar todo el proceso.&lt;/p&gt;

&lt;p&gt;El MOOP Map mismo lleva dos décadas en operación. Su origen fue la necesidad de demostrarle al BLM que la comunidad tomaba en serio la limpieza, pero rápidamente evolucionó en una herramienta interna: un feedback loop público que cada campamento, cada proyecto artístico y cada participante recibe sobre el impacto que dejó su huella. "Desde 2006, en el largo arco del MOOP Map, la tendencia más llamativa es que la comunidad ha mejorado consistentemente en Leave No Trace, incluso cuando Black Rock City ha crecido dramáticamente en tamaño, complejidad y población", afirma DA. La medición empezó como obligación regulatoria y se convirtió en cultura.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; Este es uno de los efectos más potentes de las métricas públicas en cualquier organización: empiezan como cumplimiento y terminan como identidad. Cuando los datos son visibles y atribuibles, dejan de ser una imposición externa y se convierten en parte de cómo la gente se ve a sí misma.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Los números que revelan una mejora sostenida
&lt;/h2&gt;

&lt;p&gt;Los datos detrás del MOOP Map son los que vuelven al proyecto fascinante. Si normalizamos la basura por persona —MOOP per cápita— el pico histórico está en &lt;strong&gt;2010&lt;/strong&gt;. Desde entonces, pese a que la población anual del evento creció considerablemente, la cantidad de basura por persona ha tendido a bajar. La mejora absoluta es aún más impactante: con un evento más grande, más complejo, con instalaciones más ambiciosas y más arte, el residuo total se mantiene bajo el techo legal.&lt;/p&gt;

&lt;p&gt;Los principales tipos de basura encontrados en 2025 son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lag bolts (tirafondos)&lt;/strong&gt;: el #1 absoluto, distribuido entre prácticamente todos los campamentos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Madera y restos de construcción&lt;/strong&gt;: residuos de carpintería estructural cortada en sitio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tela, cuerdas y elásticos&lt;/strong&gt;: especialmente trozos pequeños cortados durante el desmontaje.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plásticos pequeños&lt;/strong&gt;: tapas, envoltorios, partes de utilería.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lentejuelas y micro-purpurina&lt;/strong&gt;: el horror eterno del MOOP, prácticamente imposible de recoger una vez disperso.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Los cigarrillos y colillas, que históricamente fueron un problema importante en festivales similares, hoy aparecen en cantidades pequeñas. La señal cultural funcionó.&lt;/p&gt;

&lt;p&gt;Los datos también permiten al equipo de DA distinguir entre fallas sistémicas y fallas específicas. Si una zona tiene mucho MOOP concentrado, la responsabilidad cae sobre el campamento o instalación en ese lugar. Si la basura está distribuida (como los lag bolts en 2025), el problema es del proceso colectivo de desmontaje. Esa distinción es clave: permite atacar la causa raíz en lugar de solo culpar al actor visible.&lt;/p&gt;

&lt;p&gt;Para entender cómo se traduciría esto a código, una verificación BLM mínima podría modelarse así:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;moop_zones&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;7:30-A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;color&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;green&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items_found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area_acres&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;7:30-B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;color&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yellow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items_found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area_acres&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;7:30-C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;color&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;red&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items_found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;47&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area_acres&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;BLM_THRESHOLD_SQFT_PER_ACRE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;SQFT_PER_ITEM_AVG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;  &lt;span class="c1"&gt;# estimacion gruesa
&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;passes_blm_inspection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;zones&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_failures&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;failures&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;zones&lt;/span&gt;
        &lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items_found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;SQFT_PER_ITEM_AVG&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;area_acres&lt;/span&gt;&lt;span class="sh"&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="n"&gt;BLM_THRESHOLD_SQFT_PER_ACRE&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;failures&lt;/span&gt;  &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="err"&gt;💡&lt;/span&gt; &lt;span class="n"&gt;Tip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;Si&lt;/span&gt; &lt;span class="n"&gt;tu&lt;/span&gt; &lt;span class="n"&gt;equipo&lt;/span&gt; &lt;span class="n"&gt;opera&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="n"&gt;SLOs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;esta&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;analogía&lt;/span&gt; &lt;span class="n"&gt;exacta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;cada&lt;/span&gt; &lt;span class="n"&gt;zona&lt;/span&gt; &lt;span class="k"&gt;del&lt;/span&gt; &lt;span class="n"&gt;MOOP&lt;/span&gt; &lt;span class="n"&gt;Map&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;SLI&lt;/span&gt; &lt;span class="n"&gt;individual&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;umbral&lt;/span&gt; &lt;span class="n"&gt;por&lt;/span&gt; &lt;span class="n"&gt;acre&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;SLO&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;límite&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="n"&gt;fallas&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="n"&gt;budget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Burning&lt;/span&gt; &lt;span class="n"&gt;Man&lt;/span&gt; &lt;span class="n"&gt;lleva&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="n"&gt;años&lt;/span&gt; &lt;span class="n"&gt;haciendo&lt;/span&gt; &lt;span class="n"&gt;SRE&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt; &lt;span class="n"&gt;llamarlo&lt;/span&gt; &lt;span class="n"&gt;así&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="c1"&gt;## De métrica de cumplimiento a herramienta de cultura
&lt;/span&gt;
&lt;span class="n"&gt;Lo&lt;/span&gt; &lt;span class="n"&gt;más&lt;/span&gt; &lt;span class="n"&gt;interesante&lt;/span&gt; &lt;span class="k"&gt;del&lt;/span&gt; &lt;span class="n"&gt;MOOP&lt;/span&gt; &lt;span class="n"&gt;Map&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;son&lt;/span&gt; &lt;span class="n"&gt;los&lt;/span&gt; &lt;span class="n"&gt;números&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;lo&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;gente&lt;/span&gt; &lt;span class="n"&gt;hace&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="n"&gt;ellos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;reporte&lt;/span&gt; &lt;span class="n"&gt;oficial&lt;/span&gt; &lt;span class="n"&gt;detalla&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;campo&lt;/span&gt; &lt;span class="n"&gt;por&lt;/span&gt; &lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qué&lt;/span&gt; &lt;span class="n"&gt;se&lt;/span&gt; &lt;span class="n"&gt;encontró&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;su&lt;/span&gt; &lt;span class="n"&gt;footprint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Los&lt;/span&gt; &lt;span class="n"&gt;grupos&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;zonas&lt;/span&gt; &lt;span class="n"&gt;rojas&lt;/span&gt; &lt;span class="n"&gt;reciben&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;breakdown&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;su&lt;/span&gt; &lt;span class="n"&gt;contribución&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;basura&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;expectativa&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;mejoren&lt;/span&gt; &lt;span class="n"&gt;al&lt;/span&gt; &lt;span class="n"&gt;año&lt;/span&gt; &lt;span class="n"&gt;siguiente&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Los&lt;/span&gt; &lt;span class="n"&gt;infractores&lt;/span&gt; &lt;span class="n"&gt;reincidentes&lt;/span&gt; &lt;span class="n"&gt;son&lt;/span&gt; &lt;span class="n"&gt;flagueados&lt;/span&gt; &lt;span class="n"&gt;al&lt;/span&gt; &lt;span class="n"&gt;equipo&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;asigna&lt;/span&gt; &lt;span class="n"&gt;ubicaciones&lt;/span&gt; &lt;span class="n"&gt;futuras&lt;/span&gt; &lt;span class="err"&gt;—&lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt; &lt;span class="n"&gt;dejaste&lt;/span&gt; &lt;span class="n"&gt;basura&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;te&lt;/span&gt; &lt;span class="n"&gt;toca&lt;/span&gt; &lt;span class="n"&gt;peor&lt;/span&gt; &lt;span class="n"&gt;lugar&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;año&lt;/span&gt; &lt;span class="n"&gt;siguiente&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;te&lt;/span&gt; &lt;span class="n"&gt;toca&lt;/span&gt; &lt;span class="n"&gt;lugar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Pero&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;fuerza&lt;/span&gt; &lt;span class="n"&gt;más&lt;/span&gt; &lt;span class="n"&gt;poderosa&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;institucional&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Es&lt;/span&gt; &lt;span class="n"&gt;social&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Cada&lt;/span&gt; &lt;span class="n"&gt;año&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;al&lt;/span&gt; &lt;span class="n"&gt;publicarse&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;mapa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;subreddit&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;Burning&lt;/span&gt; &lt;span class="n"&gt;Man&lt;/span&gt; &lt;span class="n"&gt;lanza&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MOOP Map shame thread&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;donde&lt;/span&gt; &lt;span class="n"&gt;los&lt;/span&gt; &lt;span class="n"&gt;participantes&lt;/span&gt; &lt;span class="n"&gt;señalan&lt;/span&gt; &lt;span class="n"&gt;públicamente&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;los&lt;/span&gt; &lt;span class="n"&gt;campamentos&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;dejaron&lt;/span&gt; &lt;span class="n"&gt;zonas&lt;/span&gt; &lt;span class="n"&gt;rojas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Es&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;mecanismo&lt;/span&gt; &lt;span class="n"&gt;informal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;orquestado&lt;/span&gt; &lt;span class="n"&gt;por&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;organización&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pero&lt;/span&gt; &lt;span class="n"&gt;brutalmente&lt;/span&gt; &lt;span class="n"&gt;efectivo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nadie&lt;/span&gt; &lt;span class="n"&gt;quiere&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;su&lt;/span&gt; &lt;span class="n"&gt;crew&lt;/span&gt; &lt;span class="n"&gt;aparezca&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;La&lt;/span&gt; &lt;span class="n"&gt;transparencia&lt;/span&gt; &lt;span class="n"&gt;genera&lt;/span&gt; &lt;span class="n"&gt;vergüenza&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;vergüenza&lt;/span&gt; &lt;span class="n"&gt;disciplina&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Para&lt;/span&gt; &lt;span class="n"&gt;cualquier&lt;/span&gt; &lt;span class="n"&gt;equipo&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;software&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;esto&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;profundamente&lt;/span&gt; &lt;span class="n"&gt;familiar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Dashboards&lt;/span&gt; &lt;span class="n"&gt;públicos&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;uptime&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;tipo&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="n"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Mapas&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;cobertura&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;tests&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;visibles&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;cada&lt;/span&gt; &lt;span class="n"&gt;PR&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Rankings&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;contribución&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;GitHub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Métricas&lt;/span&gt; &lt;span class="n"&gt;DORA&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;visibles&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;toda&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;organización&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Heat&lt;/span&gt; &lt;span class="n"&gt;maps&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;errores&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="n"&gt;Datadog&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;Sentry&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;atribuibles&lt;/span&gt; &lt;span class="n"&gt;por&lt;/span&gt; &lt;span class="n"&gt;servicio&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Todos&lt;/span&gt; &lt;span class="n"&gt;operan&lt;/span&gt; &lt;span class="n"&gt;bajo&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;misma&lt;/span&gt; &lt;span class="n"&gt;lógica&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Cuando&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;dato&lt;/span&gt; &lt;span class="n"&gt;es&lt;/span&gt; &lt;span class="n"&gt;público&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="n"&gt;atribuible&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;comportamiento&lt;/span&gt; &lt;span class="n"&gt;cambia&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;MOOP&lt;/span&gt; &lt;span class="n"&gt;Map&lt;/span&gt; &lt;span class="n"&gt;demuestra&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;esto&lt;/span&gt; &lt;span class="n"&gt;funciona&lt;/span&gt; &lt;span class="n"&gt;incluso&lt;/span&gt; &lt;span class="n"&gt;fuera&lt;/span&gt; &lt;span class="k"&gt;del&lt;/span&gt; &lt;span class="n"&gt;software&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;con&lt;/span&gt; &lt;span class="n"&gt;una&lt;/span&gt; &lt;span class="n"&gt;población&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="mf"&gt;70.000&lt;/span&gt; &lt;span class="n"&gt;personas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt; &lt;span class="n"&gt;enforcement&lt;/span&gt; &lt;span class="n"&gt;automatizado&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="err"&gt;⚠️&lt;/span&gt; &lt;span class="n"&gt;Ojo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;Las&lt;/span&gt; &lt;span class="n"&gt;métricas&lt;/span&gt; &lt;span class="n"&gt;tienen&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;costo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;gobernarlas&lt;/span&gt; &lt;span class="n"&gt;mal&lt;/span&gt; &lt;span class="n"&gt;puede&lt;/span&gt; &lt;span class="n"&gt;generar&lt;/span&gt; &lt;span class="nf"&gt;gaming &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;gente&lt;/span&gt; &lt;span class="n"&gt;optimiza&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;número&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="n"&gt;real&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt; &lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;MOOP&lt;/span&gt; &lt;span class="n"&gt;Map&lt;/span&gt; &lt;span class="n"&gt;evita&lt;/span&gt; &lt;span class="n"&gt;esto&lt;/span&gt; &lt;span class="n"&gt;porque&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;métrica&lt;/span&gt; &lt;span class="n"&gt;está&lt;/span&gt; &lt;span class="n"&gt;alineada&lt;/span&gt; &lt;span class="n"&gt;al&lt;/span&gt; &lt;span class="n"&gt;outcome&lt;/span&gt; &lt;span class="nf"&gt;real &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;limpieza&lt;/span&gt; &lt;span class="n"&gt;física&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Cuando&lt;/span&gt; &lt;span class="n"&gt;diseñes&lt;/span&gt; &lt;span class="n"&gt;métricas&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;tu&lt;/span&gt; &lt;span class="n"&gt;equipo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pregúntate&lt;/span&gt; &lt;span class="n"&gt;primero&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="err"&gt;¿&lt;/span&gt;&lt;span class="n"&gt;qué&lt;/span&gt; &lt;span class="n"&gt;pasa&lt;/span&gt; &lt;span class="n"&gt;si&lt;/span&gt; &lt;span class="n"&gt;alguien&lt;/span&gt; &lt;span class="n"&gt;optimiza&lt;/span&gt; &lt;span class="n"&gt;esto&lt;/span&gt; &lt;span class="n"&gt;al&lt;/span&gt; &lt;span class="n"&gt;máximo&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="err"&gt;¿&lt;/span&gt;&lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;resultado&lt;/span&gt; &lt;span class="n"&gt;real&lt;/span&gt; &lt;span class="n"&gt;mejora&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;solo&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;número&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;

&lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;barrido&lt;/span&gt; &lt;span class="n"&gt;forense&lt;/span&gt; &lt;span class="n"&gt;lo&lt;/span&gt; &lt;span class="n"&gt;hacen&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt; &lt;span class="n"&gt;voluntarios&lt;/span&gt; &lt;span class="n"&gt;alineados&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;distancia&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;un&lt;/span&gt; &lt;span class="n"&gt;brazo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="c1"&gt;## Cómo funciona el ciclo MOOP de punta a punta
&lt;/span&gt;
&lt;span class="n"&gt;El&lt;/span&gt; &lt;span class="n"&gt;proceso&lt;/span&gt; &lt;span class="n"&gt;completo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desde&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt; &lt;span class="n"&gt;final&lt;/span&gt; &lt;span class="k"&gt;del&lt;/span&gt; &lt;span class="n"&gt;evento&lt;/span&gt; &lt;span class="n"&gt;hasta&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;decisión&lt;/span&gt; &lt;span class="k"&gt;del&lt;/span&gt; &lt;span class="n"&gt;BLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sigue&lt;/span&gt; &lt;span class="n"&gt;una&lt;/span&gt; &lt;span class="n"&gt;secuencia&lt;/span&gt; &lt;span class="n"&gt;clara&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;vale&lt;/span&gt; &lt;span class="n"&gt;la&lt;/span&gt; &lt;span class="n"&gt;pena&lt;/span&gt; &lt;span class="n"&gt;visualizar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;graph LR&lt;br&gt;
    A["Evento Burning Man 8 dias"] --&amp;gt; B["Desmontaje de campamentos"]&lt;br&gt;
    B --&amp;gt; C["Equipo MOOP entra al sitio"]&lt;br&gt;
    C --&amp;gt; D["Barrido forense semanas"]&lt;br&gt;
    D --&amp;gt; E["Geolocalizacion y catalogo"]&lt;br&gt;
    E --&amp;gt; F["Publicacion MOOP Map"]&lt;br&gt;
    F --&amp;gt; G["Inspeccion BLM 120 puntos"]&lt;br&gt;
    G --&amp;gt; H{"Pasa la prueba"}&lt;br&gt;
    H --&amp;gt;|Si| I["Black Rock City vuelve"]&lt;br&gt;
    H --&amp;gt;|No| J["Permiso en riesgo"]&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


Lo interesante de este pipeline es que el output con mayor impacto no es la decisión del BLM (que casi siempre es "sí"), sino la publicación del mapa. Es ahí donde se cierra el feedback loop con la comunidad y donde se genera la presión social que lleva a la mejora del año siguiente. El BLM es la condición de borde; el mapa público es la herramienta de cambio.

## Qué sigue para el MOOP Map

¿Para dónde va el MOOP Map? La metodología base —barrido humano más georreferenciación manual— probablemente se mantenga, porque la precisión de un humano caminando despacio en busca de objetos pequeños es difícil de superar con sensores. Pero hay espacio para innovación.

### Posibles innovaciones tecnológicas

- **Drones con cámaras de alta resolución**: para escaneo previo de zonas y priorización de cuadrillas.
- **Computer vision**: clasificación automática de tipos de basura en imágenes de drone.
- **Análisis predictivo**: identificar campamentos con riesgo alto antes del desmontaje, basándose en patrones históricos por ubicación, tamaño y tipo de instalación.
- **Datasets abiertos**: publicación estructurada de los hallazgos para análisis externo, con investigadores académicos ya interesados en el material.

Por ahora, el equipo de Restauración Ambiental se mantiene en el método clásico, pero con un dataset que ya cubre dos décadas, hay material rico para que investigadores externos lo estudien. La comunidad data science alrededor del MOOP Map empieza a tomar forma —no formal, pero existente.

La lección más importante para 2026 y más allá: la mejor manera de crear cultura de Leave No Trace no es predicarla. Es medirla y publicar la medición. Para los equipos en LATAM que están construyendo sistemas, productos o comunidades, ese principio es totalmente exportable.

📖 Resumen en Telegram: [Ver resumen](#)

## Preguntas frecuentes

### ¿Qué significa MOOP exactamente?

MOOP significa *Matter Out of Place*: cualquier objeto humano que no debería estar en el desierto de Black Rock. Va desde un tornillo perdido hasta un pedazo de plástico de medio milímetro. La única excepción son las pisadas humanas en el polvo, que son inevitables.

### ¿Quién hace el barrido y cuánto dura?

Aproximadamente 150 voluntarios y empleados del equipo de Restauración Ambiental hacen el sweep. El proceso dura varias semanas después del cierre oficial del evento, dependiendo del tamaño del año y de qué tan MOOPier esté el sitio. Caminan en líneas paralelas a un brazo de distancia entre sí.

### ¿Qué pasa si Burning Man no pasa la inspección del BLM?

Si más de 12 de los 120 puntos de muestreo del BLM superan el límite de un pie cuadrado de basura por acre, el evento podría perder el permiso para regresar. Hasta hoy nunca ha fallado, pero en 2023 estuvo a un solo punto de hacerlo.

### ¿Por qué los lag bolts son el problema dominante en 2025?

Los lag bolts son tirafondos largos que se usan para anclar tiendas, instalaciones de arte y estructuras al suelo. Al desmontar, es fácil que uno se afloje y desaparezca bajo el polvo. No hay un solo culpable: prácticamente todos los campamentos perdieron alguno. Es un patrón distribuido, no concentrado.

### ¿Cómo se castiga a un campamento que deja mucha basura?

Los reincidentes son flagueados al equipo que asigna ubicaciones futuras dentro de Black Rock City. Pueden recibir peor ubicación al año siguiente o, en casos graves, perder el derecho a tener un placement en el evento. Adicionalmente hay presión social informal en redes (el famoso "MOOP Map shame thread" en Reddit).

### ¿Hay datasets abiertos disponibles para análisis?

Burning Man publica el mapa con sus colores y estadísticas agregadas, pero no un dataset estructurado completo. Los datos crudos quedan internos al equipo de Restauración Ambiental. Hay interés creciente en abrir más datos para investigación académica.

## Referencias

- [Not-Ship: The map that keeps Burning Man honest](https://www.not-ship.com/burning-man-moop/) — análisis original con visualizaciones del MOOP Map 2025.
- [Burning Man Project](https://burningman.org/) — sitio oficial del evento, incluye documentación sobre Leave No Trace y proceso MOOP.
- [Wikipedia: Burning Man](https://en.wikipedia.org/wiki/Burning_Man) — historia del evento, contexto regulatorio y estadísticas de asistencia.
- [r/BurningMan](https://www.reddit.com/r/BurningMan/) — comunidad activa donde se publica anualmente el MOOP Map shame thread.

📱 **¿Te gusta este contenido?** Únete a nuestro canal de Telegram [@programacion](https://t.me/programacion) donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>technology</category>
      <category>science</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Permacomputing: 10 principios para una computación sostenible</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Thu, 07 May 2026 08:20:10 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/permacomputing-10-principios-para-una-computacion-sostenible-29a</link>
      <guid>https://dev.to/lu1tr0n/permacomputing-10-principios-para-una-computacion-sostenible-29a</guid>
      <description>&lt;p&gt;El concepto de &lt;strong&gt;permacomputing&lt;/strong&gt; empieza a salir de los círculos académicos y los foros de hackers para instalarse en debates serios sobre el futuro del software. La idea es simple en su enunciado y radical en sus consecuencias: aplicar las éticas de la permacultura —cuidar la tierra, cuidar las personas, redistribuir lo justo— al diseño, construcción y mantenimiento de sistemas computacionales. El sitio oficial &lt;a href="https://permacomputing.net/principles/" rel="noopener noreferrer"&gt;permacomputing.net&lt;/a&gt; publica diez principios que guían esta práctica, y en 2026 el debate ha ganado relevancia frente al crecimiento explosivo del consumo energético de la inteligencia artificial y de los desechos electrónicos.&lt;/p&gt;

&lt;p&gt;Para quien escribe código, configura infraestructura o decide qué dispositivo comprar, permacomputing no es una doctrina prescriptiva sino un marco para hacerse mejores preguntas. ¿Necesito desplegar este modelo en GPUs nuevas o un modelo más pequeño basta? ¿Tiene sentido reescribir esta app en Electron y triplicar el consumo de RAM? ¿Vale la pena renovar la flota de laptops cada tres años cuando la mayoría sigue funcionando? Las respuestas no están escritas, pero los principios ayudan a formularlas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué es permacomputing
&lt;/h2&gt;

&lt;p&gt;El término permacomputing fue acuñado en 2020 por el programador finlandés &lt;strong&gt;Ville-Matias "viznut" Heikkilä&lt;/strong&gt;, conocido en la escena demoscene por sus experimentos con computación en condiciones extremas (programas que generan música compleja con apenas unas líneas de C). Su ensayo original proponía repensar la informática desde una perspectiva post-crecimiento, asumiendo que los recursos materiales para fabricar chips, baterías y data centers son finitos.&lt;/p&gt;

&lt;p&gt;El movimiento se inspira directamente en la &lt;strong&gt;permacultura&lt;/strong&gt;, una corriente de diseño agrícola y ecológico nacida en Australia en 1978 con los trabajos de Bill Mollison y David Holmgren. Permacultura no es solo agricultura orgánica: es un sistema de diseño que observa los ciclos naturales y crea soluciones de bajo consumo, alta resiliencia y mínima intervención. Permacomputing toma ese mismo espíritu y lo traduce al hardware, los sistemas operativos, los protocolos y las prácticas de desarrollo.&lt;/p&gt;

&lt;p&gt;La comunidad —que mantiene un working group activo y publica documentación abierta— deja claro que &lt;em&gt;permacomputing no es prescriptivo&lt;/em&gt;. No te dice qué lenguaje usar ni qué editor abrir. Lo que ofrece son lentes para mirar tu propia práctica y preguntarte si lo que estás construyendo aporta valor proporcional al costo socioambiental que implica.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contexto: de la permacultura a los servidores solares
&lt;/h2&gt;

&lt;p&gt;Antes de entrar en los principios conviene situar el movimiento dentro de una genealogía. Hay precedentes claros que prepararon el terreno:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low-tech Magazine&lt;/strong&gt; (Kris De Decker, 2007) — una revista digital que desde 2018 corre sobre un servidor alimentado por paneles solares. Cuando no hay sol, el sitio se cae. Esa "limitación" es el punto.- &lt;strong&gt;The Small Web&lt;/strong&gt; y el &lt;strong&gt;250kb Club&lt;/strong&gt; — iniciativas que celebran sitios web livianos, sin trackers ni frameworks pesados.- &lt;strong&gt;100R / Hundred Rabbits&lt;/strong&gt; — el colectivo de Devine Lu Linvega y Rekka Bellum, que vive en un velero y desarrolla herramientas (Uxn, Orca, Left) optimizadas para correr con energía limitada.- &lt;strong&gt;Solarpunk&lt;/strong&gt; — el movimiento estético-político que imagina futuros tecnológicos en armonía con la biósfera.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Permacomputing recoge ideas de todas estas tradiciones y las organiza alrededor de diez principios concretos. El sitio permacomputing.net documenta cada uno con ejemplos, lecturas adicionales y estrategias de aplicación tanto para personas técnicas como para usuarios casuales.&lt;br&gt;
Servidores de bajo consumo: la práctica que inspira a permacomputing.&lt;/p&gt;
&lt;h2&gt;
  
  
  Los 10 principios, en español
&lt;/h2&gt;

&lt;p&gt;A continuación una traducción comentada de los diez principios. La versión completa con todos los matices vive en &lt;a href="https://permacomputing.net/principles/" rel="noopener noreferrer"&gt;permacomputing.net/principles&lt;/a&gt;:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Cuidar la vida
&lt;/h3&gt;

&lt;p&gt;Toda decisión técnica debe ponderar su impacto sobre los seres vivos —humanos y no humanos— y sobre los ecosistemas. Es el principio raíz, equivalente al "Earth Care" de la permacultura.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Cuidar todo el hardware (especialmente los chips)
&lt;/h3&gt;

&lt;p&gt;Los microchips son los componentes más caros de fabricar en términos energéticos y materiales: requieren litros de agua ultrapura, gases raros, energía intensiva y son prácticamente imposibles de reciclar. Maximizar la vida útil de cada dispositivo es un acto político.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Mantenerlo pequeño
&lt;/h3&gt;

&lt;p&gt;El bloat es enemigo. Un binario más liviano no solo carga más rápido: cabe en hardware viejo, consume menos memoria, pesa menos en la red. Hay un linaje claro entre suckless, plan9 y este principio.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Esperar lo mejor, prepararse para lo peor
&lt;/h3&gt;

&lt;p&gt;Diseñar sistemas resilientes a interrupciones, fallas de red, cortes de energía o colapso parcial. No por catastrofismo, sino porque la fragilidad ya es la realidad de millones de personas con conexiones inestables y hardware limitado.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Mantenerlo flexible
&lt;/h3&gt;

&lt;p&gt;Sistemas que se adaptan a contextos diversos en lugar de imponer un único entorno "óptimo".&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Construir sobre tierra firme
&lt;/h3&gt;

&lt;p&gt;Apoyarse en estándares abiertos, formatos durables, dependencias estables. Evitar construir sobre arenas movedizas (APIs propietarias que mañana cambian, frameworks que se reescriben cada dos años).&lt;/p&gt;
&lt;h3&gt;
  
  
  7. Amplificar la conciencia
&lt;/h3&gt;

&lt;p&gt;La computación puede fortalecer ecosistemas mediante proyectos de citizen science: medición de calidad del aire, biodiversidad, contaminación. Datos abiertos para tomar mejores decisiones colectivas.&lt;/p&gt;
&lt;h3&gt;
  
  
  8. Exponer todo (sin cajas negras)
&lt;/h3&gt;

&lt;p&gt;Transparencia en arquitectura, código y procesos. El usuario debería poder entender qué hace su software y por qué.&lt;/p&gt;
&lt;h3&gt;
  
  
  9. Responder a los cambios
&lt;/h3&gt;

&lt;p&gt;Adaptarse en lugar de imponer. Permacomputing prefiere sistemas evolutivos a soluciones rígidas.&lt;/p&gt;
&lt;h3&gt;
  
  
  10. Todo tiene su lugar (y a veces lo correcto es no hacer)
&lt;/h3&gt;

&lt;p&gt;Antes de añadir tecnología, preguntarse si realmente hace falta. El principio "Not Doing" reconoce que la mejor solución muchas veces es no construir nada nuevo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; Antes de aceptar un ticket que pide "agregar IA" a una feature existente, pasalo por el filtro del principio 10. ¿Se resuelve mejor con un select bien hecho? ¿Ya existe la funcionalidad y basta documentarla?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Datos y cifras: por qué importa ahora
&lt;/h2&gt;

&lt;p&gt;Los números detrás de la urgencia de permacomputing son contundentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;62 millones de toneladas&lt;/strong&gt; de basura electrónica generadas en 2022 según el UN Global E-Waste Monitor —el equivalente al peso de unos 1.500 buques cargueros— y se proyectan 82 millones para 2030.- &lt;strong&gt;Entre 1% y 2% del consumo eléctrico mundial&lt;/strong&gt; proviene de los data centers, una cifra que la Agencia Internacional de Energía estima podría duplicarse para 2030 por la demanda de IA.- Producir un solo chip moderno consume &lt;strong&gt;miles de litros de agua ultrapura&lt;/strong&gt; y emite gases con potencial de calentamiento global miles de veces superior al CO₂.- Apenas el &lt;strong&gt;22%&lt;/strong&gt; del e-waste mundial se recicla formalmente. El resto termina en vertederos del Sur Global, contaminando suelos y aguas.- Una laptop promedio emite alrededor de &lt;strong&gt;300 kg de CO₂&lt;/strong&gt; en su fabricación —más que un vuelo Buenos Aires–Madrid en clase económica.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estos números explican por qué hablar de "computación sostenible" sin revisar el modelo de fabricación y descarte es una conversación incompleta.&lt;/p&gt;
&lt;h2&gt;
  
  
  Impacto en la práctica de desarrollo
&lt;/h2&gt;

&lt;p&gt;Aplicar permacomputing al día a día como developer no requiere mudarse a un velero. Hay decisiones cotidianas con impacto real:&lt;/p&gt;
&lt;h3&gt;
  
  
  Stack técnico
&lt;/h3&gt;

&lt;p&gt;Preferir lenguajes y runtimes eficientes cuando el caso lo permite. No todo necesita correr sobre Node + Electron + 80 dependencias. Una CLI en Go, una app TUI en Rust, un script en Python sencillo: muchas veces alcanza.&lt;/p&gt;
&lt;h3&gt;
  
  
  Infraestructura
&lt;/h3&gt;

&lt;p&gt;Elegir proveedores con energía renovable verificable. Un servidor en una región con grid limpio (Quebec, Islandia, partes de Brasil con hidroeléctrica) tiene una huella significativamente menor que el mismo workload en una región dominada por carbón.&lt;/p&gt;
&lt;h3&gt;
  
  
  Hardware
&lt;/h3&gt;

&lt;p&gt;Refurbished antes que nuevo. Reparar antes que reemplazar. Iniciativas como &lt;strong&gt;Framework Laptop&lt;/strong&gt; o &lt;strong&gt;iFixit&lt;/strong&gt; demuestran que es posible diseñar hardware reparable y seguir siendo competitivo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Software
&lt;/h3&gt;

&lt;p&gt;Empacar binarios optimizados, no incluir dependencias innecesarias, soportar arquitecturas viejas cuando sea barato hacerlo. Aceptar que tu código va a correr en un equipo con 4GB de RAM en algún lugar del mundo.&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="c"&gt;# Auditar el peso real de tu app antes de shipear&lt;/span&gt;
&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-sh&lt;/span&gt; dist/
&lt;span class="c"&gt;# 245M  dist/  ← ¿es necesario?&lt;/span&gt;

&lt;span class="c"&gt;# Bundle analyzer para webpack/vite&lt;/span&gt;
npx vite-bundle-visualizer

&lt;span class="c"&gt;# Para imágenes Docker, dive permite explorar capa por capa&lt;/span&gt;
dive my-image:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Ojo:&lt;/strong&gt; "small" no significa "primitivo". Permacomputing no romantiza la pobreza tecnológica. La idea es construir lo mínimo necesario para resolver el problema con elegancia, no privarse de herramientas útiles por dogmatismo.&lt;br&gt;
La cultura de la reparación: permacomputing avant la lettre en LATAM.&lt;/p&gt;
&lt;h2&gt;
  
  
  Permacomputing en clave LATAM
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;América Latina tiene una relación particular con muchos de estos principios porque, en gran medida, ya los practica por necesidad. La cultura de la reparación —del taller que arregla un Nokia 3310 al técnico que mantiene servidores Pentium 4 corriendo en el ministerio— es permacomputing avant la lettre.&lt;/p&gt;

&lt;p&gt;Algunos puntos donde la región está naturalmente alineada con el movimiento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reuso de hardware&lt;/strong&gt; — laptops corporativas usadas que llegan al mercado secundario después de ciclos de 3-5 años en empresas. En Argentina, Chile, México y Colombia hay un mercado robusto de equipos refurbished.- &lt;strong&gt;Conexiones inestables&lt;/strong&gt; — apps que funcionan offline-first, PWAs livianas y código que tolera latencia son parte del kit básico de cualquier developer regional.- &lt;strong&gt;Cortes de energía&lt;/strong&gt; — UPS, generadores, salvado automático cada minuto. La resiliencia no es teoría.- &lt;strong&gt;Frugalidad técnica&lt;/strong&gt; — no hay presupuesto para reemplazar todo cada año, así que mantener viejo es la norma.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Donde permacomputing puede aportar más a la región es en darle &lt;em&gt;marco conceptual y dignidad&lt;/em&gt; a prácticas que muchas veces se ven como signos de subdesarrollo, cuando en realidad son ventajas competitivas para construir software resiliente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagrama: permacultura como raíz
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph TD
    A["Permacultura (1978)"] --&amp;gt; B["Earth Care"]
    A --&amp;gt; C["People Care"]
    A --&amp;gt; D["Fair Share"]
    B --&amp;gt; E["Permacomputing"]
    C --&amp;gt; E
    D --&amp;gt; E
    E --&amp;gt; F["10 principios"]
    F --&amp;gt; G["Cuidar el hardware"]
    F --&amp;gt; H["Mantenerlo pequeno"]
    F --&amp;gt; I["Resiliencia"]
    F --&amp;gt; J["No hacer"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Qué sigue para el movimiento
&lt;/h2&gt;

&lt;p&gt;Permacomputing está en una etapa de consolidación. La working group publica artículos, organiza encuentros y mantiene el sitio principal. Hay una comunidad activa en el fediverso (Mastodon) bajo el hashtag &lt;code&gt;#permacomputing&lt;/code&gt;, conferencias relacionadas como &lt;strong&gt;handmade.network&lt;/strong&gt; y &lt;strong&gt;HOPE&lt;/strong&gt;, y una creciente literatura académica sobre "computación sustentable" que dialoga con estas ideas.&lt;/p&gt;

&lt;p&gt;El próximo desafío del movimiento es escalar sin perder coherencia. Que un principio inspire una práctica concreta —y verificable— es mucho más útil que diez principios bonitos sin tracción. Iniciativas como bandwidth budgets en sitios estáticos, calculadoras de huella de carbono para websites (&lt;a href="https://www.websitecarbon.com/" rel="noopener noreferrer"&gt;websitecarbon.com&lt;/a&gt;) y certificaciones de software verde empiezan a operacionalizar estos valores.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; Permacomputing no es anti-tecnología. Es anti-desperdicio. La pregunta no es "¿menos computación?" sino "¿qué computación, para quién y por cuánto tiempo?".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Permacomputing es lo mismo que green computing?
&lt;/h3&gt;

&lt;p&gt;No exactamente. Green computing suele enfocarse en eficiencia energética dentro del paradigma actual. Permacomputing cuestiona el paradigma mismo: el modelo de crecimiento perpetuo, la obsolescencia programada y la dependencia de hardware nuevo.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Tengo que dejar de usar Kubernetes?
&lt;/h3&gt;

&lt;p&gt;No. Permacomputing no prohíbe tecnologías, propone preguntarse si son la herramienta adecuada para cada caso. Si tu workload realmente justifica orquestación distribuida, adelante. Si lo usás para un blog estático que recibe 100 visitas al día, quizá un VPS de cinco dólares al mes alcanza.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Quién mantiene permacomputing.net?
&lt;/h3&gt;

&lt;p&gt;Una working group informal compuesta por desarrolladores, artistas, investigadores y activistas. Es un proyecto comunitario sin financiamiento corporativo.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Existen herramientas concretas alineadas con estos principios?
&lt;/h3&gt;

&lt;p&gt;Sí. Algunos ejemplos: el navegador &lt;strong&gt;Dillo&lt;/strong&gt;, el sistema operativo &lt;strong&gt;9front&lt;/strong&gt;, los lenguajes &lt;strong&gt;Uxn&lt;/strong&gt; y &lt;strong&gt;Orca&lt;/strong&gt; de Hundred Rabbits, distribuciones Linux livianas como &lt;strong&gt;Alpine&lt;/strong&gt; y &lt;strong&gt;Void&lt;/strong&gt;, y el ecosistema &lt;strong&gt;suckless&lt;/strong&gt; (dwm, st, surf).&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo empiezo a aplicar permacomputing en mi trabajo?
&lt;/h3&gt;

&lt;p&gt;Auditá. Medí el peso de tus apps, el consumo de tu pipeline de CI/CD, el ciclo de vida del hardware que decidís comprar. Sin datos no hay diagnóstico, y sin diagnóstico no hay cambio.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Es viable para una startup que necesita escalar rápido?
&lt;/h3&gt;

&lt;p&gt;Depende del nicho. Para muchas startups B2B con tracción incipiente, ir lean en stack y hardware reduce burn rate y alarga la pista. Permacomputing y unit economics se llevan mejor de lo que parece.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://permacomputing.net/principles/" rel="noopener noreferrer"&gt;permacomputing.net/principles&lt;/a&gt; — los 10 principios oficiales con explicaciones extendidas y estrategias de aplicación.- &lt;a href="https://solar.lowtechmagazine.com/" rel="noopener noreferrer"&gt;solar.lowtechmagazine.com&lt;/a&gt; — la revista que corre sobre un servidor solar y se cae cuando no hay sol suficiente.- &lt;a href="https://wiki.xxiivv.com/site/permacomputing.html" rel="noopener noreferrer"&gt;wiki.xxiivv.com&lt;/a&gt; — la página de Devine Lu Linvega (Hundred Rabbits) sobre permacomputing y herramientas asociadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>technology</category>
      <category>science</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Valve libera los CAD del Steam Controller bajo Creative Commons</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 20:16:54 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/valve-libera-los-cad-del-steam-controller-bajo-creative-commons-4fip</link>
      <guid>https://dev.to/lu1tr0n/valve-libera-los-cad-del-steam-controller-bajo-creative-commons-4fip</guid>
      <description>&lt;p&gt;Valve volvió a hacer lo que pocos fabricantes de hardware hacen: publicó los archivos &lt;strong&gt;CAD&lt;/strong&gt; del nuevo &lt;strong&gt;Steam Controller&lt;/strong&gt; y de su accesorio Puck bajo una licencia Creative Commons. Con esta movida, cualquier maker, modder o estudio de diseño puede descargar la geometría exacta del control, abrirla en su software favorito e imprimir, fresar o moldear accesorios que encajen al milímetro: skins, soportes para teléfono, bases de carga, extensores de grip o adaptadores de accesibilidad.&lt;/p&gt;

&lt;p&gt;La decisión llega pocos días después de que las primeras unidades del nuevo Steam Controller empezaran a llegar a los compradores afortunados que lograron reservarlo. Y aunque Valve ya tenía costumbre de publicar este tipo de material —lo hizo con Steam Deck, con Valve Index e incluso con el Steam Controller original hace una década— el gesto sigue siendo notable en una industria donde lo habitual es proteger cada milímetro de la carcasa con NDAs y patentes defensivas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué publicó Valve exactamente
&lt;/h2&gt;

&lt;p&gt;El paquete liberado por Valve, anunciado en Steam Community, contiene la &lt;strong&gt;topología de superficie&lt;/strong&gt; (surface topology) del cuerpo externo tanto del Steam Controller como del Puck. Para quienes no vienen del mundo del CAD: la topología de superficie es básicamente la geometría exterior del dispositivo —la cáscara que toca tu mano— sin los componentes electrónicos internos. Es lo justo y necesario para diseñar accesorios que encajen, sin exponer secretos industriales sobre el sensor de movimiento o la electrónica de los trackpads.&lt;/p&gt;

&lt;p&gt;Cada dispositivo viene en tres formatos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;STP&lt;/strong&gt; (Standard for the Exchange of Product Data) — el formato neutro estándar de la industria. Es el que querés abrir en SolidWorks, Fusion 360, FreeCAD, Onshape o cualquier CAD paramétrico serio. Mantiene la geometría como sólidos B-rep editables.- &lt;strong&gt;STL&lt;/strong&gt; (Stereolithography) — la malla triangulada lista para impresión 3D. Si tu objetivo es tirarla a una Bambu Lab, una Prusa o una Ender, este es el archivo que cargás directo en el slicer.- &lt;strong&gt;Diagrama de ingeniería&lt;/strong&gt; — un plano con cotas que marca explícitamente las zonas que no pueden quedar cubiertas, principalmente para preservar la integridad de las antenas inalámbricas y el funcionamiento de los sensores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ese último archivo es probablemente el más subestimado del paquete. Sin él, un diseñador podría tapar una antena interna sin querer y degradar la conectividad del control. Con el plano oficial, queda claro qué áreas del chasis hay que dejar libres para que el dispositivo siga funcionando como Valve lo diseñó.&lt;br&gt;
Los archivos STP y STL permiten diseñar accesorios con tolerancias precisas.&lt;/p&gt;
&lt;h2&gt;
  
  
  Una licencia generosa, pero con condiciones
&lt;/h2&gt;

&lt;p&gt;El detalle fino está en la licencia. Valve eligió una variante &lt;strong&gt;Creative Commons&lt;/strong&gt; bastante específica que combina tres cláusulas conocidas en el mundo del open content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NC (Non-Commercial):&lt;/strong&gt; el uso debe ser no comercial. No podés vender accesorios impresos a partir de estos archivos sin un acuerdo aparte.- &lt;strong&gt;BY (Attribution):&lt;/strong&gt; hay que atribuir el origen a Valve.- &lt;strong&gt;SA (Share-Alike):&lt;/strong&gt; los diseños derivados deben compartirse con la comunidad bajo la misma licencia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La cláusula más restrictiva es la &lt;strong&gt;NC&lt;/strong&gt;. Para un maker que quiere imprimir un soporte para su teléfono y compartirlo en Printables o Thingiverse, la licencia es perfecta. Para un emprendedor que quería abrir una tienda de accesorios en MercadoLibre o Tienda Nube vendiendo grips ergonómicos al por mayor, la cláusula es un freno. La buena noticia: Valve aclaró explícitamente que las empresas interesadas en hacer accesorios comerciales pueden contactarlos directamente para discutir términos. Es decir, hay puerta abierta a licencias comerciales caso por caso.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;📌 Nota:&lt;/strong&gt; CC-BY-NC-SA es una licencia perfectamente legítima del ecosistema Creative Commons, pero NO es considerada "libre" según las definiciones estrictas de la FSF o la OSI porque restringe el uso comercial. Es "open" en el sentido coloquial, no en el sentido legal estricto.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Por qué esto importa para LATAM
&lt;/h2&gt;

&lt;p&gt;Para la comunidad maker latinoamericana, esta liberación tiene un valor concreto que va más allá del fanservice gamer. En la región, donde los accesorios oficiales suelen llegar tarde, caros o directamente nunca llegan, contar con archivos CAD oficiales abre tres oportunidades inmediatas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Accesorios de accesibilidad.&lt;/strong&gt; Diseñadores y terapeutas ocupacionales en Argentina, México, Colombia o Chile pueden adaptar el control para personas con movilidad reducida sin esperar que Valve saque una versión "adaptive" como la que Microsoft tiene para Xbox. Tomás los STP, agregás extensiones, botones más grandes, un sistema de switch externo, y lo imprimís en una FabLab universitaria por una fracción del costo de un controlador adaptativo importado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Reparación y reemplazo.&lt;/strong&gt; Cuando un control oficial cuesta el equivalente a un sueldo mínimo en muchos países de la región, poder imprimir piezas exteriores de repuesto —tapas, bumpers, gatillos rotos— se vuelve una alternativa real frente a tirar el dispositivo o pagar repuestos importados con impuestos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Educación técnica.&lt;/strong&gt; Los STP de Valve son material didáctico de primera línea para cursos de diseño industrial, ergonomía o ingeniería mecatrónica. Se trata de un dispositivo real, vendido en producción, con una geometría compleja, restricciones electromagnéticas y consideraciones ergonómicas explicadas en los planos. No hay manera de comprar ese tipo de caso de estudio en un libro.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cómo abrir y usar los archivos
&lt;/h2&gt;

&lt;p&gt;Para quien nunca trabajó con CAD, la barrera de entrada en 2026 es más baja que nunca. El flujo típico para imprimir un accesorio sería el siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
  A["Descarga STP/STL"] --&amp;gt; B["Abrir en CAD"]
  B --&amp;gt; C["Diseñar accesorio"]
  C --&amp;gt; D["Exportar STL"]
  D --&amp;gt; E["Slicer"]
  E --&amp;gt; F["Impresora 3D"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Algunas opciones de software, todas con planes gratuitos para uso personal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FreeCAD 1.0&lt;/strong&gt; — open source, multiplataforma, importa STP nativo. Ideal si querés mantener todo el flujo en software libre.- &lt;strong&gt;Onshape&lt;/strong&gt; — corre en el navegador, gratis para proyectos públicos. No requiere instalar nada, ideal para quienes están en computadoras con poca RAM.- &lt;strong&gt;Autodesk Fusion 360&lt;/strong&gt; — gratis para uso personal con cuenta verificada. Es el estándar de facto en muchos hubs de fabricación.- &lt;strong&gt;Bambu Studio / PrusaSlicer / OrcaSlicer&lt;/strong&gt; — para slicear el STL final hacia G-code. Todos gratuitos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un comando típico para validar un STL antes de imprimir, usando la herramienta &lt;code&gt;admesh&lt;/code&gt; disponible en los principales sistemas operativos:&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="c"&gt;# Linux / macOS / Windows (con admesh instalado)&lt;/span&gt;
admesh &lt;span class="nt"&gt;--write-binary-stl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fixed.stl &lt;span class="nt"&gt;--check&lt;/span&gt; &lt;span class="nt"&gt;--tolerance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.01 steam_controller.stl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto verifica que la malla esté cerrada, sin triángulos invertidos ni huecos, antes de mandarla al slicer. Un STL roto puede arruinar una impresión de 12 horas, así que vale el minuto de validación.&lt;br&gt;
FreeCAD, Onshape o Fusion 360 son opciones gratuitas para abrir los STP.&lt;/p&gt;

&lt;h2&gt;
  
  
  El patrón Valve: hardware con vocación de ecosistema
&lt;/h2&gt;

&lt;p&gt;La liberación de archivos CAD encaja con un patrón que Valve ha venido cultivando durante años. Cuando publicaron el CAD del Steam Deck en 2022, la comunidad respondió con una explosión de docks, soportes refrigerantes, mochilas con corte exacto y carcasas con shrouds modificados. JSAUX, dbrand y media docena más de fabricantes construyeron negocios alrededor del ecosistema Steam Deck, varios bajo licencias comerciales acordadas directamente con Valve.&lt;/p&gt;

&lt;p&gt;El Valve Index siguió la misma lógica con sus mounts, faceplates y mods de confort que la comunidad de VR adoptó masivamente. El Steam Controller original, hace ya una década, también recibió este tratamiento. La consistencia del patrón sugiere que para Valve no se trata de un gesto aislado de buena voluntad, sino de una estrategia: hardware diseñado para que un ecosistema de terceros lo amplíe, lo personalice y lo mantenga vigente más allá del ciclo de vida que el fabricante puede sostener por sí solo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; Mientras Sony y Nintendo persiguen modders con cartas de cease-and-desist, Valve les entrega los CAD oficiales. Son dos teorías opuestas sobre qué es realmente "el producto": el hardware aislado o el ecosistema completo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Datos clave del lanzamiento
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2 dispositivos cubiertos:&lt;/strong&gt; el Steam Controller y el Puck.- &lt;strong&gt;3 formatos por dispositivo:&lt;/strong&gt; STP, STL y diagrama de ingeniería con zonas restringidas.- &lt;strong&gt;Licencia:&lt;/strong&gt; Creative Commons con cláusulas Attribution, Non-Commercial y Share-Alike (variante CC BY-NC-SA).- &lt;strong&gt;4 ediciones previas:&lt;/strong&gt; Valve ya había liberado CAD para Steam Controller original (2015), Valve Index (2019), Steam Deck (2022) y ahora el nuevo Steam Controller (2026).- &lt;strong&gt;Canales de uso comercial:&lt;/strong&gt; Valve invita a las empresas interesadas a contactar directamente para términos personalizados.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lo que viene
&lt;/h2&gt;

&lt;p&gt;En las próximas semanas se espera la oleada habitual de publicaciones en Printables, Thingiverse y MakerWorld con accesorios derivados. Históricamente los primeros suelen ser los más útiles: clips de teléfono para streaming con Steam Link, soportes verticales para escritorio, extensores de gatillo para manos grandes, y rampas de carga que se integran con el Puck. Después llegan las propuestas más creativas —shells temáticas, integraciones con setups de simulación, montajes para sillas de ruedas eléctricas— que Valve nunca habría sacado oficialmente pero que prosperan justamente porque la geometría está en manos de la comunidad.&lt;/p&gt;

&lt;p&gt;Para los desarrolladores, hay además una segunda capa de oportunidad: con la geometría exacta del control disponible, se vuelve trivial generar modelos 3D precisos para tutoriales en video, documentación interactiva, simuladores de control en el navegador con WebGL/Three.js o materiales de marketing para juegos que quieran mostrar el mapeo de botones de manera fiel.&lt;/p&gt;

&lt;p&gt;Es, en suma, otro recordatorio de que el hardware abierto —incluso parcialmente abierto, como en este caso— suele generar más valor que el hardware cerrado de manual. Y que en una industria donde la mayoría de los grandes fabricantes invierten en perseguir modders, hay todavía espacio para una compañía que prefiera entregarles las herramientas oficiales.&lt;/p&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Puedo vender accesorios impresos con estos archivos?
&lt;/h3&gt;

&lt;p&gt;No bajo la licencia por defecto. La cláusula NC de Creative Commons restringe explícitamente el uso comercial. Sin embargo, Valve aclaró que las empresas interesadas en comercializar accesorios pueden contactarlos directamente para acordar términos comerciales caso por caso, como ya hicieron empresas como JSAUX y dbrand con accesorios para Steam Deck.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué diferencia hay entre los archivos STP y STL?
&lt;/h3&gt;

&lt;p&gt;El STP (a veces llamado STEP) es un formato paramétrico que conserva la geometría como sólidos editables: podés modificarlo, agregar features, hacer operaciones booleanas. El STL es una malla de triángulos pensada para impresión 3D: ya no es editable como sólido, pero es lo que el slicer necesita. Para diseñar un accesorio nuevo querés el STP; para imprimir directamente sin modificar nada, el STL alcanza.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Por qué Valve no liberó también los componentes internos?
&lt;/h3&gt;

&lt;p&gt;Lo que Valve liberó es la "topología de superficie", es decir, solo la cáscara externa. Los componentes internos —placa, sensores, electrónica— siguen siendo propiedad cerrada y no se publicaron. La razón es práctica: para diseñar accesorios externos no se necesita la electrónica, y publicar la PCB completa expondría secretos industriales que sí están protegidos por patentes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué software gratuito puedo usar para abrir los archivos?
&lt;/h3&gt;

&lt;p&gt;FreeCAD 1.0 es completamente open source y abre STP nativamente. Onshape funciona en el navegador y es gratuito para proyectos públicos. Autodesk Fusion 360 es gratis para uso personal con cuenta verificada. Para impresión 3D directa con los STL, cualquier slicer estándar como Bambu Studio, PrusaSlicer u OrcaSlicer abre los archivos sin problema.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Esto significa que Valve va a abrir el firmware del Steam Controller?
&lt;/h3&gt;

&lt;p&gt;No necesariamente. Liberar los CAD de la carcasa externa es muy distinto de liberar el firmware o el código del software del controlador. Hasta el momento, Valve no anunció planes en esa dirección y mantiene tanto el firmware como los drivers como código cerrado, aunque parte del stack de Steam Input es accesible mediante su SDK.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Hay riesgo de que un accesorio mal diseñado dañe el control?
&lt;/h3&gt;

&lt;p&gt;Sí, especialmente si tapa zonas que el diagrama de ingeniería marca como restringidas. Cubrir antenas internas puede degradar el alcance inalámbrico, y mecanismos mal ajustados podrían forzar gatillos o sticks. La buena práctica es respetar al pie de la letra el plano oficial con las áreas restringidas y hacer pruebas progresivas antes de imprimir versiones finales.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.digitalfoundry.net/news/2026/05/valve-releases-steam-controller-cad-files-under-creative-commons-license" rel="noopener noreferrer"&gt;Digital Foundry&lt;/a&gt; — cobertura original del anuncio de Valve y detalles de los formatos liberados.- &lt;a href="https://creativecommons.org/share-your-work/cclicenses/" rel="noopener noreferrer"&gt;Creative Commons&lt;/a&gt; — explicación oficial de las variantes de licencia y qué permite cada cláusula (BY, NC, SA).- &lt;a href="https://www.freecad.org/" rel="noopener noreferrer"&gt;FreeCAD&lt;/a&gt; — software CAD paramétrico open source compatible con archivos STP del paquete de Valve.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>technology</category>
      <category>science</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Coverage Cat busca Growth Engineer fraccional a $15-25/hora</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 14:19:11 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/coverage-cat-busca-growth-engineer-fraccional-a-15-25hora-4b1o</link>
      <guid>https://dev.to/lu1tr0n/coverage-cat-busca-growth-engineer-fraccional-a-15-25hora-4b1o</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;El 5 de mayo de 2026, Coverage Cat —el corredor de seguros AI-native respaldado por Y Combinator— publicó una vacante peculiar: un puesto de &lt;strong&gt;Growth Engineer fraccional&lt;/strong&gt; a $15-25 por hora. No es una contratación de tiempo completo. No es un becario. Es una figura nueva que está ganando terreno en las startups de Silicon Valley: el ingeniero de crecimiento bajo contrato, dispuesto a saltar entre código, automatizaciones, integraciones con IA y, si hace falta, contratar gente en Craigslist para hacer canvassing presencial.&lt;/p&gt;

&lt;p&gt;La oferta de Coverage Cat parece menor a primera vista, pero ilustra tres tendencias que vienen acelerando desde 2024: el auge del rol de growth engineer como disciplina propia, la fragmentación del trabajo a tiempo parcial en tecnología y el aprovechamiento de talento global por parte de startups Y Combinator. Este puesto en particular abre interrogantes sobre cómo las empresas AI-native están repensando su estructura de personal y dónde caben los desarrolladores latinoamericanos en esa ecuación.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué pasó
&lt;/h2&gt;

&lt;p&gt;Coverage Cat publicó la vacante en su página oficial de careers el 5 de mayo de 2026. La descripción es breve pero reveladora: buscan a alguien &lt;em&gt;self-starter&lt;/em&gt;, entry level, dispuesto a apoyar al equipo con "organic growth engineering implementation and operations". El abanico de responsabilidades es deliberadamente amplio: desde "diseñar herramientas de IA para crecimiento" hasta "contratar gente para hacer canvassing presencial vía Craigslist".&lt;/p&gt;

&lt;p&gt;El salario es modesto para Estados Unidos: $15-25 por hora, con posibilidad de incentivos adicionales. La empresa explícitamente prohíbe aplicar a residentes de California, Massachusetts, Nueva Jersey, Oregon, Washington, Connecticut, Illinois, Rhode Island, Maryland, Michigan, Nuevo Hampshire y Hawái. La aplicación se canaliza únicamente a través de la plataforma &lt;em&gt;Work at a Startup&lt;/em&gt; de Y Combinator. Las solicitudes por correo electrónico, advierten, son descartadas sin revisión.&lt;/p&gt;

&lt;p&gt;Coverage Cat se autodescribe como "the world's AI-native insurance broker", una posición que ha estado promocionando desde su salida de Y Combinator. La frase clave de su anuncio resume la filosofía: "Growing the world's AI-native insurance broker still takes some IRL effort". Es decir: incluso una empresa AI-first necesita esfuerzo presencial humano que alguien tiene que coordinar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contexto: el ascenso del Growth Engineer
&lt;/h2&gt;

&lt;p&gt;El término &lt;em&gt;Growth Engineer&lt;/em&gt; surgió en empresas como Facebook, Pinterest y Airbnb a inicios de la década pasada. En esos primeros años, el rol consistía en aplicar técnicas de growth hacking con una base sólida de programación: instrumentar funnels de conversión, automatizar A/B tests, optimizar tasas de signup, integrar herramientas de analítica. Era una mezcla entre desarrollador full-stack, product manager y especialista en marketing digital.&lt;/p&gt;

&lt;p&gt;Hacia 2024, con la masificación de las APIs de modelos generativos, el rol se redefinió. Hoy, un Growth Engineer en una startup AI-native ya no escribe solamente código de tracking: orquesta agentes de IA que ejecutan campañas, integra LLMs en flujos de prospección, optimiza prompts para conversión y, en muchos casos, codea pipelines de datos para alimentar modelos de scoring. La línea entre marketing, producto e ingeniería se diluye más cada trimestre.&lt;/p&gt;

&lt;p&gt;La novedad de la oferta de Coverage Cat no está en el rol en sí, sino en su modalidad: &lt;strong&gt;fraccional&lt;/strong&gt;. La empresa no busca contratar a alguien por 40 horas semanales. Quiere acceso a un especialista por horas, sin compromiso laboral fijo. Este formato —típico hasta ahora del consultoring legal o financiero— está penetrando rápidamente en el mundo del software, y refleja la presión por mantener equipos centrales pequeños mientras se accede a habilidades especializadas bajo demanda.&lt;/p&gt;

&lt;p&gt;El growth engineer fraccional alterna entre código, analítica y operaciones tácticas.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué hace exactamente un Growth Engineer fraccional?
&lt;/h2&gt;

&lt;p&gt;La descripción de Coverage Cat es deliberadamente amplia, pero podemos desglosar las áreas típicas de un &lt;strong&gt;growth engineer fraccional&lt;/strong&gt; en una startup AI-native de 2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primero: experimentación de adquisición.&lt;/strong&gt; Esto incluye montar landing pages, configurar herramientas de analítica, instrumentar eventos en frontend y backend, y montar pipelines de datos para medir conversión por canal. Un fragmento típico de tracking server-side podría verse así:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;track&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@growth/analytics&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="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleSignup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Request&lt;/span&gt;&lt;span class="p"&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;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;track&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_signed_up&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;distinctId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-utm-source&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;direct&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;campaign&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-utm-campaign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;experiment_variant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ab_variant&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;first_touch_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&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;Response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;Segundo: automatización de prospección con IA.&lt;/strong&gt; Un growth engineer moderno integra modelos como Claude o GPT para generar mensajes personalizados, scoring de leads y filtrado automático de prospects. La frontera con un AI engineer es porosa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tercero: operaciones híbridas.&lt;/strong&gt; La frase de Coverage Cat sobre contratar gente en Craigslist no es retórica: en una startup AI-native, el growth engineer también orquesta humanos cuando los algoritmos no llegan. Diseña scripts de canvassing, gestiona contratistas, mide ROI por canal humano.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cuarto: integración con CRM y herramientas SaaS.&lt;/strong&gt; Conectar HubSpot con Stripe, Stripe con Slack, Slack con un workflow LangChain. Es plomería con propósito de crecimiento, y exige fluidez en muchas APIs distintas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; El stack típico de un growth engineer fraccional combina Segment o PostHog para analítica, Retool o Internal para herramientas internas, Make/Zapier o n8n para automatización, y un LLM de OpenAI/Anthropic para tareas de razonamiento.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  El flujo de trabajo de un Growth Engineer
&lt;/h2&gt;

&lt;p&gt;El ciclo de iteración es deliberadamente corto: hipótesis, código, datos, decisión. Un growth engineer competente cierra varios de estos ciclos por semana, no por trimestre.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    A["Hipotesis de crecimiento"] --&amp;gt; B["Diseno de experimento"]
    B --&amp;gt; C["Implementacion tecnica"]
    C --&amp;gt; D["Tracking y analitica"]
    D --&amp;gt; E["Analisis de resultados"]
    E --&amp;gt; F{"Funciono?"}
    F -- "Si" --&amp;gt; G["Escalar"]
    F -- "No" --&amp;gt; A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Datos y cifras: el mercado fraccional en tech
&lt;/h2&gt;

&lt;p&gt;El trabajo fraccional crece a tasas de doble dígito en Estados Unidos desde 2023. Según estimaciones de plataformas como Toptal, Upwork y Contra, el segmento de &lt;em&gt;fractional executives&lt;/em&gt; y &lt;em&gt;fractional engineers&lt;/em&gt; creció más de 40% año contra año en 2025. El salario reportado en la oferta de Coverage Cat —$15 a $25 por hora— es bajo respecto a la mediana del Bay Area, pero competitivo internacionalmente: equivale a entre $2.400 y $4.000 mensuales asumiendo 40 horas semanales.&lt;/p&gt;

&lt;p&gt;Para contexto: el salario promedio de un desarrollador junior en Buenos Aires, Ciudad de México o San Salvador ronda los $1.500 a $2.500 mensuales en 2026. Un puesto remoto pagando $20/hora con flexibilidad horaria está, por tanto, en la franja superior del mercado regional, especialmente para perfiles entry-level. La narrativa de "salario bajo en EE.UU., competitivo en LATAM" no es nueva, pero la modalidad fraccional añade una capa: no estás compitiendo por uno de cinco puestos full-time, sino por horas de varias startups.&lt;/p&gt;

&lt;p&gt;La restricción geográfica que aplica Coverage Cat —excluyendo doce estados de Estados Unidos— responde a complejidades laborales y fiscales: California, Massachusetts y Washington tienen leyes estrictas sobre clasificación de contratistas (en la línea de la AB5 californiana). La empresa no excluye explícitamente a aplicantes internacionales, lo que abre la puerta a desarrolladores de LATAM siempre que la aplicación se realice por la plataforma de Y Combinator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impacto y análisis: oportunidad para LATAM
&lt;/h2&gt;

&lt;p&gt;El puesto de Coverage Cat es un microcosmos de una tendencia más amplia: las startups AI-native están externalizando funciones tácticas a contratistas remotos para mantener equipos centrales pequeños. Esto tiene implicaciones concretas para los desarrolladores en América Latina que sepan posicionarse.&lt;/p&gt;

&lt;p&gt;Primero, la barrera de entrada al ecosistema YC se reduce. Aplicar a un puesto fraccional es menos competido que aplicar a un puesto full-time, y permite construir trayectoria con startups de alto perfil sin reubicación. Segundo, las habilidades pedidas son combinaciones híbridas que muchos desarrolladores latinos ya cultivan por necesidad: full-stack ligero, automatización, integración de SaaS, prompt engineering, gestión de contratistas.&lt;/p&gt;

&lt;p&gt;Tercero, la oferta sienta un precedente: empresas YC con foco en IA están dispuestas a pagar $20/hora por trabajo de growth engineering remoto. Es una señal de calibración para freelancers y consultores hispanohablantes que pueden posicionar sus servicios con esa referencia, sin caer en la trampa de cobrar por debajo del mercado regional.&lt;/p&gt;

&lt;p&gt;El trabajo fraccional remoto abre la puerta de las startups YC al talento LATAM.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;📌 Nota:&lt;/strong&gt; La oferta exige aplicar exclusivamente vía Y Combinator's Work at a Startup. Crear un perfil sólido en esa plataforma —con repos en GitHub, casos de estudio y links a productos en producción— es prerrequisito para cualquier desarrollador LATAM que quiera competir por estos roles.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Qué sigue: el futuro del trabajo en startups AI-native
&lt;/h2&gt;

&lt;p&gt;La oferta de Coverage Cat encaja con una hipótesis que viene tomando forma: en 2026, las startups AI-native operarán con plantillas más pequeñas pero ecosistemas extendidos de contratistas. Los founders mantienen un núcleo de 5 a 10 ingenieros senior y rodean ese núcleo de 10 a 30 contratistas fraccionales —diseñadores, growth engineers fraccionales, data engineers, content writers— escalando o desescalando según necesidad.&lt;/p&gt;

&lt;p&gt;Para los desarrolladores que sepan aprovechar esta dinámica, la oportunidad es doble: ingresos diversificados (varios contratos pequeños en lugar de uno grande) y exposición a múltiples industrias y tecnologías. Para los que no se adapten, el riesgo es la commoditización: si tu trabajo es replicable y por horas, vas a competir globalmente con todos los demás candidatos por horas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; La diferencia entre un growth engineer fraccional commodity y uno premium no es la velocidad de tipeo. Es el portafolio de experimentos exitosos documentados, el dominio de stacks AI-native concretos y la capacidad de explicar resultados en términos de revenue, no de líneas de código.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Qué es exactamente un growth engineer fraccional?
&lt;/h3&gt;

&lt;p&gt;Un ingeniero que trabaja por horas o proyectos —no a tiempo completo— en iniciativas de crecimiento de una empresa. Combina código, analítica, automatización con IA y operaciones tácticas como gestión de campañas o canvassing presencial.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Puedo aplicar al puesto de Coverage Cat desde LATAM?
&lt;/h3&gt;

&lt;p&gt;La oferta no excluye explícitamente aplicantes internacionales. Sin embargo, exige aplicar mediante Y Combinator's Work at a Startup. Crear un perfil verificado en esa plataforma con repos, casos de estudio y experiencia documentada es el primer paso obligatorio.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Es competitivo el salario de $15-25/hora?
&lt;/h3&gt;

&lt;p&gt;Para mercados como California o Nueva York, está por debajo del estándar local. Para LATAM, es competitivo: $20/hora a 40 horas semanales equivale a unos $3.200 mensuales, por encima de la mediana de developers junior y mid-level en la región en 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué habilidades necesito para un puesto así?
&lt;/h3&gt;

&lt;p&gt;TypeScript o Python para automatizaciones, conocimiento de herramientas de analítica (PostHog, Mixpanel, Segment), experiencia integrando APIs de SaaS, dominio básico de SQL, y comodidad usando LLMs (Claude, GPT-4) para tareas de razonamiento y generación de contenido.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué diferencia hay entre un growth engineer y un AI engineer?
&lt;/h3&gt;

&lt;p&gt;Un AI engineer construye sistemas que dependen de modelos de IA: pipelines, embeddings, fine-tuning, evaluación. Un growth engineer aplica esos sistemas (entre otras herramientas) para mover métricas de negocio: adquisición, activación, retención. Hay solapamiento creciente, pero el foco diferencia.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Por qué Coverage Cat excluye varios estados de EE.UU.?
&lt;/h3&gt;

&lt;p&gt;Por leyes laborales locales que complican la clasificación de contratistas independientes (típicamente AB5 en California y leyes similares en otros estados). Es una decisión de cumplimiento regulatorio, no de preferencia técnica.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.coveragecat.com/careers/engineering/fractional-growth-engineer" rel="noopener noreferrer"&gt;Coverage Cat — Fractional Growth Engineer&lt;/a&gt; — La oferta original analizada en este artículo.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.workatastartup.com/" rel="noopener noreferrer"&gt;Y Combinator's Work at a Startup&lt;/a&gt; — Plataforma exclusiva de aplicación al puesto.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Growth_hacking" rel="noopener noreferrer"&gt;Wikipedia: Growth hacking&lt;/a&gt; — Antecedentes y definición de la disciplina de la que deriva el rol de growth engineer.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Y_Combinator" rel="noopener noreferrer"&gt;Wikipedia: Y Combinator&lt;/a&gt; — Contexto sobre la aceleradora detrás de Coverage Cat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Cloudflare Agents Week 2026: 20 productos en una semana para reescribir cómo se construye software con agentes</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 12:48:50 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/cloudflare-agents-week-2026-20-productos-en-una-semana-para-reescribir-como-se-construye-software-49m</link>
      <guid>https://dev.to/lu1tr0n/cloudflare-agents-week-2026-20-productos-en-una-semana-para-reescribir-como-se-construye-software-49m</guid>
      <description>&lt;p&gt;La semana del &lt;strong&gt;13 al 20 de abril de 2026&lt;/strong&gt;, Cloudflare ejecutó la batería de anuncios más densa de su historia: &lt;strong&gt;más de veinte productos lanzados o promovidos a disponibilidad general&lt;/strong&gt; durante lo que la empresa llamó &lt;a href="https://www.cloudflare.com/agents-week/" rel="noopener noreferrer"&gt;Agents Week 2026&lt;/a&gt;. El &lt;a href="https://blog.cloudflare.com/agents-week-in-review/" rel="noopener noreferrer"&gt;resumen oficial&lt;/a&gt;, el &lt;a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-expands-its-agent-cloud-to-power-the-next-generation-of-agents/" rel="noopener noreferrer"&gt;press release del 13 de abril&lt;/a&gt; y la &lt;a href="https://www.cloudflare.com/agents-week/updates/" rel="noopener noreferrer"&gt;página de updates&lt;/a&gt; coinciden en una tesis estratégica: la red global de Cloudflare —330 ciudades, infraestructura edge, isolates de V8 como sustrato de cómputo— se reorganiza para tratar a los &lt;strong&gt;agentes IA como ciudadanos de primera clase&lt;/strong&gt;, no como una capa decorativa sobre Workers tradicionales.&lt;/p&gt;

&lt;p&gt;La frase del CEO &lt;strong&gt;Matthew Prince&lt;/strong&gt; que enmarca el lanzamiento es directa:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The way people build software is fundamentally changing. We are entering a world where agents are the ones writing and executing code."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Y la pieza que cierra el círculo es la cita de &lt;strong&gt;Rohan Varma&lt;/strong&gt;, jefe de producto de Codex en OpenAI, en el mismo press release:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Cloud agents are quickly becoming a foundational building block for how work gets done, and with Cloudflare, we're making it dramatically easier for developers to deploy production-ready agents powered by GPT-5.4 and Codex to run real enterprise workloads at scale."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El alcance del lanzamiento no permite cobertura uniforme: este artículo se concentra en los &lt;strong&gt;cinco productos con mayor impacto operativo&lt;/strong&gt; —Dynamic Workers, Sandboxes en GA, Artifacts, AI Platform y la nueva cf CLI— y enumera el resto en bloques temáticos. La cobertura técnica se apoya en los blogs oficiales de Cloudflare, la cobertura de &lt;a href="https://www.infoq.com/news/2026/04/cloudflare-sandboxes-ga/" rel="noopener noreferrer"&gt;InfoQ sobre Sandboxes GA&lt;/a&gt;, &lt;a href="https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html" rel="noopener noreferrer"&gt;InfoWorld sobre Dynamic Workers&lt;/a&gt;, y &lt;a href="https://www.theregister.com/2026/04/13/cloudflare_expanding_wrangler_cli_functionality/" rel="noopener noreferrer"&gt;The Register sobre la unificación de Wrangler CLI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic Workers: isolates V8 100× más rápidos que containers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.cloudflare.com/dynamic-workers/" rel="noopener noreferrer"&gt;Dynamic Workers&lt;/a&gt; es la pieza arquitectónica más relevante del lanzamiento. La premisa es simple pero radical: cuando un agente IA genera código en tiempo de ejecución —típicamente TypeScript— ¿dónde lo ejecutás? Las opciones tradicionales son containers, máquinas virtuales o sandboxes WASM. Cloudflare propone usar &lt;strong&gt;isolates de V8&lt;/strong&gt;, los mismos que Workers usa desde hace años, pero adaptados para una carga de trabajo distinta: ejecuciones efímeras de alta concurrencia donde cada solicitud de usuario puede instanciar un isolate propio.&lt;/p&gt;

&lt;p&gt;Los números que Cloudflare publica son contundentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cold start: ~5 ms&lt;/strong&gt; —comparado con ~500 ms típicos de containers, es &lt;strong&gt;100× más rápido&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memoria: 10-100× más eficiente&lt;/strong&gt; que containers de propósito general.&lt;/li&gt;
&lt;li&gt;Cada isolate consume del orden de unos pocos megabytes de RAM, frente a las decenas o centenas de un container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El patrón de uso oficial se llama &lt;strong&gt;"Code Mode"&lt;/strong&gt;: en lugar de pedir al modelo que ejecute múltiples llamadas a herramientas separadas —el patrón clásico de tool calling—, se le pide que &lt;strong&gt;escriba una función TypeScript corta contra una API definida&lt;/strong&gt; y se ejecuta una sola vez. Esto reduce la chatter agente↔backend de decenas de round-trips a uno solo, y aprovecha que los modelos modernos generan código TypeScript bien.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Ejemplo conceptual de Code Mode con Dynamic Workers&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  Escribe una función TypeScript que tome el array {{products}}
  y devuelva los tres más caros con descuento del 15%.
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Cloudflare ejecuta el código generado en un isolate fresco&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DYNAMIC_WORKER&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;generated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;products&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Latencia total: ~5ms para arrancar el isolate + tiempo de cómputo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El producto está en &lt;strong&gt;beta abierta bajo plan pagado de Workers&lt;/strong&gt; desde marzo de 2026. El pricing es &lt;strong&gt;0.002 USD por Worker único cargado al día&lt;/strong&gt;, más cargos de CPU e invocación —tarifa waived durante la beta—. Las &lt;strong&gt;Durable Object Facets&lt;/strong&gt;, anunciadas en la misma semana, permiten agregar bases de datos SQLite aisladas dentro de Dynamic Workers para estado persistente sin salir del isolate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloudflare Sandboxes GA: un computador completo por agente
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.cloudflare.com/sandbox-ga/" rel="noopener noreferrer"&gt;Sandboxes alcanzó GA&lt;/a&gt; en Agents Week. La diferencia con Dynamic Workers es de naturaleza: si Dynamic Workers son para &lt;strong&gt;ejecución efímera de código&lt;/strong&gt;, Sandboxes son para &lt;strong&gt;sesiones largas de desarrollo agente&lt;/strong&gt; donde se requiere shell, filesystem, procesos en background y herramientas Linux completas. Un Sandbox es, literalmente, un entorno Linux persistente y aislado que un agente puede usar como un developer humano usa una VM.&lt;/p&gt;

&lt;p&gt;Las capacidades específicas que la GA agrega sobre la beta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inyección segura de credenciales&lt;/strong&gt; con egress proxies, para que el agente pueda hacer push a GitHub o llamar APIs autenticadas sin que las credenciales pasen por el modelo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soporte de PTY terminal&lt;/strong&gt; —el agente puede correr &lt;code&gt;vim&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;htop&lt;/code&gt;, programas interactivos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code interpreters persistentes&lt;/strong&gt; —Python, Node.js, etcétera, con estado entre invocaciones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filesystem watching&lt;/strong&gt; —el sandbox emite eventos en tiempo real cuando un archivo cambia, sin necesidad de polling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recuperación basada en snapshots&lt;/strong&gt;: el disco completo se serializa, y restaurar de un snapshot toma ~2 segundos contra los ~30 segundos de bootear desde cero, clonar repo y correr &lt;code&gt;npm install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active CPU pricing&lt;/strong&gt; —solo se cobra por ciclos efectivamente usados, no por tiempo de pared del sandbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El patrón de uso más interesante que Cloudflare destaca son &lt;strong&gt;forks de sesión&lt;/strong&gt;: bootear cuatro Sandboxes desde el mismo snapshot para explorar cuatro abordajes en paralelo. Para una tarea de "intentá tres formas distintas de resolver este bug y reportá la mejor", el agente literalmente paraleliza la exploración sin pelear con merges en el filesystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Figma&lt;/strong&gt; ya está corriendo workloads de agentes en producción sobre Sandboxes, según el anuncio. Es el primer cliente de referencia público y explícito.&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="c"&gt;# Crear un sandbox y conectarse&lt;/span&gt;
cf sandboxes create &lt;span class="nt"&gt;--name&lt;/span&gt; agent-debug-1 &lt;span class="nt"&gt;--image&lt;/span&gt; ubuntu-24.04
cf sandboxes ssh agent-debug-1

&lt;span class="c"&gt;# El agente trabaja dentro del sandbox:&lt;/span&gt;
git clone git@github.com:my-org/repo.git
&lt;span class="nb"&gt;cd &lt;/span&gt;repo &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;test&lt;/span&gt;

&lt;span class="c"&gt;# Cuando termina, snapshot para reusar&lt;/span&gt;
cf sandboxes snapshot agent-debug-1 &lt;span class="nt"&gt;--tag&lt;/span&gt; clean-state-after-tests

&lt;span class="c"&gt;# Forkear cuatro veces para exploración paralela&lt;/span&gt;
cf sandboxes restore &lt;span class="nt"&gt;--tag&lt;/span&gt; clean-state-after-tests &lt;span class="nt"&gt;--count&lt;/span&gt; 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Artifacts: storage versionado que habla Git
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.cloudflare.com/artifacts-git-for-agents-beta/" rel="noopener noreferrer"&gt;Artifacts&lt;/a&gt; responde a una pregunta concreta: cuando un agente trabaja en una sesión larga, &lt;strong&gt;¿dónde guarda el estado intermedio de su trabajo de manera que sea reproducible, versionable y compartible?&lt;/strong&gt; Las respuestas tradicionales son S3 + lockfiles caseros, o GitHub con sus límites de cuenta y latencia. Cloudflare propone un &lt;strong&gt;storage Git-compatible nativo&lt;/strong&gt;, construido sobre &lt;strong&gt;Durable Objects&lt;/strong&gt; y un &lt;strong&gt;servidor Git en WASM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Las propiedades técnicas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decenas de millones de repositorios&lt;/strong&gt; por cuenta, con bajo overhead por repo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cada repo es un Git remote auténtico&lt;/strong&gt; —cualquier cliente Git, incluyendo &lt;code&gt;git clone&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt;, &lt;code&gt;git fetch&lt;/code&gt;, funciona contra una URL HTTPS de Artifacts—. No hay protocolo nuevo que aprender.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fork desde cualquier remote&lt;/strong&gt; —incluyendo repositorios públicos de GitHub, GitLab, Codeberg— para que el agente parta de un estado conocido.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operaciones nativas para agentes&lt;/strong&gt;: &lt;code&gt;git diff&lt;/code&gt;, &lt;code&gt;git log&lt;/code&gt;, &lt;code&gt;git search&lt;/code&gt; directamente sobre la URL, sin necesidad de clonar localmente primero.&lt;/li&gt;
&lt;li&gt;Cloudflare &lt;strong&gt;usa Artifacts internamente&lt;/strong&gt; para que sus propios agentes persistan estado de sesión: cada sesión del agente Lee genera un repo per-session que captura tanto el filesystem como el historial conversacional, permitiendo time-travel.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Un agente crea un repo nuevo en Artifacts&lt;/span&gt;
git clone https://artifacts.cloudflare.com/u/my-org/empty.git project-x
&lt;span class="nb"&gt;cd &lt;/span&gt;project-x

&lt;span class="c"&gt;# Trabaja normalmente&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"console.log('hi')"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; index.js
git add &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"first iteration"&lt;/span&gt;

&lt;span class="c"&gt;# Al final de la sesión, el repo queda persistido&lt;/span&gt;
git push origin main

&lt;span class="c"&gt;# Un humano luego puede explorar desde su laptop&lt;/span&gt;
git clone https://artifacts.cloudflare.com/u/my-org/project-x.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El &lt;a href="https://developers.cloudflare.com/changelog/post/2026-04-16-artifacts-now-in-beta/" rel="noopener noreferrer"&gt;changelog del 16 de abril&lt;/a&gt; marca el inicio de la beta privada. La &lt;strong&gt;beta pública estaba programada para inicios de mayo de 2026&lt;/strong&gt;. El pricing se cobra por almacenamiento consumido + operaciones (clones, forks, pushes, pulls), con repos grandes proporcionalmente más caros que pequeños.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Platform: una API para 70+ modelos de 12+ proveedores
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.cloudflare.com/ai-platform/" rel="noopener noreferrer"&gt;AI Platform&lt;/a&gt; consolida el catálogo de modelos. La premisa: cualquier agente serio terminará llamando a &lt;strong&gt;múltiples proveedores de modelos&lt;/strong&gt; —OpenAI para razonamiento, MiniMax para video, AssemblyAI para audio, modelos open-source para tareas específicas—. Hoy eso significa integrar siete SDKs distintos, gestionar siete sets de credenciales, y reconciliar siete estructuras de pricing. AI Platform ofrece un &lt;strong&gt;único binding &lt;code&gt;AI.run()&lt;/code&gt;&lt;/strong&gt; que enruta cualquier llamada al proveedor adecuado.&lt;/p&gt;

&lt;p&gt;La lista de proveedores soportados al día del lanzamiento incluye &lt;strong&gt;Alibaba Cloud, AssemblyAI, Bytedance, Google, InWorld, MiniMax, OpenAI, Pixverse, Recraft, Runway, Vidu&lt;/strong&gt;, además de los modelos open-source corriendo nativamente en Workers AI. El total reportado: &lt;strong&gt;más de 70 modelos&lt;/strong&gt; desde &lt;strong&gt;12+ proveedores&lt;/strong&gt;, con expansión planeada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Worker que llama a varios modelos sin cambiar SDK&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Modelo de OpenAI&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;summary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@openai/gpt-5.4&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="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Resume este texto: ...&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="c1"&gt;// Modelo de imagen de Recraft&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@recraft/recraft-v3&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="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// Modelo open-source en Workers AI&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;embedding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@cf/baai/bge-large-en-v1.5&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="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;]&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;Response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;embedding&lt;/span&gt; &lt;span class="p"&gt;});&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;La &lt;strong&gt;API REST está en camino&lt;/strong&gt; para entornos fuera de Workers, lo cual permite usar AI Platform desde aplicaciones Python, Go, o cualquier stack tradicional sin migrar el código a edge. La capa de &lt;strong&gt;monitoreo de costos centralizado&lt;/strong&gt; es notable: una sola vista para todo el gasto en IA de la organización, con metadatos personalizados que permiten desglose por usuario final, cliente del SaaS, o flujo de trabajo específico.&lt;/p&gt;

&lt;p&gt;La comparación natural es con &lt;strong&gt;OpenRouter&lt;/strong&gt; —un agregador que cobra un margen sobre los proveedores subyacentes—. La diferencia estructural es que Cloudflare ya &lt;strong&gt;hostea muchos de los modelos open-source en su red&lt;/strong&gt; y puede ofrecer latencias competitivas para esos sin pago de margen al proveedor original. Para los modelos comerciales (OpenAI, Google, etc.), Cloudflare es esencialmente un proxy con observabilidad agregada.&lt;/p&gt;

&lt;h2&gt;
  
  
  cf CLI: el reemplazo unificado de Wrangler
&lt;/h2&gt;

&lt;p&gt;La &lt;a href="https://blog.cloudflare.com/cf-cli-local-explorer/" rel="noopener noreferrer"&gt;nueva cf CLI&lt;/a&gt; es la pieza con menor visibilidad mediática pero quizás la mayor consecuencia ergonómica de la semana. Hasta ahora, un developer de Cloudflare que toca varios productos vive en un infierno de fragmentación: Workers se gestiona con &lt;code&gt;wrangler&lt;/code&gt;, DNS se gestiona desde el dashboard, R2 tiene su propio CLI, los Pages tenían su propio flujo, y para infraestructura IaC se usa Terraform o Pulumi. Cada herramienta cubre un subconjunto de la API total y los nombres de comando son inconsistentes.&lt;/p&gt;

&lt;p&gt;cf, anunciada en preview técnica el 13 de abril por The Register, &lt;strong&gt;consolida todo en una herramienta&lt;/strong&gt;:&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="c"&gt;# Instalación&lt;/span&gt;
npx cf
&lt;span class="c"&gt;# o&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cf

&lt;span class="c"&gt;# Comandos unificados de ejemplo&lt;/span&gt;
cf workers deploy ./my-worker.ts
cf dns records add example.com www A 192.0.2.1
cf r2 bucket create my-bucket
cf sandboxes create &lt;span class="nt"&gt;--name&lt;/span&gt; agent-1
cf artifacts repo create my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La arquitectura interna es notable: Cloudflare construyó un &lt;strong&gt;schema TypeScript que define la totalidad de su API, los comandos CLI, los argumentos y el contexto de uso&lt;/strong&gt;. Desde ese schema se generan automáticamente la CLI, los SDKs en distintos lenguajes, y la documentación. La motivación explícita es que &lt;strong&gt;los agentes IA puedan descubrir y usar la API de Cloudflare&lt;/strong&gt; sin que un humano les tenga que enseñar cada producto nuevo —el schema es la fuente de verdad—.&lt;/p&gt;

&lt;p&gt;A día de la preview, cf cubre solo una porción de los productos de Cloudflare. La integración total con las funciones de Wrangler está prevista para los próximos meses. Para producción seria, todavía conviene mantener wrangler en el flujo principal y experimentar con cf en paralelo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los otros 15 productos: panorama completo
&lt;/h2&gt;

&lt;p&gt;Más allá de las cinco piezas anteriores, Agents Week incluyó otros 15 lanzamientos que vale la pena nombrar para tener el mapa completo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compute y orquestación&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Outbound Workers&lt;/strong&gt; — proxy de egreso para Sandboxes con control granular sobre tráfico saliente, esencial para inyección de credenciales sin exponerlas al modelo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflows v2&lt;/strong&gt; — motor de ejecución durable con &lt;strong&gt;límite de concurrencia de 50.000&lt;/strong&gt; y 300 creaciones por segundo. Para agentes que requieren correr tareas que duran minutos u horas con tolerancia a fallos, esto es el motor de orquestación nativo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Mesh&lt;/strong&gt; — red privada segura para que agentes hablen entre sí o con servicios internos sin pasar por internet pública.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed OAuth for Access&lt;/strong&gt; — autenticación de agentes contra servicios protegidos con OAuth, gestionada por Cloudflare en lugar del developer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Tokens mejorados&lt;/strong&gt; — tokens escaneables con prefijos identificables y permisos con alcance de recursos específicos, no solo de servicios completos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise MCP&lt;/strong&gt; — arquitectura de referencia para desplegar Model Context Protocol en organizaciones grandes con compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Toolbox de agentes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Think&lt;/strong&gt; — SDK para tareas de larga duración con manejo nativo de contexto persistente, retomas y deltas de estado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Agents&lt;/strong&gt; — pipeline experimental de voz (STT → LLM → TTS) con baja latencia agregada.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Email Service&lt;/strong&gt; — beta pública. Send/receive/process email nativo desde código de agentes, sin necesidad de SendGrid o SES.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Memory&lt;/strong&gt; — servicio de memoria persistente compartida entre sesiones del agente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Search&lt;/strong&gt; — primitivo de búsqueda optimizado para queries generadas por agentes, con resultados estructurados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser Run&lt;/strong&gt; — entorno de navegador headless para agentes con &lt;strong&gt;4× más concurrencia&lt;/strong&gt; que la versión anterior. Útil para web scraping, automation, testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;De prototipo a producción&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Lee&lt;/strong&gt; — agente integrado al dashboard de Cloudflare con sandbox TypeScript para ayudar al developer mientras configura productos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flagship&lt;/strong&gt; — feature flags nativos con evaluación sub-milisegundo en edge, sin necesidad de LaunchDarkly o Split.io para casos básicos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integración PlanetScale + Workers&lt;/strong&gt; — bases de datos MySQL escalables consumibles desde Workers con bajo overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Registrar API&lt;/strong&gt; (beta) — automatización completa de compra y gestión de dominios, importante para agentes que crean infra programáticamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Web agéntica&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Readiness Score&lt;/strong&gt; — herramienta de evaluación que mide qué tan bien preparado está un sitio web para ser leído por agentes IA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirects for AI Training&lt;/strong&gt; — control granular sobre qué crawlers verificados pueden indexar contenido y qué redirecciones específicas reciben.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FL2&lt;/strong&gt; — nueva arquitectura interna que mejora rendimiento global en &lt;strong&gt;60%&lt;/strong&gt; vs configuración anterior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared Dictionary Compression&lt;/strong&gt; — compresión optimizada para tráfico repetido entre cliente y edge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unweight&lt;/strong&gt; — técnica que &lt;strong&gt;reduce 22% la huella de modelos&lt;/strong&gt; sin pérdida significativa de calidad, importante para hosting eficiente en Workers AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cómo empezar: implementación práctica
&lt;/h2&gt;

&lt;p&gt;Para un equipo que quiere empezar a usar este stack hoy, la ruta más razonable depende del caso de uso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso A: Quiero darle a mi agente un computador completo donde correr código real&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Suscribirse al plan Workers (paid). Habilitar Sandboxes en el dashboard.&lt;/span&gt;
&lt;span class="c1"&gt;// npm install @cloudflare/sandbox-sdk&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Sandbox&lt;/span&gt; &lt;span class="p"&gt;}&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;@cloudflare/sandbox-sdk&lt;/span&gt;&lt;span class="dl"&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;sandbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ubuntu-24.04&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shared&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2GB&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;egressProxy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;outbound-workers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;git clone https://artifacts.cloudflare.com/u/me/empty.git&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;npm install &amp;amp;&amp;amp; npm test&lt;/span&gt;&lt;span class="dl"&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;snapshot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;after-tests&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;&lt;strong&gt;Caso B: Quiero que mi agente ejecute código TypeScript que él mismo escribe&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Code Mode con Dynamic Workers&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DynamicWorker&lt;/span&gt; &lt;span class="p"&gt;}&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;@cloudflare/dynamic-workers&lt;/span&gt;&lt;span class="dl"&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;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;DynamicWorker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;bindings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;products&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRODUCTS_KV&lt;/span&gt; &lt;span class="p"&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;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@openai/gpt-5.4&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="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Escribí TypeScript que filtre productos por precio.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&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;Caso C: Quiero unificar mi stack multi-modelo bajo una sola API&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// AI Platform desde Workers&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;claude&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@anthropic/claude-opus-4-7&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="p"&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;gpt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@openai/gpt-5.4&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="p"&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;llama&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@meta/llama-4-90b-instruct&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="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;Caso D: Quiero gestionar todo Cloudflare desde una sola herramienta&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cf
cf login
cf workers list
cf sandboxes list
cf artifacts repo list
&lt;span class="c"&gt;# La preview todavía no cubre 100% de la API, complementar con wrangler donde haga falta&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Posicionamiento estratégico: ¿qué cambia el panorama?
&lt;/h2&gt;

&lt;p&gt;El conjunto de anuncios deja a Cloudflare en una posición distinta a la del año pasado. Donde antes era &lt;strong&gt;una CDN con extras&lt;/strong&gt;, ahora es &lt;strong&gt;una plataforma de cómputo agente edge-first&lt;/strong&gt;, con tres ejes que explican la apuesta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primer eje: la economía del isolate vs el container&lt;/strong&gt;. Si los agentes IA generan código que se ejecuta una vez y se descarta, el modelo de pricing y arquitectura de containers tradicional no escala. Un container que arranca en 500 ms y consume 100 MB es prohibitivo para 10.000 invocaciones por minuto. Un isolate que arranca en 5 ms y consume 5 MB hace ese mismo workload trivial. Cloudflare apuesta a que &lt;strong&gt;la ejecución agente será de muy alta concurrencia y muy baja duración&lt;/strong&gt;, donde su arquitectura de isolates V8 nativa es estructuralmente mejor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Segundo eje: integración con el ecosistema de modelos comerciales&lt;/strong&gt;. La cita de Rohan Varma de OpenAI no es decorativa: indica que OpenAI está empujando a Cloudflare como sustrato preferido para correr Codex y GPT-5.4 en producción enterprise. Para Cloudflare, esto es &lt;strong&gt;legitimación competitiva&lt;/strong&gt;: el hyperscaler que vende hospedaje de modelos comerciales sin requerir AWS o GCP. Para OpenAI, es &lt;strong&gt;diversificación de infraestructura&lt;/strong&gt; sin construir datacenters propios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tercer eje: la API como producto consumible por agentes&lt;/strong&gt;. La cf CLI con su schema TypeScript es la pieza más radical. La hipótesis es que los agentes serán &lt;strong&gt;el principal consumidor de las APIs de cloud computing en el futuro próximo&lt;/strong&gt;, y que la herramienta que mejor exponga su superficie a los modelos —no a los humanos— ganará ese mercado. Cloudflare está construyendo para esa hipótesis hoy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lección de fondo
&lt;/h2&gt;

&lt;p&gt;Hay una pregunta de gobernanza técnica detrás de Agents Week que vale la pena retener: &lt;strong&gt;¿qué pasa cuando una empresa tiene la velocidad para lanzar veinte productos coordinados en una semana en una categoría que sus competidores apenas están empezando a explorar?&lt;/strong&gt; AWS, Azure y GCP tienen ofertas equivalentes esparcidas a lo largo de doce meses de re:Invent, Build e I/O respectivamente. Cloudflare condensa el equivalente de un re:Invent en cinco días. La consecuencia operativa es que &lt;strong&gt;establece el vocabulario y los defaults del campo&lt;/strong&gt; —"isolate-based agent runtime", "Git-compatible artifact storage", "unified inference platform"— mientras los competidores todavía piensan en cómo posicionarse.&lt;/p&gt;

&lt;p&gt;La otra lección es de calado para developers. &lt;strong&gt;El stack agente está dejando de ser un experimento y se está convirtiendo en infraestructura tratable como cualquier otra&lt;/strong&gt;. Sandboxes con pricing por CPU activo, Workflows con SLA de concurrencia, OAuth gestionado, observabilidad centralizada: estos son los atributos de un producto enterprise maduro, no de un demo. Para equipos que estaban esperando "a que el campo se asiente antes de invertir", el momento de evaluar es ahora —no porque los productos sean perfectos, sino porque los defaults se están definiendo y vale la pena participar de la conversación con código en mano—.&lt;/p&gt;

&lt;p&gt;Y para quien recién empieza: el plan razonable es &lt;strong&gt;suscribirse al Workers paid plan, crear una cuenta, abrir un Sandbox y escribir un agente trivial de extremo a extremo&lt;/strong&gt;. La barrera de entrada bajó esta semana significativamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;Agents Week 2026 in review&lt;/em&gt; (resumen oficial): &lt;a href="https://blog.cloudflare.com/agents-week-in-review/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/agents-week-in-review/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;Sandboxing AI agents, 100x faster&lt;/em&gt; (Dynamic Workers): &lt;a href="https://blog.cloudflare.com/dynamic-workers/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/dynamic-workers/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;Agents have their own computers with Sandboxes GA&lt;/em&gt;: &lt;a href="https://blog.cloudflare.com/sandbox-ga/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/sandbox-ga/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;Artifacts: versioned storage that speaks Git&lt;/em&gt;: &lt;a href="https://blog.cloudflare.com/artifacts-git-for-agents-beta/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/artifacts-git-for-agents-beta/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;AI Platform: an inference layer designed for agents&lt;/em&gt;: &lt;a href="https://blog.cloudflare.com/ai-platform/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/ai-platform/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — &lt;em&gt;Building a CLI for all of Cloudflare&lt;/em&gt; (cf CLI): &lt;a href="https://blog.cloudflare.com/cf-cli-local-explorer/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/cf-cli-local-explorer/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — Press release oficial Agent Cloud (13 abril 2026): &lt;a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-expands-its-agent-cloud-to-power-the-next-generation-of-agents/" rel="noopener noreferrer"&gt;https://www.cloudflare.com/press/press-releases/2026/cloudflare-expands-its-agent-cloud-to-power-the-next-generation-of-agents/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare — Página oficial Agents Week + updates: &lt;a href="https://www.cloudflare.com/agents-week/" rel="noopener noreferrer"&gt;https://www.cloudflare.com/agents-week/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare Sandbox SDK docs: &lt;a href="https://developers.cloudflare.com/sandbox/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/sandbox/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare changelog — Artifacts beta (16 abril 2026): &lt;a href="https://developers.cloudflare.com/changelog/post/2026-04-16-artifacts-now-in-beta/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/changelog/post/2026-04-16-artifacts-now-in-beta/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;InfoQ — &lt;em&gt;Cloudflare Sandboxes Reach General Availability&lt;/em&gt;: &lt;a href="https://www.infoq.com/news/2026/04/cloudflare-sandboxes-ga/" rel="noopener noreferrer"&gt;https://www.infoq.com/news/2026/04/cloudflare-sandboxes-ga/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;InfoWorld — &lt;em&gt;Cloudflare launches Dynamic Workers for AI agent execution&lt;/em&gt;: &lt;a href="https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html" rel="noopener noreferrer"&gt;https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Register — &lt;em&gt;Cloudflare rebuilds Wrangler CLI for broader API coverage&lt;/em&gt; (13 abril 2026): &lt;a href="https://www.theregister.com/2026/04/13/cloudflare_expanding_wrangler_cli_functionality/" rel="noopener noreferrer"&gt;https://www.theregister.com/2026/04/13/cloudflare_expanding_wrangler_cli_functionality/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Cloudflare: &lt;a href="https://en.wikipedia.org/wiki/Cloudflare" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Cloudflare&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — V8 (JavaScript engine): &lt;a href="https://en.wikipedia.org/wiki/V8_(JavaScript_engine)" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/V8_(JavaScript_engine)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>aws</category>
      <category>programming</category>
    </item>
    <item>
      <title>pnpm 11 ya está aquí: defaults de seguridad anti-cadena de suministro, store en SQLite y por qué npm y Yarn quedan atrás</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 11:52:59 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/pnpm-11-ya-esta-aqui-defaults-de-seguridad-anti-cadena-de-suministro-store-en-sqlite-y-por-que-41go</link>
      <guid>https://dev.to/lu1tr0n/pnpm-11-ya-esta-aqui-defaults-de-seguridad-anti-cadena-de-suministro-store-en-sqlite-y-por-que-41go</guid>
      <description>&lt;p&gt;El &lt;strong&gt;28 de abril de 2026&lt;/strong&gt; la fundación detrás de &lt;a href="https://pnpm.io/" rel="noopener noreferrer"&gt;pnpm&lt;/a&gt; publicó la versión &lt;strong&gt;11.0&lt;/strong&gt; del gestor de paquetes JavaScript que en los últimos cuatro años pasó de proyecto alternativo a opción default para una porción creciente de equipos serios. El &lt;a href="https://pnpm.io/blog/releases/11.0" rel="noopener noreferrer"&gt;anuncio oficial en pnpm.io/blog/releases/11.0&lt;/a&gt;, el &lt;a href="https://github.com/pnpm/pnpm/releases/tag/v11.0.0" rel="noopener noreferrer"&gt;release en GitHub&lt;/a&gt; firmado por &lt;strong&gt;Zoltan Kochan&lt;/strong&gt; —mantenedor principal— y la &lt;a href="https://www.infoq.com/news/2026/04/pnpm-11-rc-release/" rel="noopener noreferrer"&gt;cobertura analítica de InfoQ&lt;/a&gt; coinciden en que esta no es una versión menor: pnpm 11 cambia la postura de seguridad por defecto del gestor, reemplaza la arquitectura interna de la store por una base de datos SQLite, drop-ea soporte de Node.js 18-21, distribuye en ESM puro, y agrega siete comandos nuevos —entre ellos &lt;code&gt;pnpm sbom&lt;/code&gt; para generar Software Bill of Materials en formatos CycloneDX y SPDX—.&lt;/p&gt;

&lt;p&gt;La pieza más relevante para cualquier equipo que despliegue código JavaScript en producción es el cambio en los &lt;strong&gt;defaults de mitigación contra ataques a la cadena de suministro&lt;/strong&gt;. Específicamente, &lt;strong&gt;&lt;code&gt;minimumReleaseAge&lt;/code&gt; ahora vale 1.440 minutos —24 horas— por defecto&lt;/strong&gt;, lo cual significa que pnpm 11 &lt;strong&gt;rehúsa instalar versiones de paquetes que se hayan publicado en las últimas 24 horas&lt;/strong&gt; salvo que el operador relaje explícitamente la regla. La medida ataca directamente la ventana temporal en que se ejecutan los compromisos modernos del registro npm: un atacante consigue credenciales de un publisher, sube una versión maliciosa, y depende de instalaciones automáticas en CIs que se disparan en minutos. Bloquear las primeras 24 horas le da a la comunidad —investigadores como &lt;a href="https://socket.dev/blog/pnpm-11-adds-new-supply-chain-protection-defaults" rel="noopener noreferrer"&gt;Socket&lt;/a&gt;, npm registry team, los propios mantenedores de paquetes— el tiempo de detectar y purgar la versión maliciosa antes de que entre a tu pipeline.&lt;/p&gt;

&lt;p&gt;Este artículo es continuación natural de cobertura previa en este blog sobre la &lt;strong&gt;campaña Contagious Interview que infectó 1.700 paquetes&lt;/strong&gt; en abril, sobre la &lt;strong&gt;doble ola TeamPCP/Trivy + ShinyHunters/Hashicorp&lt;/strong&gt; del 1 de mayo, sobre el &lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-3854" rel="noopener noreferrer"&gt;CVE-2026-3854&lt;/a&gt; de GitHub que daba RCE con un &lt;code&gt;git push&lt;/code&gt;&lt;/strong&gt; del 30 de abril, y la onda larga del ataque a Rspack que en enero de 2025 había forzado a pnpm 10 a bloquear scripts de lifecycle por defecto. La política de defaults seguros que pnpm consolida hoy no es un capricho de ingeniería: es la respuesta acumulada del proyecto a más de un año de ataques exitosos al ecosistema. Vale la pena entenderla por dentro.&lt;/p&gt;

&lt;h2&gt;
  
  
  La nueva línea base: minimumReleaseAge + blockExoticSubdeps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  minimumReleaseAge: bloquear las primeras 24 horas
&lt;/h3&gt;

&lt;p&gt;La idea es elegantemente simple. La &lt;a href="https://pnpm.io/supply-chain-security" rel="noopener noreferrer"&gt;documentación oficial de mitigación&lt;/a&gt; lo explica así: cuando pnpm resuelve dependencias, descarta cualquier versión cuyo &lt;code&gt;published_at&lt;/code&gt; sea más reciente que el umbral configurado. El valor por defecto en pnpm 11 es &lt;strong&gt;1440 minutos = 1 día&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# pnpm-workspace.yaml&lt;/span&gt;
&lt;span class="na"&gt;minimumReleaseAge&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1440&lt;/span&gt;          &lt;span class="c1"&gt;# default en pnpm 11&lt;/span&gt;
&lt;span class="c1"&gt;# minimumReleaseAge: 10080       # una semana, para infraestructura crítica&lt;/span&gt;
&lt;span class="c1"&gt;# minimumReleaseAge: 0           # opt-out global (no recomendado)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para casos puntuales —parche de seguridad emitido por mantenedores de un paquete crítico, hotfix urgente del propio equipo— existe un escape hatch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;minimumReleaseAge&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1440&lt;/span&gt;
&lt;span class="na"&gt;minimumReleaseAgeExclude&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;@my-org/*"&lt;/span&gt;                  &lt;span class="c1"&gt;# paquetes propios sin gating&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;react"&lt;/span&gt;                      &lt;span class="c1"&gt;# un paquete específico que necesitás al instante&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El razonamiento detrás del valor de &lt;strong&gt;24 horas&lt;/strong&gt; está documentado por el equipo: la mayoría de los paquetes maliciosos publicados en npm son detectados y removidos del registro en menos de un día. La ventana de exposición típica para un usuario que instala automáticamente —en CI, con &lt;code&gt;npm install&lt;/code&gt; o &lt;code&gt;pnpm install&lt;/code&gt; desde un container que se construye en cada push— es de minutos, no horas. Comprimir 24 horas de aire entre publicación y resolución reduce esa ventana a casi cero para la mayoría de incidentes históricos analizados.&lt;/p&gt;

&lt;h3&gt;
  
  
  blockExoticSubdeps: cerrar la puerta de las dependencias raras
&lt;/h3&gt;

&lt;p&gt;El segundo default nuevo es &lt;code&gt;blockExoticSubdeps: true&lt;/code&gt;. Una &lt;strong&gt;dependencia exótica&lt;/strong&gt; es cualquiera que se resuelve fuera del registro estándar: un tarball remoto, un repositorio Git, un protocolo &lt;code&gt;link:&lt;/code&gt; o &lt;code&gt;file:&lt;/code&gt; apuntando a directorios fuera del workspace. Estas formas de declarar dependencias son legítimas en algunos workflows —monorepos con packages cruzados, forks privados— pero también son un vector clásico de ataque: los registries no las indexan ni escanean, los advisories no las cubren, y un atacante con commit access a un repositorio aparentemente inocente puede inyectar código sin que ningún sistema lo detecte.&lt;/p&gt;

&lt;p&gt;El nuevo default rechaza esas resoluciones para &lt;strong&gt;subdependencias&lt;/strong&gt; —dependencias indirectas, traídas por paquetes que vos no controlás—. Las dependencias directas de tu propio &lt;code&gt;package.json&lt;/code&gt; siguen pudiendo declararse así, pero pnpm cortarse el camino para que un paquete de tu &lt;code&gt;node_modules&lt;/code&gt; traiga, transitivamente, código desde un Git arbitrario.&lt;/p&gt;

&lt;h3&gt;
  
  
  strictDepBuilds y verifyDepsBeforeRun
&lt;/h3&gt;

&lt;p&gt;Hay dos defaults adicionales que vale la pena nombrar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;strictDepBuilds: true&lt;/code&gt;&lt;/strong&gt; — pnpm falla la instalación si una dependencia declara un build script y no está explícitamente permitida en &lt;code&gt;allowBuilds&lt;/code&gt;. La opción amigable de pnpm 10, donde el script simplemente no se ejecutaba, deja el estado limpio pero no avisaba: ahora avisa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;verifyDepsBeforeRun: true&lt;/code&gt;&lt;/strong&gt; — antes de ejecutar cualquier script (&lt;code&gt;pnpm run&lt;/code&gt;, &lt;code&gt;pnpm exec&lt;/code&gt;), pnpm verifica que &lt;code&gt;node_modules&lt;/code&gt; esté en sincronía con &lt;code&gt;pnpm-lock.yaml&lt;/code&gt;. Esto previene que un build corra contra una resolución antigua después de que cambiaste el lockfile pero olvidaste reinstalar.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mini Shai-Hulud y por qué la velocidad importa
&lt;/h2&gt;

&lt;p&gt;Para entender por qué pnpm endurece estos defaults conviene mirar un caso concreto reciente. El equipo de &lt;a href="https://socket.dev/blog/pnpm-11-adds-new-supply-chain-protection-defaults" rel="noopener noreferrer"&gt;Socket&lt;/a&gt; ancla su análisis de pnpm 11 en una campaña que apodaron &lt;strong&gt;Mini Shai-Hulud&lt;/strong&gt;: un atacante comprometió cuentas de mantenedores en npm, PyPI y Packagist simultáneamente, y publicó versiones envenenadas de paquetes con un script &lt;code&gt;preinstall&lt;/code&gt; que descargaba un runtime de Bun ofuscado, lo ejecutaba, y exfiltraba credenciales locales —tokens de GitHub, claves SSH, archivos de &lt;code&gt;~/.aws/credentials&lt;/code&gt;—. El patrón es reconocible: lo vimos en Rspack, lo vimos en la campaña Contagious Interview con 1.700 paquetes infectados, lo vimos en el incidente Mini Shai-Hulud, y lo veremos otra vez.&lt;/p&gt;

&lt;p&gt;Lo que hace particularmente efectivos a estos ataques es la combinación de tres factores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Velocidad&lt;/strong&gt;. La cadena de eventos —compromiso → publicación → instalación automática en CIs de víctimas— ocurre en minutos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escala&lt;/strong&gt;. Un solo paquete popular puede tener millones de descargas semanales y aparecer como dependencia transitiva de paquetes que sí controlás.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confianza implícita&lt;/strong&gt;. Tu CI confía en npm.org, npm.org confía en el publisher, el publisher fue comprometido. La cadena de confianza no detecta la pérdida.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Las dos defensas que pnpm 11 activa por defecto —&lt;code&gt;minimumReleaseAge&lt;/code&gt; y &lt;code&gt;blockExoticSubdeps&lt;/code&gt;— atacan directamente el primer y tercer factor. Bloquear 24 horas inserta latencia donde antes había ninguna. Bloquear subdependencias exóticas elimina vías de cargar código sin pasar por el registry. &lt;strong&gt;Socket es honesto en su análisis&lt;/strong&gt;: pnpm 11 &lt;em&gt;"no habría prevenido cada parte de esta campaña"&lt;/em&gt; —los ataques modernos combinan múltiples técnicas—, pero &lt;strong&gt;las dos defensas suman un eslabón importante&lt;/strong&gt; que antes no existía por defecto en ningún gestor mainstream de JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  El otro lado: la store reescrita en SQLite
&lt;/h2&gt;

&lt;p&gt;La parte menos discutida pero técnicamente más interesante de pnpm 11 es la nueva versión del &lt;strong&gt;content-addressable store&lt;/strong&gt;, llamada internamente &lt;strong&gt;Store v11&lt;/strong&gt;. La store es el directorio donde pnpm guarda todos los paquetes que descargó alguna vez, deduplicados por hash, para que múltiples proyectos puedan reutilizarlos sin duplicación de disco.&lt;/p&gt;

&lt;p&gt;Hasta pnpm 10, la store mantenía un índice como &lt;strong&gt;millones de archivos JSON&lt;/strong&gt; —uno por paquete— bajo &lt;code&gt;$STORE/index/&lt;/code&gt;. Para un usuario activo que tiene varios proyectos sobre Node.js, ese directorio puede acumular cientos de miles de archivos pequeños y la performance del sistema de archivos se vuelve un cuello de botella: cada operación de listado, cada &lt;code&gt;readdir&lt;/code&gt;, cada lookup es un syscall.&lt;/p&gt;

&lt;p&gt;Pnpm 11 reemplaza ese diseño con una &lt;strong&gt;única base de datos SQLite&lt;/strong&gt; ubicada en &lt;code&gt;$STORE/index.db&lt;/code&gt;. Las propiedades técnicas son notables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Valores en MessagePack&lt;/strong&gt;, un formato binario compacto y rápido de deserializar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WAL mode&lt;/strong&gt; (Write-Ahead Logging) para permitir lecturas concurrentes sin bloquear escrituras.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifests bundled&lt;/strong&gt; en el índice: &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;bin&lt;/code&gt;, &lt;code&gt;engines&lt;/code&gt;, &lt;code&gt;scripts&lt;/code&gt; se guardan directamente en la base, eliminando la necesidad de leer &lt;code&gt;package.json&lt;/code&gt; desde la CAS durante la resolución.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hex digests&lt;/strong&gt; en lugar de strings de integridad completos del estilo &lt;code&gt;&amp;lt;algo&amp;gt;-&amp;lt;digest&amp;gt;&lt;/code&gt;, con el algoritmo de hash registrado una sola vez por archivo en lugar de por entrada. Esto evita conversiones base64→hex en cada lookup de path en la CAS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A nivel de instalación en frío, los desarrolladores reportan reducciones significativas. El cambio elimina aproximadamente &lt;strong&gt;30.000 syscalls de rename&lt;/strong&gt; por instalación en frío gracias a escritura directa al CAS, usa el cliente HTTP &lt;code&gt;undici&lt;/code&gt; —el mismo que usa Node.js internamente— y pre-aloca memoria para descargas de tamaño conocido. La instalación de un runtime de Node.js además ya no extrae los binarios de &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;npx&lt;/code&gt; y &lt;code&gt;corepack&lt;/code&gt; por defecto, &lt;strong&gt;cortando aproximadamente la mitad de los archivos&lt;/strong&gt; que pnpm tenía que hashear, escribir a la CAS y enlazar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lo que rompe: migración desde pnpm 10
&lt;/h2&gt;

&lt;p&gt;pnpm 11 no es un upgrade transparente. Estos son los breaking changes que un equipo necesita planificar antes de actualizar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Versión de Node.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verificar tu versión actual&lt;/span&gt;
node &lt;span class="nt"&gt;--version&lt;/span&gt;

&lt;span class="c"&gt;# pnpm 11 requiere Node 22 o superior&lt;/span&gt;
&lt;span class="c"&gt;# Si estás en 18, 19, 20 o 21, primero actualizá Node&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;22
nvm use 22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para distribuciones que aún empaquetan Node 20 o 18 LTS, esto puede requerir cambiar a un repositorio externo (NodeSource, devsnek/node) o usar un volume manager como &lt;code&gt;fnm&lt;/code&gt;, &lt;code&gt;nvm&lt;/code&gt; o el propio &lt;code&gt;pnpm runtime set&lt;/code&gt; —que ahora también gestiona instalaciones de Node—.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuración: .npmrc ya no es para pnpm
&lt;/h3&gt;

&lt;p&gt;Hasta pnpm 10, configuraciones específicas de pnpm como &lt;code&gt;auto-install-peers&lt;/code&gt; o &lt;code&gt;prefer-frozen-lockfile&lt;/code&gt; se podían declarar en &lt;code&gt;.npmrc&lt;/code&gt;. &lt;strong&gt;En pnpm 11, &lt;code&gt;.npmrc&lt;/code&gt; queda restringido a auth y registry settings.&lt;/strong&gt; Cualquier configuración propia de pnpm debe vivir en uno de:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# pnpm-workspace.yaml (configuración por workspace)&lt;/span&gt;
&lt;span class="na"&gt;packages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;packages/*"&lt;/span&gt;
&lt;span class="na"&gt;auto-install-peers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;prefer-frozen-lockfile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;minimumReleaseAge&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1440&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ~/.config/pnpm/config.yaml (configuración global)&lt;/span&gt;
&lt;span class="na"&gt;storeDir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/var/cache/pnpm&lt;/span&gt;
&lt;span class="na"&gt;verifyStoreIntegrity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Las variables de entorno también cambian de prefijo: &lt;code&gt;npm_config_*&lt;/code&gt; ya no funciona; ahora es &lt;code&gt;pnpm_config_*&lt;/code&gt;. Esto rompe scripts de CI que pasaban configuración inline con &lt;code&gt;npm_config_registry=https://...&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  allowBuilds reemplaza cinco settings legacy
&lt;/h3&gt;

&lt;p&gt;Cinco campos distintos que controlaban qué scripts de lifecycle se permitían se unificaron en un solo &lt;code&gt;allowBuilds&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Antes (pnpm 10)&lt;/span&gt;
&lt;span class="na"&gt;onlyBuiltDependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;esbuild"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sharp"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;neverBuiltDependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;puppeteer"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;ignoredBuiltDependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;@playwright/test"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;ignoreDepScripts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="na"&gt;onlyBuiltDependenciesFile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./trusted.json"&lt;/span&gt;

&lt;span class="c1"&gt;# Ahora (pnpm 11)&lt;/span&gt;
&lt;span class="na"&gt;allowBuilds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;esbuild&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sharp&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;!puppeteer"&lt;/span&gt;          &lt;span class="c1"&gt;# explícitamente bloqueado&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;!@playwright/test"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La consolidación es lógica pero exige rescribir la configuración existente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Audit migrado a GHSA
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;auditConfig.ignoreCves&lt;/code&gt; se renombró a &lt;code&gt;auditConfig.ignoreGhsas&lt;/code&gt;. La razón: GitHub Security Advisories (GHSA) tienen identificadores más estables y mejor cobertura para el ecosistema npm que los CVEs tradicionales. La migración es directa, pero hay que pasar por todos los lockfiles del workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Distribución pure ESM
&lt;/h3&gt;

&lt;p&gt;pnpm 11 ya no embarca un build CommonJS. Si en algún script tenés algo 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;const&lt;/span&gt; &lt;span class="nx"&gt;pnpm&lt;/span&gt; &lt;span class="o"&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;pnpm&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;falla en pnpm 11. Hay que migrar a &lt;code&gt;import&lt;/code&gt; o usar un dynamic import:&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;const&lt;/span&gt; &lt;span class="nx"&gt;pnpm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pnpm&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;Para uso normal en línea de comandos, esto no afecta —solo afecta integraciones programáticas—.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comandos nuevos que vale la pena conocer
&lt;/h2&gt;

&lt;p&gt;pnpm 11 agrega una colección de comandos que reflejan dónde el proyecto piensa que está la frontera de utilidad:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm ci&lt;/code&gt;&lt;/strong&gt; (alias &lt;code&gt;clean-install&lt;/code&gt;, &lt;code&gt;ic&lt;/code&gt;, &lt;code&gt;install-clean&lt;/code&gt;) — equivalente al &lt;code&gt;npm ci&lt;/code&gt; clásico. Borra &lt;code&gt;node_modules&lt;/code&gt;, instala desde el lockfile congelado, falla si el lockfile no está en sincronía. Usable en CI sin sorpresas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm clean&lt;/code&gt;&lt;/strong&gt; — borra &lt;code&gt;node_modules&lt;/code&gt; en todo el workspace. Con &lt;code&gt;--lockfile&lt;/code&gt; también borra los lockfiles si querés un reset total.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm sbom&lt;/code&gt;&lt;/strong&gt; — genera un &lt;strong&gt;Software Bill of Materials&lt;/strong&gt; en formato &lt;strong&gt;CycloneDX 1.7&lt;/strong&gt; o &lt;strong&gt;SPDX 2.3&lt;/strong&gt;. Esto pasó de ser un nice-to-have a un requerimiento regulatorio en muchos sectores —compliance gubernamental, supply chain audits—. Tener el comando incorporado al gestor evita la dependencia de tools externas como &lt;code&gt;syft&lt;/code&gt; o &lt;code&gt;cdxgen&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm peers check&lt;/code&gt;&lt;/strong&gt; — valida que todas las peer dependencies declaradas estén satisfechas. Hasta ahora era un dolor de cabeza típico que terminaba en runtime; ahora se chequea explícitamente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm runtime set&lt;/code&gt;&lt;/strong&gt; — instala una versión específica de Node.js como runtime para el workspace. Por primera vez, pnpm gestiona el toolchain completo, no solo los paquetes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm with&lt;/code&gt;&lt;/strong&gt; — ejecuta un comando con una versión específica de pnpm en una sola invocación, útil para troubleshooting de migraciones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pnpm pack-app&lt;/code&gt;&lt;/strong&gt; — empaqueta una aplicación Node.js como &lt;strong&gt;Single Executable Application&lt;/strong&gt; (la API SEA agregada en Node.js reciente), produciendo un binario standalone. Este comando solo es ergonomía, no magia: el upstream de Node se hace cargo del verdadero trabajo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aliases&lt;/strong&gt; &lt;code&gt;pn&lt;/code&gt; → &lt;code&gt;pnpm&lt;/code&gt; y &lt;code&gt;pnx&lt;/code&gt; → &lt;code&gt;pnpm dlx&lt;/code&gt;. Para gente que escribe pnpm cien veces al día, dos teclas menos por comando es un cambio real.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  La pregunta operativa: ¿npm y Yarn van a seguir el camino?
&lt;/h2&gt;

&lt;p&gt;A marzo de 2026, &lt;strong&gt;ni &lt;code&gt;npm&lt;/code&gt; ni &lt;code&gt;Yarn&lt;/code&gt; bloquean por defecto los lifecycle scripts&lt;/strong&gt; ni implementan algo equivalente al &lt;code&gt;minimumReleaseAge&lt;/code&gt;. La asimetría es importante porque significa que un equipo que usa npm o Yarn como gestor primario no tiene esta línea de defensa, salvo que la configure manualmente —cosa que la mayoría no hace, porque las defaults siguen siendo seguir el comportamiento histórico—.&lt;/p&gt;

&lt;p&gt;El argumento del equipo de pnpm, articulado en su &lt;a href="https://pnpm.io/blog/2025/12/05/newsroom-npm-supply-chain-security" rel="noopener noreferrer"&gt;post de diciembre de 2025 sobre cómo protegieron su propio newsroom&lt;/a&gt;, es que &lt;strong&gt;los defaults son la línea de defensa real&lt;/strong&gt;. Una configuración avanzada que el 90% de los usuarios no aplica no protege al 90%. Un default seguro sí. La objeción del campo opuesto es que defaults agresivos rompen workflows establecidos —y de hecho &lt;code&gt;minimumReleaseAge&lt;/code&gt; rompe &lt;code&gt;pnpm install&lt;/code&gt; cuando un mantenedor publica una versión legítima que tu equipo necesita ya—.&lt;/p&gt;

&lt;p&gt;El balance final dependerá de cómo evolucione el panorama de ataques. Si los próximos seis meses traen otra campaña al estilo Mini Shai-Hulud o Contagious Interview, la presión sobre npm y Yarn para seguir el camino se vuelve casi imposible de resistir. Si los ataques se desplazan hacia otros vectores —tokens robados, compromiso de CI/CD, dependencias firmadas pero pre-comprometidas— las defensas de pnpm 11 quedan como una capa más en una defensa por capas, no como la solución definitiva.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo actualizar
&lt;/h2&gt;

&lt;p&gt;Para usuarios que ya tienen pnpm instalado:&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="c"&gt;# Self-update si tenés pnpm 10.x instalado&lt;/span&gt;
pnpm self-update next-11

&lt;span class="c"&gt;# O instalación limpia desde npm (si aún no tenés Node 22)&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;22
nvm use 22
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pnpm@latest

&lt;span class="c"&gt;# Verificar&lt;/span&gt;
pnpm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;span class="c"&gt;# 11.0.0 (o superior)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para CI: actualizar la imagen base a una con Node 22+, actualizar las versiones especificadas en &lt;code&gt;packageManager&lt;/code&gt; field del &lt;code&gt;package.json&lt;/code&gt; raíz, y revisar que el lockfile se regenere correctamente:&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;"packageManager"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pnpm@11.0.0"&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;Si tu organización maneja varios proyectos, el patrón conservador es &lt;strong&gt;probar pnpm 11 en uno solo&lt;/strong&gt; durante una semana, especialmente con los nuevos defaults activos, y validar que los pipelines de CI no se rompan por el &lt;code&gt;verifyDepsBeforeRun&lt;/code&gt; o el &lt;code&gt;strictDepBuilds&lt;/code&gt;. Luego propagar al resto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lección de fondo
&lt;/h2&gt;

&lt;p&gt;Hay una pregunta más amplia detrás de esta release que vale la pena retener. &lt;strong&gt;¿Quién es responsable de la seguridad de la cadena de suministro en software open source?&lt;/strong&gt; Durante años la respuesta implícita fue: el desarrollador individual que mantiene el lockfile. Lo cual era una abstracción cómoda pero falsa. Un proyecto típico de 2026 tiene cientos de dependencias directas y miles transitivas; auditar cada actualización es trabajo de tiempo completo.&lt;/p&gt;

&lt;p&gt;pnpm 11 propone un modelo diferente: &lt;strong&gt;la seguridad razonable debe estar embebida en el gestor&lt;/strong&gt;, no como configuración opcional sino como default. La filosofía es paralela a lo que pasó con HTTPS: durante años fue opt-in y la mayoría de los sitios lo dejaba off; cuando los browsers empezaron a marcar HTTP como inseguro y los deployment platforms a hacer HTTPS automático, la situación cambió. Lo que no se hace por defecto, no se hace en escala.&lt;/p&gt;

&lt;p&gt;La otra lección es de cadencia política. pnpm es un proyecto open source mantenido por un puñado de personas; sin embargo, ha movido la frontera del comportamiento por defecto del ecosistema npm más que cualquier discusión en TC39 o cualquier RFC del registry. &lt;strong&gt;El cambio incremental por defaults agresivos ha resultado más efectivo que la reforma centralizada&lt;/strong&gt;. Para quien está construyendo herramientas, ese es un patrón a estudiar: no esperes consenso, ofrecé una alternativa con defaults sustancialmente mejores y dejá que la migración hable.&lt;/p&gt;

&lt;p&gt;Y para quien usa pnpm hoy: &lt;strong&gt;upgrade&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;pnpm 11.0 — anuncio oficial: &lt;a href="https://pnpm.io/blog/releases/11.0" rel="noopener noreferrer"&gt;https://pnpm.io/blog/releases/11.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;pnpm v11.0.0 — release en GitHub: &lt;a href="https://github.com/pnpm/pnpm/releases/tag/v11.0.0" rel="noopener noreferrer"&gt;https://github.com/pnpm/pnpm/releases/tag/v11.0.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;pnpm — Mitigating Supply Chain Attacks (documentación oficial): &lt;a href="https://pnpm.io/supply-chain-security" rel="noopener noreferrer"&gt;https://pnpm.io/supply-chain-security&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;pnpm — How We're Protecting Our Newsroom from npm Supply Chain Attacks (5 dic 2025): &lt;a href="https://pnpm.io/blog/2025/12/05/newsroom-npm-supply-chain-security" rel="noopener noreferrer"&gt;https://pnpm.io/blog/2025/12/05/newsroom-npm-supply-chain-security&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;pnpm — CHANGELOG.md (changelog técnico completo): &lt;a href="https://github.com/pnpm/pnpm/blob/main/pnpm/CHANGELOG.md" rel="noopener noreferrer"&gt;https://github.com/pnpm/pnpm/blob/main/pnpm/CHANGELOG.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;InfoQ — &lt;em&gt;pnpm 11 Release Candidate: ESM Distribution, Supply Chain Defaults and a New Store Format&lt;/em&gt; (Daniel Curtis, abril 2026): &lt;a href="https://www.infoq.com/news/2026/04/pnpm-11-rc-release/" rel="noopener noreferrer"&gt;https://www.infoq.com/news/2026/04/pnpm-11-rc-release/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Socket — &lt;em&gt;pnpm 11 Adds New Supply Chain Protection Defaults&lt;/em&gt;: &lt;a href="https://socket.dev/blog/pnpm-11-adds-new-supply-chain-protection-defaults" rel="noopener noreferrer"&gt;https://socket.dev/blog/pnpm-11-adds-new-supply-chain-protection-defaults&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Socket — &lt;em&gt;pnpm 10.0.0 Blocks Lifecycle Scripts by Default&lt;/em&gt;: &lt;a href="https://socket.dev/blog/pnpm-10-0-0-blocks-lifecycle-scripts-by-default" rel="noopener noreferrer"&gt;https://socket.dev/blog/pnpm-10-0-0-blocks-lifecycle-scripts-by-default&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — pnpm: &lt;a href="https://en.wikipedia.org/wiki/Pnpm" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Pnpm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — npm: &lt;a href="https://en.wikipedia.org/wiki/Npm" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Npm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Supply chain attack: &lt;a href="https://en.wikipedia.org/wiki/Supply_chain_attack" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Supply_chain_attack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Node.js — sitio oficial: &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;https://nodejs.org/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Stripe Projects + Cloudflare: agentes IA crean cuentas y compran dominios solos</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 08:16:35 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/stripe-projects-cloudflare-agentes-ia-crean-cuentas-y-compran-dominios-solos-25k7</link>
      <guid>https://dev.to/lu1tr0n/stripe-projects-cloudflare-agentes-ia-crean-cuentas-y-compran-dominios-solos-25k7</guid>
      <description>&lt;p&gt;El 30 de abril de 2026, &lt;strong&gt;Cloudflare y Stripe&lt;/strong&gt; anunciaron una integración que cambia las reglas de cómo los agentes de IA interactúan con la infraestructura cloud. La iniciativa, llamada &lt;strong&gt;Stripe Projects + Cloudflare&lt;/strong&gt;, permite que un agente —sin intervención humana más allá del consentimiento inicial— cree una cuenta de Cloudflare, contrate una suscripción de pago, registre un dominio y obtenga un API token listo para desplegar código a producción.&lt;/p&gt;

&lt;p&gt;Hasta ahora, cuando un agente de codificación quería publicar una aplicación, había tres pasos que solo un humano podía completar: abrir una cuenta en el proveedor cloud, configurar un método de pago y generar un API token. Eran fricciones inevitables. La nueva colaboración entre Cloudflare y Stripe elimina esos cuellos de botella mediante un protocolo abierto co-diseñado por ambas empresas, que combina estándares ya existentes (OAuth, OIDC y tokenización de pagos) en un flujo unificado para máquinas. Cualquier plataforma con usuarios autenticados podrá integrarse de la misma manera que lo hace Stripe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué pasó: el lanzamiento de Stripe Projects
&lt;/h2&gt;

&lt;p&gt;El anuncio fue publicado por Sid Chatterjee y Brendan Irvine-Broque en el blog de Cloudflare. La pieza central es un nuevo plugin del CLI de Stripe llamado &lt;code&gt;stripe projects&lt;/code&gt;, que sirve como puente entre el agente, la identidad del usuario en Stripe y los proveedores cloud disponibles —empezando por Cloudflare como socio de lanzamiento.&lt;/p&gt;

&lt;p&gt;El flujo es radicalmente más corto que cualquier setup tradicional:&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="c"&gt;# Instalación del CLI con el plugin Stripe Projects&lt;/span&gt;
&lt;span class="c"&gt;# macOS&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;stripe/stripe-cli/stripe
stripe plugins &lt;span class="nb"&gt;install &lt;/span&gt;projects

&lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://cli.stripe.com/install.sh | sh
stripe plugins &lt;span class="nb"&gt;install &lt;/span&gt;projects

&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;
scoop &lt;span class="nb"&gt;install &lt;/span&gt;stripe
stripe plugins &lt;span class="nb"&gt;install &lt;/span&gt;projects

&lt;span class="c"&gt;# Login y arranque del proyecto&lt;/span&gt;
stripe login
stripe projects init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A partir de ese momento, el agente puede preguntarle a Stripe qué servicios cloud están disponibles, escogerlos por sí mismo, aprovisionarlos en una cuenta nueva o existente, y desplegar código sin que el usuario abra un solo dashboard. La promesa se resume en una sola frase de la documentación: &lt;em&gt;«de cero a producción sin pasos manuales»&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Las tres piezas del protocolo
&lt;/h3&gt;

&lt;p&gt;La integración entre Stripe Projects y Cloudflare se apoya en tres mecanismos que funcionan como un único contrato de máquina a máquina:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Descubrimiento&lt;/strong&gt; — El agente ejecuta &lt;code&gt;stripe projects catalog&lt;/code&gt; y recibe un JSON con todos los servicios disponibles (registrar dominios, Workers, R2, KV, D1, etc.). Es la primera vez que un catálogo de productos cloud se expone en formato pensado para LLMs.- &lt;strong&gt;Autorización&lt;/strong&gt; — Stripe actúa como Identity Provider (IdP). Si el correo del usuario ya tiene cuenta en Cloudflare, se inicia un flujo OAuth estándar. Si no existe, Cloudflare crea automáticamente una cuenta nueva y devuelve credenciales firmadas al CLI.- &lt;strong&gt;Pago&lt;/strong&gt; — Stripe entrega un payment token con el que los proveedores pueden cobrar suscripciones, compras únicas o consumo por uso, sin que el agente vea jamás los datos de la tarjeta.
El protocolo une OAuth, OIDC y tokenización en un flujo de tres pasos.
## Contexto e historia: por qué esto importa ahora&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La pregunta obligada es &lt;em&gt;por qué este anuncio aparece en abril de 2026 y no antes&lt;/em&gt;. La respuesta tiene tres capas: madurez del ecosistema MCP, presión competitiva entre clouds y la economía emergente de los agentes autónomos.&lt;/p&gt;

&lt;h3&gt;
  
  
  El protocolo MCP cambió las reglas en 2025
&lt;/h3&gt;

&lt;p&gt;Durante 2025, el &lt;strong&gt;Model Context Protocol&lt;/strong&gt; (MCP) impulsado por Anthropic se consolidó como el estándar de facto para conectar modelos de lenguaje a herramientas externas. Cloudflare fue uno de los early adopters más agresivos: lanzó su &lt;em&gt;Code Mode MCP server&lt;/em&gt; y los &lt;em&gt;Agent Skills&lt;/em&gt;, paquetes de instrucciones que permiten a un agente entender cómo desplegar Workers, manejar Durable Objects o configurar R2 sin tener que aprender a leer la documentación humana.&lt;/p&gt;

&lt;p&gt;El cuello de botella, sin embargo, seguía siendo el momento de la verdad: el agente sabía construir, sabía desplegar, pero no podía &lt;em&gt;contratar&lt;/em&gt;. Cada nueva aplicación creada por un agente exigía que el usuario interrumpiera el flujo, fuera al dashboard, generara un token, lo copiara y lo pegara. La fricción mataba la experiencia y limitaba el potencial de los &lt;em&gt;autonomous coding agents&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  La carrera por ser el cloud-de-elección de los agentes
&lt;/h3&gt;

&lt;p&gt;Cloudflare no está solo en esta apuesta. Vercel, Netlify, Render, Fly.io y Railway llevan meses optimizando sus APIs y onboarding pensando en agentes. AWS lanzó hace unos meses su propio set de tools MCP, y Google Cloud está experimentando con flujos similares vía Genkit. Lo que diferencia a la jugada de Cloudflare-Stripe es que el protocolo se publica como &lt;strong&gt;abierto&lt;/strong&gt;: cualquier proveedor cloud puede integrarse del mismo lado que Cloudflare, y cualquier plataforma con usuarios autenticados puede actuar como Stripe (es decir, como IdP + procesador de pagos).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; Stripe Projects no es un producto cerrado de Cloudflare. Es una capa de protocolo. Quien controle la capa de identidad y pagos para agentes —Stripe, en este caso— tendrá una posición estructural similar a la que Visa tiene en el comercio físico.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Datos y cifras del lanzamiento
&lt;/h2&gt;

&lt;p&gt;El anuncio vino acompañado de una serie de cifras y compromisos concretos que vale la pena desglosar para entender la dimensión real del movimiento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;USD 100.000 en créditos de Cloudflare&lt;/strong&gt; para cualquier startup nueva que se incorpore vía &lt;em&gt;Stripe Atlas&lt;/em&gt;, el producto de Stripe para constituir una empresa en Delaware desde cualquier país del mundo.- &lt;strong&gt;6 minutos de lectura&lt;/strong&gt; es la longitud del post original, pero esconde un cambio arquitectónico mucho más grande: un agente pasa de cero a producción en aproximadamente &lt;strong&gt;2 minutos de video demo&lt;/strong&gt;.- &lt;strong&gt;Cero pasos manuales&lt;/strong&gt; entre el prompt inicial y el despliegue, salvo dos confirmaciones: aceptación de términos de servicio de Cloudflare y, si aplica, agregar un método de pago al Stripe del usuario.- &lt;strong&gt;Múltiples productos Cloudflare disponibles&lt;/strong&gt; en el catálogo desde el día uno: Workers, Pages, R2, D1, KV, Durable Objects, Cloudflare Registrar, además de servicios de terceros que Stripe agregará en los próximos meses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para LATAM hay un dato adicional importante: Stripe Atlas es uno de los caminos más directos para que un emprendedor centroamericano o sudamericano constituya una entidad legal en Estados Unidos sin viajar. Combinado con USD 100.000 en créditos cloud, baja brutalmente la barrera de entrada para startups regionales que quieran lanzar productos serverless globales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impacto y análisis: qué cambia para desarrolladores y plataformas
&lt;/h2&gt;

&lt;p&gt;El cambio más visible es para quien hoy trabaja con agentes de codificación tipo Claude Code, Cursor Background Agents, Devin, Aider o cualquier flujo CI/CD donde una IA genera infra como código. Pero hay tres consecuencias estructurales que vale la pena analizar.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Los agentes pasan de constructores a operadores
&lt;/h3&gt;

&lt;p&gt;Hasta ahora, los agentes eran muy buenos generando código y subiéndolo a un repositorio. La operación en producción seguía siendo humana: comprar el dominio, configurar DNS, contratar el plan, monitorear la facturación. Con Stripe Projects, los agentes pueden ejercer el rol completo de un equipo de DevOps en miniatura. Eso obliga a repensar permisos, auditoría y límites de gasto.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Ojo:&lt;/strong&gt; Si tu agente puede registrar dominios y contratar suscripciones, también puede equivocarse y registrar 50 dominios. La documentación de Stripe Projects insiste en que los &lt;em&gt;spending limits&lt;/em&gt; y los &lt;em&gt;scope-restricted tokens&lt;/em&gt; son responsabilidad del integrador. Configurálos antes del primer &lt;code&gt;stripe projects init&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. La identidad se vuelve la nueva base de la nube
&lt;/h3&gt;

&lt;p&gt;El diseño donde Stripe atestigua la identidad y Cloudflare confía en esa atestación recuerda a cómo Apple y Google funcionan en mobile: un IdP central que firma todo. Si el modelo se generaliza, las plataformas que hoy compiten por ser &lt;em&gt;la nube&lt;/em&gt; empezarán a competir por ser &lt;em&gt;la identidad de los agentes&lt;/em&gt;. GitHub, Microsoft, Google y los propios proveedores de modelos (Anthropic, OpenAI) son los candidatos obvios para el siguiente movimiento.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Aparece un nuevo vector de ataque
&lt;/h3&gt;

&lt;p&gt;Si un agente compromete una sesión de Stripe, ahora puede aprovisionar infraestructura cloud y cobrar a la tarjeta del usuario. Esto no es teórico: a lo largo de 2025 vimos varios incidentes con MCP servers maliciosos que filtraban credenciales. Las buenas prácticas que ya conocemos —scopes mínimos, expiración corta, rotación, alertas de uso anómalo— ahora se vuelven obligatorias para quien integre Stripe Projects en producción.&lt;br&gt;
El agente provisiona cuenta, dominio y token sin abrir un solo dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  El flujo end-to-end visualizado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sequenceDiagram
    participant U as Usuario
    participant A as Agente IA
    participant S as Stripe Projects
    participant C as Cloudflare
    U-&amp;gt;&amp;gt;A: "Construí y desplegá esta app"
    A-&amp;gt;&amp;gt;S: stripe projects catalog
    S--&amp;gt;&amp;gt;A: "lista de servicios disponibles"
    A-&amp;gt;&amp;gt;S: stripe projects add cloudflare/registrar:domain
    S-&amp;gt;&amp;gt;C: solicita aprovisionamiento
    C-&amp;gt;&amp;gt;S: cuenta nueva + API token
    S--&amp;gt;&amp;gt;A: credenciales seguras
    A-&amp;gt;&amp;gt;C: deploy del código
    C--&amp;gt;&amp;gt;U: app en producción
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Qué sigue: hoja de ruta y consecuencias
&lt;/h2&gt;

&lt;p&gt;El anuncio del 30 de abril es el primer paso de una agenda más larga. Cloudflare y Stripe han adelantado tres líneas de trabajo para los próximos meses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Más proveedores en el catálogo&lt;/strong&gt; — Stripe Projects está abierto para que cualquier proveedor cloud o servicio (bases de datos, observabilidad, CDNs alternativos) se sume al catálogo expuesto a los agentes.- &lt;strong&gt;Más plataformas como IdP&lt;/strong&gt; — La capa de identidad podría ser ofrecida por GitHub, Vercel, Linear o cualquier producto SaaS con base de usuarios. Esto democratiza la posibilidad de que un agente actúe en nombre del usuario en cualquier ecosistema.- &lt;strong&gt;Integración nativa en Code Mode y Agent Skills&lt;/strong&gt; — Cloudflare ya está actualizando sus Skills para que los agentes sepan, sin instrucciones adicionales, cuándo usar Stripe Projects para autoaprovisionarse.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; Si estás construyendo un agente o producto que quiere desplegar a Cloudflare, no esperes la integración manual. Hoy mismo podés ejecutar &lt;code&gt;stripe plugins install projects &amp;amp;&amp;amp; stripe projects init&lt;/code&gt; y experimentar el flujo completo en menos de 10 minutos. La curva de adopción de este tipo de protocolos suele ser muy rápida cuando el primer mover (Stripe + Cloudflare) define el estándar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Implicaciones para LATAM
&lt;/h3&gt;

&lt;p&gt;Para el ecosistema hispano hay dos lecturas. La primera es operativa: cualquier desarrollador de LATAM con cuenta de Stripe puede empezar a usar Stripe Projects sin trámites adicionales. La segunda es más estratégica: el modelo plataforma + identidad + pagos abre un espacio para que actores regionales —Mercado Pago, Ualá Bis, Kushki, Conekta, dLocal— consideren seriamente convertirse en IdPs para agentes. La oportunidad no es competir contra Stripe globalmente; es ofrecer la misma capa de protocolo para flujos de pago locales (PIX, SPEI, transferencias 3.0) que las plataformas globales no manejan bien.&lt;/p&gt;

&lt;p&gt;La carrera por ser &lt;em&gt;la identidad de los agentes en LATAM&lt;/em&gt; está abierta. Y a juzgar por la velocidad con la que Stripe se posicionó como el primer IdP global de agentes, la ventana para responder no será larga.&lt;/p&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Necesito ya tener cuenta en Cloudflare para usar Stripe Projects?
&lt;/h3&gt;

&lt;p&gt;No. Si el correo con el que iniciás sesión en Stripe no tiene cuenta de Cloudflare, el sistema crea una nueva automáticamente. Si ya existe una cuenta vinculada a ese correo, se dispara un flujo OAuth estándar para autorizar al agente.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cuánto cuesta usar Stripe Projects?
&lt;/h3&gt;

&lt;p&gt;El protocolo en sí no tiene costo adicional. Pagás los servicios cloud que tu agente contrate (dominios, suscripciones de Workers, etc.) y las comisiones normales de Stripe por procesar los pagos. La promoción de USD 100.000 en créditos Cloudflare aplica solo a startups nuevas constituidas vía Stripe Atlas.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué pasa si el agente se equivoca y compra cosas que no debe?
&lt;/h3&gt;

&lt;p&gt;El control queda en el integrador del agente. Stripe permite definir límites de gasto, scopes restringidos y métodos de pago dedicados. Cloudflare exige aceptación humana de los términos de servicio y notifica al usuario cuando se aprovisionan recursos. Aún así, conviene configurar alertas de facturación y revisar los permisos antes de soltar al agente.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Stripe Projects funciona solo con Cloudflare?
&lt;/h3&gt;

&lt;p&gt;Cloudflare es el primer proveedor cloud integrado, pero el protocolo es abierto. Stripe ya anunció que más proveedores se sumarán al catálogo en los próximos meses. Cualquier plataforma cloud puede implementar el lado proveedor del protocolo y aparecer en &lt;code&gt;stripe projects catalog&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo se compara con MCP?
&lt;/h3&gt;

&lt;p&gt;Son complementarios. MCP define cómo un modelo habla con herramientas externas. Stripe Projects define cómo se aprovisionan cuentas, identidades y pagos para que esas herramientas existan. Cloudflare combina ambos: usa Code Mode MCP para que el agente sepa qué hacer, y Stripe Projects para que tenga dónde hacerlo.&lt;br&gt;
¿Es seguro dejar que un agente compre dominios en mi nombre?&amp;lt;/h3&lt;br&gt;
Es tan seguro como la configuración que le pongas. El protocolo usa OAuth, OIDC y tokenización de pagos —los mismos estándares que protegen las apps que ya usás todos los días. La buena práctica es: scopes mínimos, tokens de corta duración, alertas activas y un límite de gasto explícito.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.cloudflare.com/agents-stripe-projects/" rel="noopener noreferrer"&gt;Cloudflare Blog: Agents can now create Cloudflare accounts, buy domains, and deploy&lt;/a&gt; — Anuncio original de Sid Chatterjee y Brendan Irvine-Broque (30 de abril de 2026).- &lt;a href="https://stripe.com/atlas" rel="noopener noreferrer"&gt;Stripe Atlas&lt;/a&gt; — Producto de Stripe para constituir una empresa en Delaware desde cualquier país.- &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; — Especificación abierta de MCP usada por Cloudflare en su Code Mode server.- &lt;a href="https://developers.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Developer Docs&lt;/a&gt; — Documentación oficial de Workers, R2, D1 y demás servicios incluidos en el catálogo.- &lt;a href="https://oauth.net/2/" rel="noopener noreferrer"&gt;OAuth 2.0&lt;/a&gt; — Estándar de autorización en el que se apoya el flujo de Stripe Projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>DNSSEC Debugger de Verisign: cómo auditar tu cadena de confianza DNS</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Wed, 06 May 2026 02:19:20 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/dnssec-debugger-de-verisign-como-auditar-tu-cadena-de-confianza-dns-4jp1</link>
      <guid>https://dev.to/lu1tr0n/dnssec-debugger-de-verisign-como-auditar-tu-cadena-de-confianza-dns-4jp1</guid>
      <description>&lt;p&gt;El sistema de nombres de dominio (DNS) traduce nombres legibles como &lt;code&gt;programacion.org&lt;/code&gt; en direcciones IP, pero su diseño original de 1983 no incluyó autenticación criptográfica. Cualquiera con la posición de red adecuada podía suplantar respuestas y redirigir tráfico hacia servidores controlados por un atacante. &lt;strong&gt;DNSSEC&lt;/strong&gt; (Domain Name System Security Extensions) es la respuesta de la IETF a ese problema: firma digitalmente cada conjunto de registros para que el resolvedor pueda verificar que la respuesta no fue alterada en tránsito. Verisign Labs mantiene desde hace más de una década un &lt;strong&gt;DNSSEC Debugger&lt;/strong&gt; gratuito y público que recorre la cadena de confianza de cualquier dominio y muestra exactamente en qué eslabón se rompe la validación, una capacidad indispensable para cualquier equipo de infraestructura que opere zonas firmadas en 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué es el DNSSEC Debugger de Verisign Labs
&lt;/h2&gt;

&lt;p&gt;El DNSSEC Debugger vive en &lt;code&gt;dnssec-analyzer.verisignlabs.com&lt;/code&gt; y funciona como un validador stateless: introduces un dominio, la aplicación consulta los servidores autoritativos, descarga los registros relevantes —DNSKEY, RRSIG, DS, NSEC o NSEC3— y verifica cada firma criptográfica desde la raíz hasta la zona consultada. El resultado se muestra como una lista de comprobaciones marcadas con check verde cuando todo cuadra, o con cruces rojas y mensajes específicos cuando algo está roto.&lt;/p&gt;

&lt;p&gt;La herramienta soporta dos opciones avanzadas que la diferencian de validadores más simples. La primera es &lt;strong&gt;Trust Anchor&lt;/strong&gt;: se puede pegar un registro DS o DNSKEY arbitrario para iniciar la validación desde cualquier punto de la jerarquía, no necesariamente desde la raíz. Esto resulta clave cuando una organización opera una zona privada con su propia ancla de confianza, o cuando se necesita auditar una zona antes de que el padre publique el DS correspondiente. La segunda permite &lt;strong&gt;especificar servidores autoritativos alternativos&lt;/strong&gt;, útil para verificar comportamientos en servidores secundarios, validar una zona alojada en un proveedor distinto al productivo, o confirmar la consistencia entre primario y secundarios tras un cambio.&lt;/p&gt;

&lt;p&gt;A diferencia de un &lt;code&gt;dig +dnssec&lt;/code&gt; puntual, el Debugger explica cada paso en lenguaje natural: indica qué registros DS publicó la zona padre, qué DNSKEY hashea contra ese DS, qué RRSIG firma cada conjunto, cuándo expiran las firmas y si el algoritmo (RSASHA256, ECDSAP256SHA256, ED25519) es soportado por validadores modernos. Para equipos que recién adoptan DNSSEC, esa narrativa pedagógica vale más que cualquier dump técnico.&lt;br&gt;
El Debugger recorre cada eslabón de la cadena y reporta éxitos y fallos.&lt;/p&gt;
&lt;h2&gt;
  
  
  La cadena de confianza DNSSEC explicada
&lt;/h2&gt;

&lt;p&gt;DNSSEC añade cuatro tipos de registros al DNS tradicional. &lt;strong&gt;DNSKEY&lt;/strong&gt; publica las claves públicas que firman la zona; típicamente hay dos roles diferenciados: KSK (Key Signing Key) que firma DNSKEY, y ZSK (Zone Signing Key) que firma el resto de los registros. &lt;strong&gt;RRSIG&lt;/strong&gt; contiene la firma criptográfica de un conjunto de registros (RRset) usando una de esas claves. &lt;strong&gt;DS&lt;/strong&gt; (Delegation Signer) es un hash del DNSKEY de la zona hija publicado en la zona padre, y constituye el puente que une dos zonas. Finalmente &lt;strong&gt;NSEC&lt;/strong&gt; y &lt;strong&gt;NSEC3&lt;/strong&gt; prueban la inexistencia de un nombre o tipo de registro de forma firmada, evitando que un atacante diga falsamente que un registro no existe.&lt;/p&gt;

&lt;p&gt;La cadena de confianza fluye desde la raíz hacia abajo. La IANA mantiene la KSK de la raíz, conocida como ancla de confianza global y preinstalada en todos los validadores. El resolvedor empieza con esa clave, valida los DNSKEY de la raíz, busca el DS para &lt;code&gt;.com&lt;/code&gt;, valida el DNSKEY de &lt;code&gt;.com&lt;/code&gt;, busca el DS para &lt;code&gt;ejemplo.com&lt;/code&gt;, y así sucesivamente hasta verificar la firma sobre el registro A o AAAA solicitado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph TD
    A["Raíz . (KSK IANA)"] --&amp;gt; B["DS para com"]
    B --&amp;gt; C["com (DNSKEY firmado)"]
    C --&amp;gt; D["DS para ejemplo.com"]
    D --&amp;gt; E["ejemplo.com (DNSKEY firmado)"]
    E --&amp;gt; F["RRSIG sobre A/AAAA"]
    F --&amp;gt; G["Respuesta validada"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cualquier eslabón mal alineado rompe toda la cadena para esa rama. Si el registro DS publicado en &lt;code&gt;.com&lt;/code&gt; no coincide con el DNSKEY actual de la zona —algo común tras una rotación de claves mal coordinada con el registrar—, el resolvedor responderá &lt;code&gt;SERVFAIL&lt;/code&gt; y el dominio quedará inaccesible para todos los validadores estrictos. El navegador del usuario simplemente verá un error genérico de DNS, sin pista alguna del origen del fallo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Ojo:&lt;/strong&gt; firmar una zona y olvidarse de monitorear las firmas es peor que no firmarla. Las RRSIG expiran cada 7 a 30 días; si tu firmador automático se cae un fin de semana largo, tu dominio desaparece para validadores estrictos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Historia y adopción de DNSSEC
&lt;/h2&gt;

&lt;p&gt;DNSSEC fue estandarizado en marzo de 2005 con los RFC 4033, 4034 y 4035, y la raíz se firmó en 2010 después de años de coordinación entre ICANN, Verisign y los operadores de raíz. El registro &lt;code&gt;.com&lt;/code&gt;, el TLD más grande del mundo y operado por Verisign, fue firmado en 2011, lo que abrió la puerta a la adopción masiva entre empresas comerciales.&lt;/p&gt;

&lt;p&gt;La adopción real, sin embargo, ha sido lenta. Según las mediciones públicas de APNIC Labs, alrededor de un tercio de los usuarios de internet a nivel mundial usan resolvedores con validación DNSSEC habilitada (Cloudflare 1.1.1.1, Google Public DNS 8.8.8.8, OpenDNS, ISPs europeos). Pero del lado de los dominios firmados, solo TLDs muy específicos como los de República Checa, Suecia o Países Bajos superan el 50% de su zona firmada. &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt; y la mayoría de ccTLDs latinoamericanos siguen por debajo del 5% de zonas firmadas.&lt;/p&gt;

&lt;p&gt;En América Latina la situación es heterogénea. NIC.br habilitó DNSSEC para &lt;code&gt;.br&lt;/code&gt; en 2010 y mantiene un programa activo de promoción y capacitación. NIC.mx, NIC.ar, NIC.cl y NIC.co soportan la publicación de registros DS, pero la adopción entre registrantes finales es marginal. Esto significa que la mayoría de los dominios LATAM firmados pertenecen a organismos públicos, instituciones académicas y operadores de infraestructura crítica como bancos centrales, mientras que el comercio electrónico y el SaaS regional rara vez activan DNSSEC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Auditando una zona DNSSEC desde la línea de comandos
&lt;/h2&gt;

&lt;p&gt;El DNSSEC Debugger es excelente para una auditoría puntual desde el navegador, pero quienes operan zonas a escala suelen integrar verificaciones en pipelines de monitoreo. Las herramientas tradicionales de DNS soportan validación DNSSEC desde hace años y permiten automatizar alertas mucho antes de que un usuario reporte el problema.&lt;/p&gt;

&lt;p&gt;En &lt;strong&gt;Linux y macOS&lt;/strong&gt;, &lt;code&gt;dig&lt;/code&gt; con &lt;code&gt;+dnssec&lt;/code&gt; muestra los registros RRSIG y el flag &lt;code&gt;ad&lt;/code&gt; (Authenticated Data) cuando el resolvedor validó la respuesta:&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="c"&gt;# Linux (Debian/Ubuntu) y macOS&lt;/span&gt;
dig +dnssec +multi programacion.org

&lt;span class="c"&gt;# Verificar contra un resolvedor específico que valide&lt;/span&gt;
dig @1.1.1.1 +dnssec +multi programacion.org
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El comando &lt;code&gt;delv&lt;/code&gt; (Domain Entity Lookup &amp;amp; Validation), parte del paquete &lt;code&gt;bind9-utils&lt;/code&gt;, ejecuta una validación completa desde la raíz e imprime el árbol de evidencia, lo que lo convierte en el equivalente de línea de comandos del Debugger de Verisign:&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="c"&gt;# Linux (Debian/Ubuntu)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;bind9-dnsutils
delv +rtrace programacion.org

&lt;span class="c"&gt;# macOS con Homebrew&lt;/span&gt;
brew &lt;span class="nb"&gt;install bind
&lt;/span&gt;delv +rtrace programacion.org
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En &lt;strong&gt;Windows 10 y posteriores&lt;/strong&gt;, PowerShell ofrece &lt;code&gt;Resolve-DnsName&lt;/code&gt; con el flag &lt;code&gt;-DnssecOk&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Resolve-DnsName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;programacion.org&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;A&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-DnssecOk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1.1.1.1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para automatizar la verificación en CI/CD se puede combinar &lt;code&gt;dig&lt;/code&gt; con &lt;code&gt;grep&lt;/code&gt; y reportar a Prometheus, Datadog o el sistema de observabilidad interno cuando el flag &lt;code&gt;ad&lt;/code&gt; no aparece o cuando la firma expira en menos de siete días. La librería &lt;code&gt;getdns&lt;/code&gt; permite consultar y validar desde código C, mientras que en Python &lt;code&gt;dnspython&lt;/code&gt; 2.x soporta validación nativa, ideal para scripts de monitoreo internos.&lt;br&gt;
delv +rtrace imprime cada paso de validación criptográfica desde la raíz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Errores comunes que el DNSSEC Debugger detecta
&lt;/h2&gt;

&lt;p&gt;Después de operar zonas firmadas durante años, los equipos de infraestructura coinciden en cinco categorías de fallo recurrente que el DNSSEC Debugger señala con claridad y que conviene tener presentes a la hora de diseñar runbooks y alertas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DS desactualizado&lt;/strong&gt;: el padre publica un DS que no corresponde al DNSKEY actual. Suele ocurrir tras rotación de KSK sin actualizar el registrar.- &lt;strong&gt;Firma expirada&lt;/strong&gt;: las RRSIG tienen ventana de validez típica de 7 a 30 días. Si el firmador automático falla, las firmas expiran y la zona se vuelve no validable sin previo aviso.- &lt;strong&gt;Algoritmo no soportado o débil&lt;/strong&gt;: usar SHA-1 o RSASHA1 en 2026 produce advertencias de seguridad en validadores modernos. La recomendación actual es ECDSAP256SHA256 o Ed25519.- &lt;strong&gt;NSEC3 mal configurado&lt;/strong&gt;: el parámetro &lt;code&gt;iterations&lt;/code&gt; debe ser bajo. RFC 9276 recomienda 0 iteraciones; valores altos son rechazados por algunos resolvedores como abuso de recursos.- &lt;strong&gt;Glue records sin firmar para servidores in-bailiwick&lt;/strong&gt;: cuando los NS de la zona viven dentro de la propia zona, los registros A/AAAA del padre deben coincidir con los de la zona firmada o la cadena se rompe.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; programá una alerta en tu sistema de monitoreo que dispare cuando cualquier RRSIG de tu zona tenga menos de 7 días para expirar. Es la única señal que te avisa con tiempo de un firmador caído antes de que afecte al usuario final.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Qué sigue para DNSSEC en 2026
&lt;/h2&gt;

&lt;p&gt;Tres movimientos están moldeando el futuro de DNSSEC. El primero es la &lt;strong&gt;transición a Ed25519&lt;/strong&gt; definida en RFC 8080, un algoritmo de curva elíptica que produce firmas más cortas que ECDSA y consume menos CPU al validar. La raíz aún usa RSASHA256, pero un creciente número de TLDs y zonas grandes ya migraron, reduciendo el tamaño de las respuestas DNS y aliviando la presión sobre el límite de fragmentación UDP.&lt;/p&gt;

&lt;p&gt;El segundo es la &lt;strong&gt;estandarización de NSEC3 con iteraciones cero&lt;/strong&gt;, formalizada en RFC 9276 publicado en 2022, que neutraliza el ataque de amplificación de CPU sin perder la prueba de inexistencia firmada. Los grandes resolvedores ya rechazan zonas con &lt;code&gt;iterations&lt;/code&gt; excesivas, así que conviene revisar tu firmador.&lt;/p&gt;

&lt;p&gt;El tercero, todavía en discusión activa en la IETF, es la &lt;strong&gt;transición a algoritmos post-cuánticos&lt;/strong&gt;. Las firmas DNSSEC actuales son vulnerables a un atacante con computador cuántico capaz de romper RSA y curvas elípticas, y el grupo de trabajo dnsop trabaja desde 2024 en perfiles experimentales con SLH-DSA (Sphincs+) y ML-DSA (Dilithium). El reto técnico es que las firmas post-cuánticas son entre 5 y 50 veces más grandes que las actuales, lo que satura el límite tradicional de 4 KB de UDP y empuja al ecosistema hacia DNS sobre TCP, TLS o QUIC como transporte por defecto.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; la migración a DNSSEC post-cuántico no es solo cambiar un algoritmo. Implica revisar el transporte (UDP vs TCP/TLS), el tamaño de paquete y el rendimiento del firmador. Los equipos prudentes ya están ejercitando sus pipelines con firmas grandes para descubrir cuellos de botella.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Necesito DNSSEC si ya uso HTTPS en todo mi sitio?
&lt;/h3&gt;

&lt;p&gt;HTTPS protege la conexión después de que el navegador resuelve el dominio, pero un atacante que envenene el caché DNS puede dirigirte a una IP completamente distinta antes de que se inicie el handshake TLS. DNSSEC valida la propia resolución; las dos capas son complementarias, no redundantes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿El DNSSEC Debugger de Verisign es gratis para uso comercial?
&lt;/h3&gt;

&lt;p&gt;Sí. Verisign Labs lo ofrece como servicio público sin autenticación ni cuotas explícitas. No publica un SLA formal, pero la herramienta lleva más de una década operativa de forma estable y es la referencia informal de toda la comunidad de operadores DNS.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Mi proveedor DNS soporta DNSSEC?
&lt;/h3&gt;

&lt;p&gt;Cloudflare, Route 53, Google Cloud DNS, Azure DNS, NS1 y la mayoría de proveedores empresariales soportan firmado automático con un solo clic. Algunos hosting compartido económicos no lo ofrecen; verificá antes de migrar tu zona crítica.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué pasa si firmé mi zona pero no publiqué el DS en el padre?
&lt;/h3&gt;

&lt;p&gt;La zona aparece como insegura para validadores: las respuestas se aceptan pero sin validación criptográfica. No rompe el sitio, pero anula completamente el beneficio de seguridad. El DS en el padre es lo que ancla tu firma a la cadena global.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cuántas veces al año debo rotar las claves DNSSEC?
&lt;/h3&gt;

&lt;p&gt;Las recomendaciones varían según el operador. La práctica común es rotar la ZSK cada 1 a 3 meses (proceso automatizado por el firmador) y la KSK cada 1 a 2 años (proceso manual que requiere actualizar el DS en el padre vía registrar). Algunos operadores grandes ya practican rotación continua.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué hago si mi dominio falla en el Debugger pero parece funcionar en mi navegador?
&lt;/h3&gt;

&lt;p&gt;Significa que tu resolvedor local no valida y devuelve la respuesta, mientras que resolvedores estrictos como 1.1.1.1 responderán SERVFAIL. Es solo cuestión de tiempo hasta que más usuarios pierdan acceso. Hay que arreglar la cadena cuanto antes en lugar de esperar a que se reporte la incidencia.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dnssec-analyzer.verisignlabs.com/" rel="noopener noreferrer"&gt;DNSSEC Debugger de Verisign Labs&lt;/a&gt; — herramienta oficial gratuita para auditar cadenas de confianza DNSSEC.- &lt;a href="https://datatracker.ietf.org/doc/html/rfc4033" rel="noopener noreferrer"&gt;RFC 4033&lt;/a&gt; — DNS Security Introduction and Requirements, documento base que define DNSSEC.- &lt;a href="https://www.icann.org/dnssec" rel="noopener noreferrer"&gt;ICANN — DNSSEC&lt;/a&gt; — página oficial sobre la KSK de la raíz, ceremonias de claves y adopción global.- &lt;a href="https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions" rel="noopener noreferrer"&gt;Wikipedia: DNSSEC&lt;/a&gt; — artículo enciclopédico con historia, arquitectura y referencias técnicas.- &lt;a href="https://stats.labs.apnic.net/dnssec" rel="noopener noreferrer"&gt;APNIC Labs DNSSEC Stats&lt;/a&gt; — estadísticas en vivo de adopción de validación DNSSEC por país y red.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>technology</category>
      <category>science</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Apache HTTP Server 2.4.67 cierra 11 vulnerabilidades de mayo: el RCE en HTTP/2 (CVE-2026-23918) que obliga a parchear hoy</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Tue, 05 May 2026 21:57:06 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/apache-http-server-2467-cierra-11-vulnerabilidades-de-mayo-el-rce-en-http2-cve-2026-23918-que-bbp</link>
      <guid>https://dev.to/lu1tr0n/apache-http-server-2467-cierra-11-vulnerabilidades-de-mayo-el-rce-en-http2-cve-2026-23918-que-bbp</guid>
      <description>&lt;p&gt;El &lt;strong&gt;4 de mayo de 2026&lt;/strong&gt; la Apache Software Foundation publicó la versión &lt;strong&gt;2.4.67&lt;/strong&gt; de &lt;a href="https://en.wikipedia.org/wiki/Apache_HTTP_Server" rel="noopener noreferrer"&gt;Apache HTTP Server&lt;/a&gt;, el servidor web open source que sigue sirviendo cerca de un tercio de los sitios activos en internet. La versión llega como &lt;strong&gt;release de seguridad, features y bugfixes&lt;/strong&gt;, e incluye parches para &lt;strong&gt;11 vulnerabilidades&lt;/strong&gt; documentadas en el &lt;a href="https://httpd.apache.org/security/vulnerabilities_24.html" rel="noopener noreferrer"&gt;advisory oficial&lt;/a&gt; publicado el 5 de mayo. La pieza más relevante de este conjunto, marcada por el equipo Apache como severidad &lt;strong&gt;Important&lt;/strong&gt; y con CVSS de &lt;strong&gt;8.8&lt;/strong&gt;, es &lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;&lt;/strong&gt;: un &lt;em&gt;double-free&lt;/em&gt; en la implementación de HTTP/2 que abre la puerta a &lt;strong&gt;ejecución remota de código&lt;/strong&gt; en servidores que tienen el módulo mod_http2 activo —es decir, la mayoría de los Apache modernos detrás de un sitio HTTPS—.&lt;/p&gt;

&lt;p&gt;A las pocas horas del anuncio, &lt;a href="https://www.securityweek.com/critical-high-severity-vulnerabilities-patched-in-apache-mina-http-server/" rel="noopener noreferrer"&gt;SecurityWeek&lt;/a&gt;, &lt;a href="https://securityonline.info/apache-http-server-rce-vulnerability-cve-2026-23918-patch-2-4-67/" rel="noopener noreferrer"&gt;securityonline.info&lt;/a&gt;, &lt;a href="https://thecybersecguru.com/news/apache-rce-vulnerability-cve-2026-23918/" rel="noopener noreferrer"&gt;The CyberSec Guru&lt;/a&gt;, Cybersecurity News y &lt;a href="https://undercodetesting.com/critical-apache-http-server-flaw-exposes-millions-of-servers-to-rce-attacks-a-technical-deep-dive-into-cve-2026-23918-video/" rel="noopener noreferrer"&gt;Undercode Testing&lt;/a&gt; cubrieron la noticia con análisis técnicos. &lt;strong&gt;No hay PoC público al momento de escribir&lt;/strong&gt; y &lt;strong&gt;no se ha confirmado explotación activa&lt;/strong&gt;, pero el bug se reportó privadamente el 10 de diciembre de 2025 y el commit del fix —r1930444— quedó registrado al día siguiente. Eso significa que un atacante con acceso al log de commits de Apache pudo identificar la primitiva vulnerable hace casi cinco meses; el ciclo de armar y publicar un exploit a partir del diff del fix suele tardar entre días y semanas. La ventana de parcheo, en otras palabras, es ya.&lt;/p&gt;

&lt;p&gt;Este artículo documenta los 11 CVEs en el orden de criticidad real, explica con detalle el mecanismo del double-free en HTTP/2, lista mitigaciones temporales para quien no pueda actualizar de inmediato, y ofrece comandos copy-paste para detectar versiones vulnerables. Si administras Apache en producción —en un VPS, en un cluster Kubernetes, en una instancia AWS EC2 con LAMP, en una Synology o en cualquier panel tipo cPanel/Plesk— este es material operativo.&lt;/p&gt;

&lt;h2&gt;
  
  
  La pieza central: &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;, RCE en HTTP/2
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Qué es exactamente
&lt;/h3&gt;

&lt;p&gt;mod_http2 es el módulo de Apache que implementa el protocolo HTTP/2. Casi todos los Apache 2.4 modernos lo cargan por defecto cuando el sitio sirve por HTTPS, porque navegadores como Chrome y Firefox negocian HTTP/2 automáticamente sobre TLS desde 2015. La vulnerabilidad se dispara cuando un cliente envía una &lt;strong&gt;secuencia maliciosa de tramas HTTP/2 conocida como «early stream reset»&lt;/strong&gt;, una solicitud que cancela un stream en un momento muy temprano de su ciclo de vida.&lt;/p&gt;

&lt;p&gt;En esa secuencia, la lógica de gestión de memoria del servidor termina &lt;strong&gt;liberando dos veces la misma región de heap&lt;/strong&gt;: un bug clásico llamado &lt;strong&gt;double-free&lt;/strong&gt;. La primera vez, la región pasa a la free-list del alocador; la segunda vez, el alocador interpreta esa región como reusable y rompe sus propias estructuras internas. A partir de ahí, un atacante con conocimiento del layout de la heap puede manipular asignaciones futuras, sobrescribir punteros de función o estructuras críticas, y en última instancia &lt;strong&gt;redirigir el flujo de ejecución del proceso del servidor&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Severidad oficial
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Severidad Apache&lt;/strong&gt;: Important (la segunda más alta en su escala interna, debajo de Critical).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVSS base&lt;/strong&gt;: 8.8 (High).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impacto&lt;/strong&gt;: ejecución remota de código en el contexto del usuario que corre httpd (típicamente apache, www-data o nobody).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versión vulnerable&lt;/strong&gt;: Apache HTTP Server 2.4.66.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versión parcheada&lt;/strong&gt;: 2.4.67.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conviene notar la sutileza: el bug solo afecta la versión más reciente previa al parche, &lt;strong&gt;2.4.66&lt;/strong&gt;. Las versiones anteriores no tienen este defecto particular —fue introducido por un cambio reciente en mod_http2—. Eso es paradójico: los administradores que se mantuvieron actualizados quedaron expuestos, mientras que quienes corren versiones más viejas no son vulnerables a este CVE específico (aunque sí a los otros diez del advisory, que sí se arrastran desde antes).&lt;/p&gt;

&lt;h3&gt;
  
  
  Investigadores que reportaron el bug
&lt;/h3&gt;

&lt;p&gt;El advisory oficial acredita a &lt;strong&gt;Bartlomiej Dmitruk&lt;/strong&gt; (striga.ai) y &lt;strong&gt;Stanislaw Strzalkowski&lt;/strong&gt; (isec.pl), quienes reportaron el bug de forma privada al equipo de seguridad de Apache. La cooperación responsable funcionó: el fix se commitó al día siguiente del reporte y se incluyó en el siguiente release planificado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Por qué el RCE no es trivial pero sí real
&lt;/h3&gt;

&lt;p&gt;A diferencia de un bug clásico de stack overflow donde un atacante controla directamente un puntero, en un double-free moderno el camino al RCE pasa por &lt;strong&gt;manipular la heap&lt;/strong&gt; —el llamado &lt;em&gt;heap grooming&lt;/em&gt;—. El atacante necesita encadenar asignaciones específicas para que la región liberada dos veces termine ocupada por una estructura cuyo puntero de función o tabla de virtuales pueda controlar. Esto es complicado, pero &lt;strong&gt;completamente factible&lt;/strong&gt; y forma parte del repertorio estándar de las técnicas de explotación contemporáneas. Las mitigaciones del kernel —ASLR, NX, stack canaries— ayudan, pero no eliminan el riesgo.&lt;/p&gt;

&lt;p&gt;Lo que sí es robusto es el &lt;strong&gt;DoS&lt;/strong&gt;: incluso sin una explotación completa de RCE, un atacante puede tirar el servidor con la misma trama maliciosa, simplemente corrompiendo la heap hasta que httpd haga un crash. Para servicios públicos eso ya es un problema operativo grave por sí solo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los otros diez: el panorama completo
&lt;/h2&gt;

&lt;p&gt;Más allá de la RCE estrella, el advisory cierra otras diez vulnerabilidades. Las agrupo por familia de impacto.&lt;/p&gt;

&lt;h3&gt;
  
  
  Información sensible y privilegio local (Moderate)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-24072" rel="noopener noreferrer"&gt;CVE-2026-24072&lt;/a&gt;&lt;/strong&gt; (Moderate, mod_rewrite y otros). Permite a un autor local de archivos .htaccess leer archivos con los privilegios del usuario httpd. Es relevante en hostings compartidos donde múltiples clientes alojan sus sitios bajo el mismo proceso de Apache. Versiones afectadas: hasta 2.4.66. Reportado por el investigador anónimo y7syeu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-33006" rel="noopener noreferrer"&gt;CVE-2026-33006&lt;/a&gt;&lt;/strong&gt; (Moderate, mod_auth_digest). Un ataque de timing side-channel permite a un atacante remoto eludir la autenticación Digest. La autenticación Digest está en franco desuso —reemplazada por OAuth, JWT y autenticación basada en formularios sobre HTTPS—, pero algunos sitios legacy todavía la usan. Reportado por &lt;strong&gt;Nitescu Lucian&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cuatro CVEs en mod_proxy_ajp: el módulo que acumula deuda
&lt;/h3&gt;

&lt;p&gt;Cuatro de los once CVEs aplican al mismo módulo: &lt;strong&gt;mod_proxy_ajp&lt;/strong&gt;, el conector que permite a Apache reenviar peticiones a backends Tomcat o Jetty mediante el &lt;a href="https://en.wikipedia.org/wiki/Apache_JServ_Protocol" rel="noopener noreferrer"&gt;Apache JServ Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-28780" rel="noopener noreferrer"&gt;CVE-2026-28780&lt;/a&gt;&lt;/strong&gt; (Low) — Heap-based buffer overflow en ajp_msg_check_header(). Si mod_proxy_ajp se conecta a un servidor AJP malicioso, ese servidor puede provocar una escritura de &lt;strong&gt;4 bytes controlados por el atacante&lt;/strong&gt; más allá del final de un buffer heap. Reportado independientemente por Andrew Lacambra, Elhanan Haenel, Tianshuo Han y Tristan Madani entre febrero y marzo de 2026 —cuatro investigadores convergiendo al mismo bug es una señal clara de que el módulo está en el radar—.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-33857" rel="noopener noreferrer"&gt;CVE-2026-33857&lt;/a&gt;&lt;/strong&gt; (Low) — Out-of-bounds read en funciones getter de AJP. Reportado por &lt;strong&gt;Elhanan Haenel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-34032" rel="noopener noreferrer"&gt;CVE-2026-34032&lt;/a&gt;&lt;/strong&gt; (Low) — Improper null termination y out-of-bounds read en ajp_msg_get_string(). Reportado por &lt;strong&gt;Tianshuo Han&lt;/strong&gt; y &lt;strong&gt;Jérôme Djouder&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-34059" rel="noopener noreferrer"&gt;CVE-2026-34059&lt;/a&gt;&lt;/strong&gt; (Low) — Buffer over-read y memory disclosure en ajp_parse_data(). Reportado por &lt;strong&gt;Elhanan Haenel&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El patrón es elocuente: &lt;strong&gt;AJP es un protocolo viejo&lt;/strong&gt; —diseñado en los noventa para Apache JServ— y el código de su parser en C sigue revelando bugs después de décadas. Si tu Apache no está reenviando a un Tomcat, &lt;strong&gt;deshabilitar mod_proxy_ajp es la mitigación más simple y efectiva&lt;/strong&gt; contra estos cuatro CVEs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Denegación de servicio y crashes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-29168" rel="noopener noreferrer"&gt;CVE-2026-29168&lt;/a&gt;&lt;/strong&gt; (Low, mod_md). Vulnerabilidad de asignación de recursos sin límite en respuestas OCSP del módulo ACME que gestiona certificados Let’s Encrypt y similares. Una respuesta OCSP de tamaño excesivo agota recursos del servidor. Versiones afectadas: 2.4.30 hasta 2.4.66. Reportado por &lt;strong&gt;Pavel Kohout&lt;/strong&gt; (Aisle Research).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-29169" rel="noopener noreferrer"&gt;CVE-2026-29169&lt;/a&gt;&lt;/strong&gt; (Low, mod_dav_lock). NULL pointer dereference: una solicitud maliciosa al módulo de WebDAV crashea el servidor. El advisory aclara que mod_dav_lock no es usado internamente por mod_dav o mod_dav_fs, así que removerlo si no se usa explícitamente es la mitigación trivial. Reportado por &lt;strong&gt;Pavel Kohout&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-33007" rel="noopener noreferrer"&gt;CVE-2026-33007&lt;/a&gt;&lt;/strong&gt; (Low, mod_authn_socache). Otro NULL deref. Permite a un usuario remoto sin autenticar crashear un proceso hijo en configuraciones de caching forward proxy. Versiones afectadas: 2.4.0 hasta 2.4.66. Reportado por &lt;strong&gt;Pavel Kohout&lt;/strong&gt; y &lt;strong&gt;Arkadi Vainbrand&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP response splitting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-33523" rel="noopener noreferrer"&gt;CVE-2026-33523&lt;/a&gt;&lt;/strong&gt; (Low, múltiples módulos). Vulnerabilidad de HTTP response splitting cuando Apache reenvía a backends comprometidos o no confiables. Permite a un atacante con control parcial del backend inyectar headers HTTP arbitrarios en la respuesta al cliente. Versiones afectadas: 2.4.0 hasta 2.4.66. Reportado por &lt;strong&gt;Haruki Oyama&lt;/strong&gt; (Waseda University), &lt;strong&gt;Merih Mengisteab&lt;/strong&gt; y &lt;strong&gt;Dawit Jeong&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo detectar si tu servidor es vulnerable
&lt;/h2&gt;

&lt;p&gt;El primer paso es saber qué versión corres. Los comandos varían según distribución y método de 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;&lt;span class="c"&gt;# Linux (compilación desde fuente o paquete)&lt;/span&gt;
apache2 &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;span class="c"&gt;# o&lt;/span&gt;
httpd &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;span class="c"&gt;# RHEL / CentOS / Rocky / Alma&lt;/span&gt;
rpm &lt;span class="nt"&gt;-qa&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;httpd

&lt;span class="c"&gt;# Debian / Ubuntu&lt;/span&gt;
dpkg &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;apache2

&lt;span class="c"&gt;# Verificar módulos cargados (HTTP/2 y AJP en uso)&lt;/span&gt;
apache2ctl &lt;span class="nt"&gt;-M&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s2"&gt;"http2|proxy_ajp"&lt;/span&gt;
&lt;span class="c"&gt;# o en RHEL&lt;/span&gt;
httpd &lt;span class="nt"&gt;-M&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s2"&gt;"http2|proxy_ajp"&lt;/span&gt;

&lt;span class="c"&gt;# Ver si HTTP/2 está realmente activo en algún virtualhost&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"Protocols"&lt;/span&gt; /etc/apache2/ /etc/httpd/ 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (Apache Lounge u otros builds Windows)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;C:\Apache24\bin\httpd.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-v&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si la salida indica 2.4.66, eres vulnerable a &lt;strong&gt;&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;&lt;/strong&gt;. Si indica una versión entre 2.4.0 y 2.4.66, eres vulnerable a varios de los otros diez —dependiendo de qué módulos cargues—. La versión correcta es &lt;strong&gt;2.4.67&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Para chequear desde fuera, sin acceso al servidor, basta con una petición curl al header Server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;-k&lt;/span&gt; https://tu-dominio.tld/ 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; server
&lt;span class="c"&gt;# Server: Apache/2.4.66 (Unix)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muchos administradores ocultan el banner con ServerTokens Prod, lo cual es buena práctica de seguridad pero impide la detección remota fácil. En esos casos, un escaneo con Nmap usando el script http-apache-server-status o herramientas como Nuclei pueden inferir la versión por comportamiento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo parchear: ruta principal
&lt;/h2&gt;

&lt;p&gt;La actualización es una tarea estándar. Variantes según distribución:&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="c"&gt;# Debian / Ubuntu&lt;/span&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; &lt;span class="nt"&gt;--only-upgrade&lt;/span&gt; apache2

&lt;span class="c"&gt;# RHEL / Rocky / Alma&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf update httpd

&lt;span class="c"&gt;# Tras la actualización&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart apache2  &lt;span class="c"&gt;# o httpd&lt;/span&gt;

&lt;span class="c"&gt;# Verificar la nueva versión&lt;/span&gt;
apache2 &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;span class="c"&gt;# Server version: Apache/2.4.67 (Ubuntu)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para sitios construidos sobre &lt;strong&gt;paneles de control&lt;/strong&gt; —cPanel, Plesk, DirectAdmin, Webmin— la actualización suele venir empaquetada por el panel y se aplica desde su propio gestor. cPanel típicamente emite un upcp (update cPanel) que arrastra Apache; Plesk usa su propio updater. Si la versión empaquetada por la distribución todavía no incluye 2.4.67, es legítimo compilar desde fuente desde &lt;a href="https://downloads.apache.org/httpd/CHANGES_2.4" rel="noopener noreferrer"&gt;downloads.apache.org/httpd&lt;/a&gt; como medida temporal, pero hay que tener disciplina para volver al paquete oficial cuando la distro libere la versión.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mitigaciones temporales si no podés actualizar ahora
&lt;/h2&gt;

&lt;p&gt;A veces el calendario de mantenimiento no permite reiniciar Apache de inmediato. Hay mitigaciones que reducen sustancialmente el riesgo sin requerir actualización.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deshabilitar HTTP/2 (cierra &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="c"&gt;# En httpd.conf o equivalente&lt;/span&gt;
&lt;span class="c"&gt;# Comentar la carga del módulo:&lt;/span&gt;
&lt;span class="c"&gt;# LoadModule http2_module modules/mod_http2.so&lt;/span&gt;

&lt;span class="c"&gt;# O forzar solo HTTP/1.1 a nivel de virtualhost:&lt;/span&gt;
&lt;span class="nc"&gt;Protocols&lt;/span&gt; http/1.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tras editar:&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;apachectl configtest
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl reload apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El costo: HTTP/1.1 es más lento sobre TLS y los navegadores modernos están optimizados para HTTP/2. Para sitios de tráfico alto, esta mitigación puede afectar Core Web Vitals y experiencia de usuario. Es aceptable como puente de horas o un día, no como configuración permanente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deshabilitar mod_proxy_ajp si no se usa (cierra los 4 CVEs AJP)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Debian / Ubuntu&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;a2dismod proxy_ajp
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl reload apache2

&lt;span class="c"&gt;# RHEL / Rocky / Alma — comentar la línea LoadModule en&lt;/span&gt;
&lt;span class="c"&gt;# /etc/httpd/conf.modules.d/00-proxy.conf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La gran mayoría de los Apache modernos no usan AJP. Si tu stack es LAMP puro, PHP-FPM, Node detrás de Apache via proxy_pass HTTP, esto se puede deshabilitar sin impacto.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deshabilitar mod_dav_lock si no se usa
&lt;/h3&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;a2dismod dav_lock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Solo dejar habilitado si tu sitio usa WebDAV con locking explícito.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo se rompe y cómo se arregla, en términos del código
&lt;/h2&gt;

&lt;p&gt;El commit del fix —&lt;strong&gt;r1930444&lt;/strong&gt;, registrado el 11 de diciembre de 2025— se incluyó en la rama 2.4.x del repositorio Subversion oficial de Apache. El advisory no cita la función exacta del double-free, pero el patrón es reconocible para quien haya leído el código de mod_http2: la implementación de Apache mantiene &lt;strong&gt;estructuras de stream&lt;/strong&gt; que se asignan al iniciar una nueva petición HTTP/2 y se liberan al cerrarla. Cuando el cliente envía un &lt;strong&gt;RST_STREAM&lt;/strong&gt; muy temprano —antes de que la inicialización del stream haya completado todos los pasos— la lógica de cleanup intenta liberar la estructura por una ruta de error, mientras que el flujo principal también la libera por su ruta normal. &lt;strong&gt;Dos liberaciones, una sola estructura&lt;/strong&gt;: double-free.&lt;/p&gt;

&lt;p&gt;La corrección típica de este tipo de bug es marcar la estructura con un flag freed = true después de la primera liberación, y verificar el flag antes de cualquier liberación posterior. Apache tiene infraestructura para esto en su pool de memoria APR, y en general el arreglo consiste en que la ruta de cleanup detecte el caso y no toque la región dos veces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cuán fuerte es la noticia
&lt;/h2&gt;

&lt;p&gt;Hay tres elementos a calibrar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lo serio.&lt;/strong&gt; Es una RCE en el servidor web más usado del planeta —Apache sigue corriendo aproximadamente un tercio de los sitios activos según las series de Netcraft—, en una primitiva muy expuesta —HTTP/2 sobre TLS—, y con CVSS 8.8. No requiere autenticación. La superficie potencial es muy grande.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lo que matiza.&lt;/strong&gt; No hay PoC público todavía. Las primitivas de double-free a RCE en heap moderna no son triviales y requieren &lt;em&gt;heap grooming&lt;/em&gt; específico para la versión de glibc o jemalloc del binario en cuestión. La explotabilidad real depende de mitigaciones del kernel y de las características del binario. Como mínimo, esto es un &lt;strong&gt;DoS confiable&lt;/strong&gt;; el RCE confiable suele requerir trabajo adicional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;El factor tiempo.&lt;/strong&gt; El commit del fix lleva publicado desde el 11 de diciembre de 2025. &lt;strong&gt;Cualquier atacante competente con acceso al log puede haber identificado la primitiva vulnerable hace meses&lt;/strong&gt;. La ventana entre fix público y exploit público en este tipo de bugs es típicamente de &lt;strong&gt;días a semanas&lt;/strong&gt;, no meses. El hecho de que la versión 2.4.67 se libere recién ahora —cinco meses después del commit— sugiere que el equipo de Apache esperaba completar la batería de releases con todos los fixes acumulados, pero el costo de esa espera es exposición prolongada para administradores que no compilaban desde el branch en desarrollo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lección de fondo
&lt;/h2&gt;

&lt;p&gt;Hay un patrón en este advisory que vale la pena retener para quien planifica seguridad en infraestructura web. &lt;strong&gt;No es un solo bug; son once&lt;/strong&gt;. La concentración de cuatro CVEs en mod_proxy_ajp confirma que los protocolos legacy mantenidos por compatibilidad acumulan deuda silenciosa. La pregunta operativa, más allá de aplicar este parche, es: &lt;strong&gt;¿qué módulos cargás por defecto que no estás usando?&lt;/strong&gt; El principio de superficie mínima —deshabilitar todo lo no necesario— sigue siendo la defensa más barata y efectiva contra clases enteras de vulnerabilidades futuras.&lt;/p&gt;

&lt;p&gt;La otra lección es de cadencia. La política de Apache de no publicar advisories hasta tener un release estable que parche las cosas es defendible, pero crea una ventana de riesgo donde el commit del fix está en público y el binario nuevo todavía no. Para infraestructura crítica, suscribirse al &lt;a href="mailto:httpd-announce@apache.org"&gt;httpd-announce@apache.org&lt;/a&gt; —la lista oficial de anuncios— y al feed RSS de los advisories es lo mínimo viable. Para entornos altamente expuestos, mirar directamente el repositorio Subversion del proyecto en busca de commits con tags Fixes ... CVE es práctica de equipos de seguridad maduros.&lt;/p&gt;

&lt;p&gt;Y para el resto: &lt;strong&gt;2.4.67 hoy&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Apache HTTP Server — &lt;em&gt;Vulnerabilities in 2.4&lt;/em&gt; (advisory oficial): &lt;a href="https://httpd.apache.org/security/vulnerabilities_24.html" rel="noopener noreferrer"&gt;https://httpd.apache.org/security/vulnerabilities_24.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apache HTTP Server 2.4 — Changelog completo: &lt;a href="https://downloads.apache.org/httpd/CHANGES_2.4" rel="noopener noreferrer"&gt;https://downloads.apache.org/httpd/CHANGES_2.4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NVD — &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;: &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;https://nvd.nist.gov/vuln/detail/CVE-2026-23918&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SecurityWeek — &lt;em&gt;Critical, High-Severity Vulnerabilities Patched in Apache MINA, HTTP Server&lt;/em&gt; (Ionut Arghire, 5 may 2026): &lt;a href="https://www.securityweek.com/critical-high-severity-vulnerabilities-patched-in-apache-mina-http-server/" rel="noopener noreferrer"&gt;https://www.securityweek.com/critical-high-severity-vulnerabilities-patched-in-apache-mina-http-server/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;securityonline.info — &lt;em&gt;Millions at Risk: Apache HTTP Server Fixes Critical Remote Code Execution Flaw&lt;/em&gt;: &lt;a href="https://securityonline.info/apache-http-server-rce-vulnerability-cve-2026-23918-patch-2-4-67/" rel="noopener noreferrer"&gt;https://securityonline.info/apache-http-server-rce-vulnerability-cve-2026-23918-patch-2-4-67/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The CyberSec Guru — &lt;em&gt;Apache HTTP Server RCE Vulnerability: Critical Patch for &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;&lt;/em&gt;: &lt;a href="https://thecybersecguru.com/news/apache-rce-vulnerability-cve-2026-23918/" rel="noopener noreferrer"&gt;https://thecybersecguru.com/news/apache-rce-vulnerability-cve-2026-23918/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Undercode Testing — &lt;em&gt;Critical Apache HTTP Server Flaw Exposes Millions of Servers to RCE Attacks: A Technical Deep Dive Into &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-23918" rel="noopener noreferrer"&gt;CVE-2026-23918&lt;/a&gt;&lt;/em&gt;: &lt;a href="https://undercodetesting.com/critical-apache-http-server-flaw-exposes-millions-of-servers-to-rce-attacks-a-technical-deep-dive-into-cve-2026-23918-video/" rel="noopener noreferrer"&gt;https://undercodetesting.com/critical-apache-http-server-flaw-exposes-millions-of-servers-to-rce-attacks-a-technical-deep-dive-into-cve-2026-23918-video/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Apache HTTP Server: &lt;a href="https://en.wikipedia.org/wiki/Apache_HTTP_Server" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Apache_HTTP_Server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — HTTP/2: &lt;a href="https://en.wikipedia.org/wiki/HTTP/2" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/HTTP/2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Apache JServ Protocol: &lt;a href="https://en.wikipedia.org/wiki/Apache_JServ_Protocol" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Apache_JServ_Protocol&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cobertura adicional consultada: Cybersecurity News (cybersecuritynews.com bloquea acceso programático; la versión canónica se navega directamente).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Susam Pal propone tres leyes inversas de la IA para humanos en 2026</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Tue, 05 May 2026 20:17:29 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/susam-pal-propone-tres-leyes-inversas-de-la-ia-para-humanos-en-2026-45i9</link>
      <guid>https://dev.to/lu1tr0n/susam-pal-propone-tres-leyes-inversas-de-la-ia-para-humanos-en-2026-45i9</guid>
      <description>&lt;p&gt;El 12 de enero de 2026, el ingeniero indio Susam Pal publicó en su sitio personal un ensayo breve y provocador titulado &lt;em&gt;Three Inverse Laws of AI&lt;/em&gt;. La propuesta es simple, casi obvia una vez enunciada, y sin embargo tan necesaria que llama la atención que nadie la haya formalizado antes con esta claridad. Pal afirma que las famosas tres &lt;strong&gt;leyes inversas&lt;/strong&gt; que necesitamos en la era de los modelos de lenguaje no son reglas para constreñir a los robots, como las que Isaac Asimov inventó hace ochenta años, sino reglas que nos constriñen a nosotros, los humanos que interactuamos con ellos a diario.&lt;/p&gt;

&lt;p&gt;El ensayo apareció justo cuando la conversación pública sobre IA atravesaba un punto delicado: ChatGPT, Claude, Gemini y compañía ya están integrados en buscadores, IDE, suites ofimáticas y bots de soporte. Para millones de personas, una respuesta generada por IA es la primera (y muchas veces única) fuente consultada. Las &lt;strong&gt;leyes inversas&lt;/strong&gt; de Susam Pal aterrizan en ese contexto con un mensaje incómodo pero saludable: el problema no es solo la máquina, sino cómo la usamos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué pasó: el ensayo y su recepción
&lt;/h2&gt;

&lt;p&gt;Pal publica desde hace años notas técnicas en susam.net, su sitio personal. Sus textos suelen oscilar entre seguridad informática, criptografía y filosofía del software. Este ensayo, sin embargo, dio un salto desde su comunidad habitual hacia foros como Hacker News, Lobsters y varias listas de correo académicas. La razón fue simple: el texto invierte un marco mental que llevábamos décadas asumiendo como inamovible.&lt;/p&gt;

&lt;p&gt;Las tres leyes inversas que propone son las siguientes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Los humanos no deben antropomorfizar a los sistemas de IA.&lt;/li&gt;
&lt;li&gt;Los humanos no deben confiar ciegamente en lo que producen los sistemas de IA.&lt;/li&gt;
&lt;li&gt;Los humanos deben mantener plena responsabilidad y rendición de cuentas por las consecuencias de usarlos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pal usa el término &lt;em&gt;inverse&lt;/em&gt; no en el sentido lógico de negación, sino para señalar que el sujeto se invirtió: ya no es el robot el que tiene reglas, somos nosotros. Es una lectura sobria, casi conservadora, en un campo dominado por el entusiasmo y los discursos transformadores.&lt;/p&gt;

&lt;p&gt;Cada interacción con un LLM es una oportunidad para verificar, no para delegar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contexto: las tres leyes de Asimov y por qué ya no alcanzan
&lt;/h2&gt;

&lt;p&gt;Para entender la jugada de Pal hay que recordar las leyes originales. Isaac Asimov las introdujo en su cuento &lt;em&gt;Runaround&lt;/em&gt;, publicado en 1942 en la revista &lt;em&gt;Astounding Science Fiction&lt;/em&gt;. En su forma canónica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un robot no hará daño a un ser humano ni, por inacción, permitirá que un ser humano sufra daño.&lt;/li&gt;
&lt;li&gt;Un robot debe obedecer las órdenes que le dan los seres humanos, salvo cuando entren en conflicto con la primera ley.&lt;/li&gt;
&lt;li&gt;Un robot debe proteger su propia existencia, salvo cuando esto entre en conflicto con la primera o la segunda ley.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esas leyes funcionaron como dispositivo narrativo durante toda la edad de oro de la ciencia ficción. Sin embargo, presuponen un mundo donde los robots tienen agencia clara, intenciones reconocibles y un sustrato moral que se puede gobernar con axiomas. Los modelos de lenguaje grandes no son nada de eso. Un LLM no &lt;em&gt;quiere&lt;/em&gt; nada. No &lt;em&gt;obedece&lt;/em&gt; en ningún sentido fuerte. Es, en palabras de Pal, un modelo estadístico que produce texto plausible a partir de patrones en datos.&lt;/p&gt;

&lt;p&gt;Aplicarles las leyes de Asimov a sistemas como Claude o GPT es una categoría errónea. La pregunta interesante, dice Pal, es otra: ¿qué reglas necesitamos los humanos para no salir lastimados de esta convivencia?&lt;/p&gt;

&lt;h2&gt;
  
  
  Primera ley inversa: no antropomorfizar la IA
&lt;/h2&gt;

&lt;p&gt;La primera regla es la más sutil y, para muchos desarrolladores, la más incómoda. Antropomorfizar significa atribuir emociones, intenciones o agencia moral a los sistemas de IA. Pal nota que los chatbots modernos están deliberadamente afinados para sonar conversacionales, empáticos y educados. Esto los hace agradables de usar, pero también facilita olvidar lo que son: distribuidores probabilísticos sobre el siguiente token.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💭 Clave:&lt;/strong&gt; Cuando un modelo dice &lt;em&gt;"entiendo tu frustración"&lt;/em&gt;, no entiende nada. Es una secuencia de tokens estadísticamente apropiada para el contexto. Confundir fluidez con comprensión es el primer paso del error.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El argumento de Pal es que esta confusión no es neutral. Tiene consecuencias prácticas: usuarios que desarrollan dependencia emocional con asistentes virtuales, equipos de producto que asumen que un chatbot "sabe lo que el usuario quiere", legisladores que debaten si una IA tiene "derechos" antes de discutir si su despliegue tiene riesgos. La cura, según Pal, es lingüística y mental: hablar de los sistemas como lo que son, evitar pronombres personales si es posible, no atribuirles estados anímicos en la documentación interna.&lt;/p&gt;

&lt;p&gt;Para los desarrolladores en LATAM esto tiene un eco particular. Muchas startups regionales están vendiendo "agentes" como si fueran empleados digitales con personalidad. La presión comercial empuja en dirección contraria a la primera ley inversa, lo cual es justamente la razón por la que conviene formularla.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segunda ley inversa: no delegar el juicio
&lt;/h2&gt;

&lt;p&gt;La segunda regla es la que tiene más consecuencias inmediatas para nuestro trabajo diario. Pal lo plantea así: el contenido generado por IA no debe tratarse como autoritativo sin verificación independiente apropiada al contexto. Suena obvio, pero los buscadores ya están entrenando un hábito contrario.&lt;/p&gt;

&lt;p&gt;Google, Bing y Brave colocan respuestas generadas por IA en el primer pixel de la página. La consecuencia esperable es que el usuario lea esa respuesta y deje de scrollear. Con el tiempo, el reflejo cognitivo cambia: la IA pasa de ser un punto de partida a ser la conclusión. Pal pide que cada servicio de IA generativa muestre una advertencia conspicua sobre las posibles alucinaciones. En la práctica, los avisos existen pero están deliberadamente atenuados.&lt;/p&gt;

&lt;p&gt;Como desarrolladores, podemos materializar la segunda ley inversa en código. Un patrón útil es envolver toda llamada a un LLM en una capa que registre fuentes a verificar, deje rastro de quién fue el responsable humano y nunca consuma la salida directamente sin paso intermedio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dataclasses&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dataclass&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;field&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;

&lt;span class="nd"&gt;@dataclass&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LLMResponse&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;raw_text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;claims_to_verify&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;field&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default_factory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;verified_by&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Optional&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="n"&gt;accountable_user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
    &lt;span class="n"&gt;notes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_actionable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;verified_by&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask_llm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;LLMResponse&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;completion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;LLMResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;raw_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;completion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;claims_to_verify&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;extract_factual_claims&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;completion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;accountable_user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;notes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;requiere revisión humana antes de ejecutar&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ask_llm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;¿Cuándo expira esta licencia?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ana@empresa.cl&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_actionable&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;verifica antes de actuar&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El patrón no impide errores, pero los hace visibles. Un campo &lt;code&gt;verified_by&lt;/code&gt; vacío grita: "nadie revisó esto". Y el equipo aprende a no automatizar acciones sobre salidas no verificadas.&lt;/p&gt;

&lt;p&gt;La verificación humana puede modelarse en el tipo de retorno del wrapper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tercera ley inversa: no abdicar la responsabilidad
&lt;/h2&gt;

&lt;p&gt;La tercera regla es la más jurídica y, para Pal, la más urgente. Si un equipo médico usa IA para apoyar un diagnóstico y el diagnóstico falla, el responsable sigue siendo el equipo médico. Si una empresa usa IA para generar copy y el copy contiene información falsa que perjudica a un cliente, la empresa responde. Si un programador usa IA para generar código y el código introduce una vulnerabilidad, el programador responde.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Ojo:&lt;/strong&gt; "La IA me dijo que lo hiciera" no es una defensa legal en ninguna jurisdicción seria de LATAM. Los marcos regulatorios emergentes (AI Act europeo, propuestas en Brasil, México y Chile) refuerzan que el operador es siempre responsable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pal advierte sobre dos modos en que la responsabilidad se evapora silenciosamente. El primero es la &lt;em&gt;difusión&lt;/em&gt;: cuando un proceso involucra a varias personas y una IA, todos asumen que otro verificó. El segundo es la &lt;em&gt;obstrucción&lt;/em&gt;: cuando los proveedores hacen tan opacas las cadenas de decisión que se vuelve imposible auditar quién decidió qué. Ambos son fallas organizacionales, no técnicas.&lt;/p&gt;

&lt;p&gt;Esto se conecta con el ejemplo del veterano abogado de Nueva York que en 2023 presentó un escrito con casos inventados por ChatGPT y fue sancionado por el juez. Tres años después, el caso se cita como precedente: la responsabilidad del producto de salida es del profesional, no del modelo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo se ven las leyes inversas en la práctica
&lt;/h2&gt;

&lt;p&gt;El siguiente diagrama resume la lógica que Pal propone aplicar a cada interacción con un LLM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart LR
    A["Pregunta del usuario"] --&amp;gt; B["LLM produce salida"]
    B --&amp;gt; C{"¿Verificación humana?"}
    C --&amp;gt;|Sí| D["Acción consciente y atribuible"]
    C --&amp;gt;|No| E["Riesgo: confianza ciega"]
    D --&amp;gt; F["Responsabilidad clara"]
    E --&amp;gt; G["Responsabilidad difusa"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El nodo de verificación es el corazón del marco. Sin él, las otras dos leyes pierden tracción.&lt;/p&gt;

&lt;h2&gt;
  
  
  Datos y cifras: por qué esto importa en LATAM
&lt;/h2&gt;

&lt;p&gt;El reporte AI Index 2026 de Stanford, publicado en abril, registra que la inversión privada global en IA llegó a 581 mil millones de dólares en 2025, un crecimiento de 26% interanual. Gartner, por su parte, revisó al alza su pronóstico de gasto en TI para 2026 hasta un 13.5% interanual, impulsado en gran parte por adopción de IA generativa en empresas.&lt;/p&gt;

&lt;p&gt;En América Latina, la tendencia es similar pero con un componente preocupante: la mayoría de los despliegues son sobre infraestructura de proveedores extranjeros (OpenAI, Anthropic, Google), con baja capacidad local para auditar comportamiento. Chile lanzó en 2026 LatamGPT, el primer modelo generativo regional, justamente para reducir esta asimetría. Aun así, las herramientas que llegan a la mayoría de usuarios siguen siendo cajas negras.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Tip:&lt;/strong&gt; Si tu equipo en LATAM está integrando IA en producción, agregá a la documentación interna una versión local de las leyes inversas. Es una cláusula barata que evita debates incómodos cuando algo falla.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Implicaciones para desarrolladores
&lt;/h2&gt;

&lt;p&gt;Las &lt;strong&gt;leyes inversas&lt;/strong&gt; no son retórica filosófica. Tienen consecuencias muy concretas para quienes construimos software:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Diseño de interfaces:&lt;/strong&gt; evitar que la IA se presente como autoridad. Mostrar siempre fuentes, contradicciones, niveles de confianza textuales ("esto puede ser incorrecto") y un camino claro para verificar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logging y trazabilidad:&lt;/strong&gt; cada llamada a un modelo debería quedar asociada a un usuario humano y a un contexto, para que la responsabilidad sea atribuible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tono del producto:&lt;/strong&gt; resistir la tentación de darle nombre, voz y "personalidad" al asistente si eso induce confianza injustificada. Un copy más sobrio puede ser comercialmente menos sexy y técnicamente más sano.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests adversariales:&lt;/strong&gt; incluir en CI casos donde el modelo alucina deliberadamente (datos falsos, citas inexistentes) y validar que la pipeline lo detecta antes de mostrarlo al usuario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educación interna:&lt;/strong&gt; los onboardings de equipo deberían incluir literalmente la lectura del ensayo de Pal o un equivalente. La cultura es parte de la arquitectura.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Qué sigue
&lt;/h2&gt;

&lt;p&gt;Pal cierra su ensayo reconociendo lo obvio: ningún conjunto finito de reglas es a prueba de balas, exactamente como las leyes de Asimov tampoco lo eran en sus propios cuentos. La utilidad de las &lt;strong&gt;leyes inversas&lt;/strong&gt; está en abrir un vocabulario común para discutir riesgos sin caer en la dicotomía estéril entre tecno-optimismo y tecno-pánico.&lt;/p&gt;

&lt;p&gt;Lo que esperamos ver en los próximos meses: regulación europea y latinoamericana citando explícitamente principios cercanos a los de Pal, empresas grandes incorporando cláusulas de "verificación humana obligatoria" en sus términos de servicio para casos sensibles, y un debate más maduro en la comunidad sobre cómo entrenar a los usuarios, no solo a los modelos.&lt;/p&gt;

&lt;p&gt;📖 Resumen en Telegram: Ver resumen&lt;/p&gt;

&lt;h2&gt;
  
  
  Preguntas frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Qué son las leyes inversas de la IA?
&lt;/h3&gt;

&lt;p&gt;Son tres principios propuestos por Susam Pal en enero de 2026 que rigen el comportamiento humano frente a sistemas de IA: no antropomorfizar, no confiar ciegamente y no delegar la responsabilidad. Se llaman "inversas" porque, a diferencia de las leyes de Asimov, no constriñen al robot sino al humano.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Reemplazan estas leyes a las de Asimov?
&lt;/h3&gt;

&lt;p&gt;No. Las leyes de Asimov son un dispositivo narrativo de ciencia ficción para gobernar agentes hipotéticos con voluntad propia. Las leyes inversas de Pal son principios prácticos para usuarios humanos de sistemas estadísticos sin agencia. Ambas pueden coexistir conceptualmente, aunque hoy las inversas tienen mayor utilidad real.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo afectan estas leyes a los desarrolladores que usan IA en su flujo?
&lt;/h3&gt;

&lt;p&gt;Implican adoptar prácticas como verificar siempre la salida de un LLM antes de aceptarla en código de producción, mantener trazabilidad de qué humano aprobó qué decisión, y diseñar interfaces que no induzcan confianza injustificada en los usuarios finales del producto.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cuál es la principal crítica de Susam Pal al diseño actual de los chatbots?
&lt;/h3&gt;

&lt;p&gt;Pal sostiene que los proveedores afinan deliberadamente a los modelos para sonar empáticos y conversacionales, lo cual aumenta la usabilidad pero también la antropomorfización. Sugiere que un tono ligeramente más mecánico sería más saludable a largo plazo para la sociedad.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Hay regulación en LATAM que recoja estos principios?
&lt;/h3&gt;

&lt;p&gt;De momento no de forma explícita, pero las propuestas de regulación de IA en Brasil, México y Chile incluyen cláusulas sobre responsabilidad humana del operador y obligación de verificación, que se alinean con la tercera ley inversa de Pal.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Dónde puedo leer el ensayo original?
&lt;/h3&gt;

&lt;p&gt;El texto completo está disponible en el sitio personal de Susam Pal, susam.net, bajo el título &lt;em&gt;Three Inverse Laws of AI&lt;/em&gt;. Es de lectura corta (unos 15 minutos) y abierto sin paywall ni registro.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://susam.net/inverse-laws-of-robotics.html" rel="noopener noreferrer"&gt;Three Inverse Laws of AI — Susam Pal&lt;/a&gt; — ensayo original publicado el 12 de enero de 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Three_Laws_of_Robotics" rel="noopener noreferrer"&gt;Three Laws of Robotics — Wikipedia&lt;/a&gt; — historia y formulación canónica de las leyes de Asimov.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Anthropomorphism" rel="noopener noreferrer"&gt;Anthropomorphism — Wikipedia&lt;/a&gt; — base conceptual del primer principio inverso.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 &lt;strong&gt;¿Te gusta este contenido?&lt;/strong&gt; Únete a nuestro canal de Telegram &lt;a href="https://t.me/programacion" rel="noopener noreferrer"&gt;@programacion&lt;/a&gt; donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Quadsqueezing: Oxford logra el primer efecto cuántico de cuarto orden con un solo ion atrapado, 100 veces más rápido de lo…</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Tue, 05 May 2026 19:44:36 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/quadsqueezing-oxford-logra-el-primer-efecto-cuantico-de-cuarto-orden-con-un-solo-ion-atrapado-100-ojk</link>
      <guid>https://dev.to/lu1tr0n/quadsqueezing-oxford-logra-el-primer-efecto-cuantico-de-cuarto-orden-con-un-solo-ion-atrapado-100-ojk</guid>
      <description>&lt;p&gt;El &lt;strong&gt;1 de mayo de 2026&lt;/strong&gt;, la revista &lt;em&gt;Nature Physics&lt;/em&gt; publicó un trabajo del &lt;a href="https://www.physics.ox.ac.uk/news/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction" rel="noopener noreferrer"&gt;Departamento de Física de la Universidad de Oxford&lt;/a&gt; que demuestra, por primera vez en cualquier plataforma experimental, una interacción cuántica de cuarto orden conocida como &lt;strong&gt;quadsqueezing&lt;/strong&gt;. El paper, titulado &lt;em&gt;"Squeezing, trisqueezing and quadsqueezing in a hybrid oscillator–spin system"&lt;/em&gt; y firmado por &lt;strong&gt;O. Băzăvan, S. Saner, D. J. Webb, E. M. Ainley, P. Drmota, D. P. Nadlinger, G. Araneda, D. M. Lucas, C. J. Ballance&lt;/strong&gt; y &lt;strong&gt;R. Srinivas&lt;/strong&gt;, está disponible bajo el DOI &lt;a href="https://doi.org/10.1038/s41567-026-03222-6" rel="noopener noreferrer"&gt;10.1038/s41567-026-03222-6&lt;/a&gt; y como &lt;a href="https://arxiv.org/abs/2403.05471" rel="noopener noreferrer"&gt;preprint arXiv 2403.05471&lt;/a&gt; desde marzo de 2024. El equipo demostró, sobre un único ion atrapado, no solo el squeezing tradicional —ya conocido desde 1985 en óptica cuántica— sino también el trisqueezing (tercer orden) y el quadsqueezing (cuarto orden), generando este último &lt;strong&gt;más de 100 veces más rápido&lt;/strong&gt; de lo que predicen los métodos convencionales.&lt;/p&gt;

&lt;p&gt;La cobertura mediática fue inmediata: &lt;a href="https://www.sciencedaily.com/releases/2026/05/260501052828.htm" rel="noopener noreferrer"&gt;ScienceDaily&lt;/a&gt;, &lt;a href="https://thequantuminsider.com/2026/05/01/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction/" rel="noopener noreferrer"&gt;The Quantum Insider&lt;/a&gt;, Phys.org, EurekAlert y HPCwire reportaron el resultado el mismo día. El logro tiene aplicaciones concretas en simulación cuántica, sensores cuánticos y computación cuántica, e incluye una demostración temprana en simulación de &lt;strong&gt;teorías gauge de red&lt;/strong&gt;, una de las áreas más exigentes de la física teórica computacional. Este artículo es la continuación natural de la cobertura del &lt;a href="https://elsolitario.org/2026/05/03/turing-2025-a-bennett-y-brassard-por-que-la-criptografia-cuantica-que-inventaron/" rel="noopener noreferrer"&gt;Turing Award 2025 a Bennett y Brassard&lt;/a&gt;, que recorrió la criptografía cuántica desde BB84 hasta el horizonte de Q-Day; quadsqueezing pertenece al mismo paisaje, pero del lado de la &lt;strong&gt;información cuántica como recurso&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué es squeezing en términos accesibles
&lt;/h2&gt;

&lt;p&gt;Para entender qué significa el resultado de Oxford hay que partir de un hecho de la mecánica cuántica que distingue ese mundo del clásico: &lt;strong&gt;dos magnitudes complementarias no pueden conocerse simultáneamente con precisión arbitraria&lt;/strong&gt;. La formalización más conocida es el principio de incertidumbre de Heisenberg, que para una partícula relaciona posición y momento. En óptica cuántica, las dos magnitudes son las llamadas &lt;strong&gt;cuadraturas&lt;/strong&gt; del campo electromagnético, conceptualmente análogas a la posición y velocidad de un oscilador. La luz láser ordinaria —llamada estado coherente— distribuye su incertidumbre por igual entre ambas cuadraturas. Es la luz "más clásica" que la naturaleza permite.&lt;/p&gt;

&lt;p&gt;Un &lt;strong&gt;estado comprimido&lt;/strong&gt;, o squeezed state, redistribuye esa incertidumbre. Reduce el ruido en una cuadratura por debajo del límite cuántico estándar, a costa de aumentar el ruido en la otra. La analogía clásica útil es un balón redondo que uno aplasta para hacerlo elipsoidal: el volumen total se conserva, pero una dimensión se vuelve más estrecha. Esa estrechez tiene valor práctico: si lo que medimos depende de la cuadratura comprimida, podemos medir mejor que con luz láser ordinaria. La idea fue propuesta teóricamente en los años setenta y se demostró experimentalmente por primera vez en 1985, hace cuarenta y un años. Hoy es &lt;strong&gt;infraestructura operativa&lt;/strong&gt; de los detectores de ondas gravitacionales &lt;strong&gt;Advanced LIGO&lt;/strong&gt; y &lt;strong&gt;GEO600&lt;/strong&gt;, donde la luz comprimida permite detectar variaciones de longitud menores a una fracción del diámetro de un protón a escalas de kilómetros.&lt;/p&gt;

&lt;p&gt;Hasta aquí, &lt;strong&gt;squeezing es un efecto de segundo orden&lt;/strong&gt;: las matemáticas lo describen con un operador que contiene términos cuadráticos en la cuadratura. La pregunta natural en el campo desde hace décadas era si se podían generar análogos de orden superior —tercer orden (trisqueezing) y cuarto orden (quadsqueezing)— donde el operador contiene términos cúbicos o cuárticos. Esos estados de orden superior tienen estructura geométrica más rica y, en principio, podrían ofrecer ventajas que el squeezing tradicional no permite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué los efectos de orden superior son tan difíciles
&lt;/h2&gt;

&lt;p&gt;Hay una razón física directa por la que estos efectos no se habían observado hasta ahora. Las interacciones de orden superior son, en términos de los acoplamientos físicos disponibles, &lt;strong&gt;naturalmente débiles&lt;/strong&gt;. La intensidad cae rápidamente con cada orden adicional, de modo que cualquier ruido del experimento —fluctuaciones térmicas, decoherencia, imperfecciones de los pulsos láser— ahoga la señal antes de que pueda manifestarse. Generar quadsqueezing por la vía directa requeriría tiempos de interacción tan largos que el sistema se decohera antes de completarse el efecto; o, alternativamente, intensidades tan altas que los componentes experimentales se rompen.&lt;/p&gt;

&lt;p&gt;Hasta este trabajo, la comunidad había explorado trisqueezing en algunas plataformas con resultados parciales y muy cortos en duración. El quadsqueezing era considerado, en términos de muchas conferencias del campo, "experimentalmente fuera de alcance" para sistemas existentes. La barrera no era teórica sino práctica: la naturaleza no entrega ese tipo de interacción de manera fácil.&lt;/p&gt;

&lt;h2&gt;
  
  
  La idea: fuerzas no-conmutativas como atajo
&lt;/h2&gt;

&lt;p&gt;El equipo de Oxford resolvió el problema con un truco conceptual elegante que está en el corazón del paper. &lt;strong&gt;No intentaron generar la interacción de cuarto orden directamente&lt;/strong&gt;. Aplicaron al ion atrapado &lt;strong&gt;dos fuerzas controladas, cada una de las cuales por separado produce un efecto lineal sencillo&lt;/strong&gt;. Lo que hace la combinación de las dos fuerzas es lo interesante: el conjunto &lt;strong&gt;no es la suma de las partes&lt;/strong&gt;, sino algo cualitativamente diferente.&lt;/p&gt;

&lt;p&gt;La pieza física que permite este atajo se llama &lt;strong&gt;no-conmutatividad&lt;/strong&gt;. En matemática elemental, sumar tres a cinco da el mismo resultado que sumar cinco a tres. En el mundo cuántico, no todas las operaciones se comportan así. Hay pares de operaciones donde el orden importa: hacer A y luego B no produce el mismo estado final que hacer B y luego A. Esa diferencia entre los dos órdenes —el &lt;strong&gt;conmutador&lt;/strong&gt; de las dos operaciones— es, técnicamente, otra operación. Y si las operaciones lineales se eligen con cuidado, su conmutador puede ser una operación de orden superior.&lt;/p&gt;

&lt;p&gt;La autora principal, &lt;strong&gt;Oana Băzăvan&lt;/strong&gt;, lo expresó con esta cita en el comunicado oficial de Oxford:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"En el laboratorio, las interacciones no-conmutativas suelen verse como una molestia porque introducen dinámicas no deseadas. Aquí tomamos el enfoque opuesto: usamos esa característica para generar interacciones cuánticas más fuertes."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La estrategia replanteó la economía del experimento. En vez de luchar contra la debilidad intrínseca de una interacción de cuarto orden, el equipo construyó esa interacción combinando dos efectos lineales —que sí son fuertes y robustos— y dejando que la no-conmutatividad hiciera el trabajo. El resultado: la interacción de quadsqueezing emergió &lt;strong&gt;más de 100 veces más rápido&lt;/strong&gt; que el tiempo previsto por el cálculo directo convencional, lo cual significa que el efecto se completa antes de que la decoherencia destruya la coherencia cuántica del ion.&lt;/p&gt;

&lt;h2&gt;
  
  
  La teoría que predijo el experimento
&lt;/h2&gt;

&lt;p&gt;El experimento se apoya en una propuesta teórica publicada en 2021 por &lt;strong&gt;Raghavendra Srinivas&lt;/strong&gt; —coautor también del experimento— y &lt;strong&gt;Robert Tyler Sutherland&lt;/strong&gt;, en &lt;em&gt;Physical Review A&lt;/em&gt; (volumen 104, número 032609). El paper teórico mostró formalmente cómo dos interacciones lineales spin-dependent en un ion atrapado pueden combinarse para implementar interacciones bosónicas no lineales de hasta cuarto orden. Conviene retener el detalle: la &lt;strong&gt;predicción precedió al experimento por cinco años&lt;/strong&gt;. Es un caso instructivo de cómo la teoría cuántica adelanta hipótesis sobre fenómenos que la experimentación todavía no puede ejecutar, y luego la ingeniería avanza para alcanzarlos.&lt;/p&gt;

&lt;p&gt;La propuesta de Srinivas y Sutherland generaliza un patrón conocido en óptica cuántica desde hace décadas: las &lt;strong&gt;interacciones bosónicas no lineales&lt;/strong&gt; —procesos donde la energía del campo no se reparte linealmente— son la materia prima de la mayoría de los fenómenos cuánticos interesantes. Lo nuevo en su trabajo era ofrecer una receta concreta y experimentalmente factible usando un ion atrapado y los pulsos láser que ya forman parte del repertorio estándar de los laboratorios del campo. El trabajo de Oxford convierte esa receta en realidad medida.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo es físicamente el experimento
&lt;/h2&gt;

&lt;p&gt;Aunque el paper original contiene los detalles instrumentales completos, el esquema general se puede describir sin perder el sentido. El sistema experimental consiste en:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Un único ion atrapado&lt;/strong&gt;, sostenido en una &lt;strong&gt;trampa de iones&lt;/strong&gt; mediante campos electromagnéticos cuidadosamente configurados. Las trampas de iones son la plataforma más madura para experimentos cuánticos de este tipo: el ion queda suspendido en el vacío, aislado de la mayoría de fuentes de ruido, donde sus estados internos —spin— y su movimiento mecánico —oscilación en la trampa— pueden manipularse con pulsos láser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dos haces láser&lt;/strong&gt; que aplican fuerzas distintas al ion. La intensidad y la frecuencia de cada haz se controlan con precisión, y juntas producen la combinación no-conmutativa que da origen a la interacción de orden superior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detección por reconstrucción de la función de Wigner&lt;/strong&gt;, una representación matemática del estado cuántico que permite caracterizar de qué tipo de squeezing se trata. La función de Wigner del estado quadsqueezed tiene una estructura geométrica con simetría rotacional de cuatro lados, distinguible de la elipse del squeezing ordinario y del triángulo del trisqueezing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lo notable es que &lt;strong&gt;el mismo aparato genera los tres tipos de squeezing —segundo, tercer y cuarto orden— con solo cambiar los parámetros de los láseres&lt;/strong&gt;. Esa universalidad del setup es importante para aplicaciones futuras: una plataforma flexible puede simular muchos sistemas físicos sin reconfiguración mecánica.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué importa: tres aplicaciones concretas
&lt;/h2&gt;

&lt;p&gt;Quadsqueezing no es un efecto curioso confinado a la metrología fundamental. El paper menciona y, en algunas demostraciones tempranas dentro del propio trabajo, ya explora tres familias de aplicaciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simulación cuántica de teorías gauge de red
&lt;/h3&gt;

&lt;p&gt;Las &lt;strong&gt;teorías gauge de red&lt;/strong&gt; son una herramienta central de la física de altas energías. Permiten estudiar, en una computadora, cómo se comportan las interacciones fuertes que mantienen unidos los protones y neutrones, en regímenes donde la teoría continua no se puede resolver con lápiz y papel. El cálculo en supercomputadoras clásicas es extremadamente costoso: las simulaciones modernas de QCD en red consumen decenas de millones de horas-CPU al año en centros como Oak Ridge o Jülich. Una alternativa que se ha desarrollado en los últimos quince años es &lt;strong&gt;simular las teorías gauge directamente en hardware cuántico&lt;/strong&gt;, donde la dinámica cuántica del sistema simulador refleja la dinámica del sistema simulado.&lt;/p&gt;

&lt;p&gt;Los términos de orden superior que aparecen naturalmente en algunas teorías gauge de red eran difíciles de implementar en simuladores cuánticos pre-quadsqueezing. El equipo de Oxford ya demostró una simulación temprana de un modelo gauge usando su técnica, lo cual posiciona el resultado como pieza directamente útil para esta línea de investigación. La conexión con el premio Turing 2025 es clara: ambas tradiciones —criptografía cuántica e información cuántica— convergen en la idea de &lt;strong&gt;usar dinámica cuántica controlada como recurso computacional&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sensores cuánticos de mayor sensibilidad
&lt;/h3&gt;

&lt;p&gt;El squeezing tradicional ya se usa en LIGO para detectar ondas gravitacionales. La intuición es directa: comprimir el ruido en la cuadratura que se mide permite medir más fino. Los sensores que incorporan estados quadsqueezed pueden, en principio, detectar señales con perfiles de ruido distintos a los que el squeezing ordinario optimiza. Algunos escenarios donde esto puede importar: detección de magnetómetros para imagen cerebral funcional, sensores inerciales para navegación inercial sin GPS en submarinos o cápsulas espaciales, y mediciones de fuerzas extremadamente débiles en el contexto de búsqueda de materia oscura. El campo todavía está en fase exploratoria sobre cuáles aplicaciones específicas se benefician más, pero la herramienta ya existe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Computación cuántica con menor sobrecarga
&lt;/h3&gt;

&lt;p&gt;En computación cuántica con qubits superconductores o iones atrapados, las &lt;strong&gt;operaciones no lineales&lt;/strong&gt; son escasas y caras. Cada operación que requiere interacciones de orden superior se descompone, en el modelo estándar, en una secuencia larga de operaciones lineales más simples. Esa secuencia consume tiempo de coherencia y acumula errores. Si se puede ejecutar la operación de orden superior &lt;strong&gt;en un solo paso&lt;/strong&gt;, como permite quadsqueezing, la profundidad del circuito disminuye y la fidelidad del resultado mejora. Los autores señalan en el comunicado oficial que su técnica abre la posibilidad de implementar puertas lógicas no estándar con menos pasos, lo cual es directamente relevante para escalar la computación cuántica más allá de los aproximadamente cien qubits que la mayoría de procesadores comerciales manejan hoy con fidelidad útil.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cuán fuerte es el resultado
&lt;/h2&gt;

&lt;p&gt;Conviene calibrar el resultado. &lt;strong&gt;Esto no es un computador cuántico universal&lt;/strong&gt;. Es un único ion en una trampa, y el efecto demostrado es un componente, no un sistema completo. La pregunta operativa para alguien que sigue el campo es: ¿qué barreras de escala van a aparecer cuando se intente extender este truco a sistemas con muchos modos —es decir, muchos iones— y cuando se intente integrarlo con las arquitecturas de error correction que ya están en desarrollo? Esos son problemas abiertos, y el paper los menciona explícitamente como dirección de trabajo futuro.&lt;/p&gt;

&lt;p&gt;Lo que sí es robusto es el principio. La idea de &lt;strong&gt;explotar no-conmutatividad como recurso&lt;/strong&gt;, en lugar de tratarla como una molestia que hay que minimizar, tiene aplicaciones más allá de squeezing. La cita de &lt;strong&gt;Raghavendra Srinivas&lt;/strong&gt;, supervisor del trabajo, en el comunicado oficial es ilustrativa:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Fundamentalmente, hemos demostrado un nuevo tipo de interacción que nos permite explorar la física cuántica en territorio inexplorado, y estamos genuinamente entusiasmados por los descubrimientos que vendrán."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hay un patrón en este tipo de avances. Las técnicas inicialmente desarrolladas en sistemas pequeños y bien controlados —un solo ion en una trampa— suelen migrar primero a sistemas medianos —pequeños arrays— y luego a la infraestructura común de la disciplina, como ya pasó con el squeezing tradicional. La adopción no es inmediata; los detectores de ondas gravitacionales tardaron veinticinco años en pasar de las primeras demostraciones de squeezing en laboratorio a la integración operativa. La ventana de tiempo para ver quadsqueezing fuera del laboratorio puede ser comparable, o más rápida si las aplicaciones de simulación cuántica empujan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo experimentar con squeezing desde el código
&lt;/h2&gt;

&lt;p&gt;Para quien quiera explorar la física desde una herramienta de programación sin acceso a un laboratorio de física atómica, las plataformas de simulación cuántica modernas exponen estos conceptos directamente. &lt;strong&gt;Qiskit&lt;/strong&gt;, &lt;strong&gt;Cirq&lt;/strong&gt;, &lt;strong&gt;Strawberry Fields&lt;/strong&gt; y &lt;strong&gt;QuTiP&lt;/strong&gt; permiten construir y simular estados squeezed con pocas líneas de Python. Un ejemplo mínimo en QuTiP, una biblioteca abierta de simulación cuántica:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qutip&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;basis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;displace&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;wigner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plot_wigner&lt;/span&gt;

&lt;span class="n"&gt;N&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;  &lt;span class="c1"&gt;# dimensión del espacio de Hilbert truncado
&lt;/span&gt;&lt;span class="n"&gt;alpha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="c1"&gt;# sin desplazamiento, vacío comprimido
&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;  &lt;span class="c1"&gt;# parámetro de squeezing (en unidades naturales)
&lt;/span&gt;&lt;span class="n"&gt;theta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;  &lt;span class="c1"&gt;# ángulo de squeezing
&lt;/span&gt;
&lt;span class="n"&gt;vac&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;basis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# estado vacío
&lt;/span&gt;&lt;span class="n"&gt;sq_op&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1j&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  &lt;span class="c1"&gt;# operador de squeezing
&lt;/span&gt;&lt;span class="n"&gt;sq_state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sq_op&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;vac&lt;/span&gt;  &lt;span class="c1"&gt;# vacío comprimido
&lt;/span&gt;
&lt;span class="c1"&gt;# función de Wigner: distribución de cuasi-probabilidad en el espacio de fase
&lt;/span&gt;&lt;span class="nf"&gt;plot_wigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sq_state&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El resultado visual es una distribución elíptica en el espacio de fase: la firma del squeezing de segundo orden. Para trisqueezing y quadsqueezing las funciones equivalentes no están todavía como primitivas en QuTiP, pero pueden construirse extendiendo el operador &lt;code&gt;squeeze&lt;/code&gt; con potencias mayores del operador de aniquilación. Es un buen ejercicio para entender por qué las interacciones de orden superior son matemáticamente más complejas, aun cuando la física experimental ahora las habilite.&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="c"&gt;# Instalación de QuTiP&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;qutip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Para Strawberry Fields (Xanadu), específico para óptica cuántica continua&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;StrawberryFields
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Strawberry Fields es particularmente útil porque trata estados squeezed como ciudadanos de primera clase del lenguaje, y es la plataforma sobre la cual Xanadu desarrolla sus computadoras cuánticas fotónicas comerciales. El código, sin instalación física, es la entrada más accesible al mundo conceptual donde Oxford acaba de empujar la frontera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lección de fondo
&lt;/h2&gt;

&lt;p&gt;El paper de Oxford hace algo que vale la pena retener para entender la dinámica del avance científico. Toma una "molestia" —la no-conmutatividad de operaciones cuánticas— y la convierte en &lt;strong&gt;recurso&lt;/strong&gt;. Es el mismo movimiento que hace BB84 con la perturbación cuántica de la medición: lo que en otros contextos es una limitación, en el contexto correcto es la herramienta. Esta inversión de perspectiva es el patrón estructural de muchos avances en información cuántica.&lt;/p&gt;

&lt;p&gt;La otra lección es de método. La predicción teórica de Srinivas y Sutherland en 2021 anticipó precisamente lo que el experimento demuestra ahora. Cinco años entre la propuesta sobre el papel y el resultado en el laboratorio es un ciclo razonablemente corto en física experimental, y depende crucialmente de que la teoría haya identificado un camino implementable con la tecnología existente, no un camino que requiera plataformas de generación futura. Cuando la teoría, los experimentos y la ingeniería operan en sincronía, el campo avanza rápido. Cuando se desincronizan, los resultados quedan en la lista de "experimentos pendientes" durante décadas.&lt;/p&gt;

&lt;p&gt;Para quien sigue el panorama de información cuántica desde fuera del campo, lo importante es que &lt;strong&gt;la frontera ya no está en demostrar que el squeezing existe ni en optimizar el squeezing tradicional&lt;/strong&gt;. Está en construir el repertorio completo de interacciones de orden superior y aprender a integrarlas en sistemas que escalen. Quadsqueezing es la primera baldosa de un piso que recién empieza a ponerse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Squeezing, trisqueezing and quadsqueezing in a hybrid oscillator–spin system&lt;/em&gt; — Băzăvan et al., &lt;em&gt;Nature Physics&lt;/em&gt;, mayo 2026: &lt;a href="https://doi.org/10.1038/s41567-026-03222-6" rel="noopener noreferrer"&gt;https://doi.org/10.1038/s41567-026-03222-6&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Preprint en arXiv (versión open access): &lt;a href="https://arxiv.org/abs/2403.05471" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2403.05471&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Comunicado oficial Oxford Department of Physics: &lt;a href="https://www.physics.ox.ac.uk/news/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction" rel="noopener noreferrer"&gt;https://www.physics.ox.ac.uk/news/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ScienceDaily — &lt;em&gt;Oxford physicists achieve first-ever "quadsqueezing" breakthrough in quantum physics&lt;/em&gt;: &lt;a href="https://www.sciencedaily.com/releases/2026/05/260501052828.htm" rel="noopener noreferrer"&gt;https://www.sciencedaily.com/releases/2026/05/260501052828.htm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Quantum Insider — &lt;em&gt;Oxford Team Achieves First-ever 'Quadsqueezing' Quantum Interaction&lt;/em&gt;: &lt;a href="https://thequantuminsider.com/2026/05/01/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction/" rel="noopener noreferrer"&gt;https://thequantuminsider.com/2026/05/01/oxford-team-achieves-first-ever-quadsqueezing-quantum-interaction/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;EurekAlert (comunicado de prensa primario): &lt;a href="https://www.eurekalert.org/news-releases/1126499" rel="noopener noreferrer"&gt;https://www.eurekalert.org/news-releases/1126499&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Squeezed coherent state: &lt;a href="https://en.wikipedia.org/wiki/Squeezed_coherent_state" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Squeezed_coherent_state&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Trapped ion quantum computer: &lt;a href="https://en.wikipedia.org/wiki/Trapped_ion_quantum_computer" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Trapped_ion_quantum_computer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wikipedia — Ion trap: &lt;a href="https://en.wikipedia.org/wiki/Ion_trap" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Ion_trap&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Trabajo teórico precedente: Srinivas y Sutherland, &lt;em&gt;Physical Review A&lt;/em&gt; 104.032609 (2021). El sitio de APS bloquea agregadores externos; la cita canónica se consulta directamente en journals.aps.org.&lt;/li&gt;
&lt;li&gt;Cobertura adicional consultada: phys.org, HPCwire, Yahoo News (algunos de estos publishers bloquean acceso programático; las versiones canónicas se navegan directamente).&lt;/li&gt;
&lt;li&gt;Artículo previo en línea con esta cobertura: &lt;em&gt;Turing 2025 a Bennett y Brassard&lt;/em&gt;, elsolitario.org, 3 mayo 2026: &lt;a href="https://elsolitario.org/2026/05/03/turing-2025-a-bennett-y-brassard-por-que-la-criptografia-cuantica-que-inventaron/" rel="noopener noreferrer"&gt;https://elsolitario.org/2026/05/03/turing-2025-a-bennett-y-brassard-por-que-la-criptografia-cuantica-que-inventaron/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>technology</category>
      <category>science</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Bun explora migrar de Zig a Rust con un port asistido por IA: lo que dice la guía oficial publicada hoy</title>
      <dc:creator>lu1tr0n</dc:creator>
      <pubDate>Tue, 05 May 2026 19:31:55 +0000</pubDate>
      <link>https://dev.to/lu1tr0n/bun-explora-migrar-de-zig-a-rust-con-un-port-asistido-por-ia-lo-que-dice-la-guia-oficial-publicada-5ad1</link>
      <guid>https://dev.to/lu1tr0n/bun-explora-migrar-de-zig-a-rust-con-un-port-asistido-por-ia-lo-que-dice-la-guia-oficial-publicada-5ad1</guid>
      <description>&lt;p&gt;El &lt;strong&gt;5 de mayo de 2026&lt;/strong&gt; apareció en el repositorio oficial de &lt;a href="https://bun.com/" rel="noopener noreferrer"&gt;Bun&lt;/a&gt; una rama llamada &lt;code&gt;claude/phase-a-port&lt;/code&gt; con un archivo nuevo: &lt;a href="https://github.com/oven-sh/bun/blob/claude/phase-a-port/docs/PORTING.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/PORTING.md&lt;/code&gt;&lt;/a&gt;. El commit, identificado como &lt;code&gt;46d3bc29f270fa881dd5730ef1549e88407701a5&lt;/code&gt;, es la primera evidencia pública de que el equipo de Bun —desde diciembre de 2025 propiedad de &lt;strong&gt;Anthropic&lt;/strong&gt;— está experimentando con la idea de migrar el runtime completo del lenguaje Zig al lenguaje Rust, usando agentes de inteligencia artificial como traductores principales del código fuente. Horas después, &lt;strong&gt;Jarred Sumner&lt;/strong&gt;, creador y mantenedor principal de Bun, salió a aclarar en &lt;a href="https://news.ycombinator.com/item?id=48016880" rel="noopener noreferrer"&gt;Hacker News&lt;/a&gt; que el experimento no es un compromiso de reescribir el runtime, sino una exploración técnica que podría descartarse por completo. La discusión escaló en pocas horas: 692 puntos y 511 comentarios en HN, una cobertura de &lt;a href="https://www.theregister.com/2026/05/05/bun_rust_port/" rel="noopener noreferrer"&gt;The Register&lt;/a&gt; firmada por Tim Anderson, hilos en &lt;a href="https://lobste.rs/s/otxkjw/bun_js_runtime_is_being_vibe_ported_from" rel="noopener noreferrer"&gt;Lobsters&lt;/a&gt; y respuestas en cadena desde el ecosistema Zig.&lt;/p&gt;

&lt;p&gt;Esta noticia cae apenas un día después de la cobertura sobre &lt;a href="https://elsolitario.org/2026/05/04/anthropic-bun-claude-code-runtime-2026/" rel="noopener noreferrer"&gt;Bun bajo Anthropic y los miedos comunitarios&lt;/a&gt; que arrastra la adquisición. El port a Rust convierte una preocupación abstracta de gobernanza en una decisión técnica concreta y verificable. Vamos a desarmar el anuncio: qué dice exactamente la guía oficial, por qué Zig fue la elección original, qué fricción produjo la política no-IA del proyecto Zig, cómo está estructurado el experimento de traducción, y qué implicaciones reales tiene para el millón largo de proyectos que hoy dependen de Bun en producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué pasó el 5 de mayo
&lt;/h2&gt;

&lt;p&gt;A las 14:08 UTC, el &lt;a href="https://www.theregister.com/2026/05/05/bun_rust_port/" rel="noopener noreferrer"&gt;The Register publicó&lt;/a&gt; la nota titulada &lt;em&gt;"Bun posts Rust porting guide, says rewrite is still half-baked"&lt;/em&gt;. La pieza, basada en el commit público y en respuestas directas de Sumner en redes sociales, sintetiza el contexto en una línea que resume el conflicto: &lt;em&gt;"Zig's no-AI policy is at odds with view that most open source code will be AI-written in future"&lt;/em&gt;. La frase de Sumner que resumió su postura sobre el ecosistema, citada por The Register, es contundente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I expect OSS to go the opposite direction: no human contribution allowed."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esa es una de las posiciones más radicales que ha expresado un mantenedor relevante hasta hoy sobre el futuro del open source y los &lt;strong&gt;agentes de código&lt;/strong&gt;. La aclaración inmediata sobre el experimento concreto, también de Sumner, fue más mesurada:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We haven't committed to rewriting. There's a very high chance all this code gets thrown out completely. I'm curious to see what a working version of this looks like, what it feels like, how it performs."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La rama &lt;code&gt;claude/phase-a-port&lt;/code&gt; no es una propuesta de merge; es un experimento que vive en paralelo a la rama principal &lt;code&gt;main&lt;/code&gt;. El nombre mismo —incluir &lt;code&gt;claude/&lt;/code&gt; como prefijo— es revelador: el port se está realizando con un agente coordinador construido sobre &lt;strong&gt;Claude Code&lt;/strong&gt;, el agente de programación de Anthropic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bun en 2026: cuán importante es el proyecto
&lt;/h2&gt;

&lt;p&gt;Antes de discutir si tiene sentido reescribirlo, conviene establecer escala. &lt;a href="https://en.wikipedia.org/wiki/Bun_%28software%29" rel="noopener noreferrer"&gt;Bun&lt;/a&gt; es un runtime alternativo a Node.js y Deno, lanzado como versión 1.0 en septiembre de 2023 por Jarred Sumner. Combina runtime de JavaScript, gestor de paquetes, bundler y task runner en un único binario. Sus números públicos a inicios de 2026 son significativos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;88.000 estrellas en GitHub&lt;/strong&gt;, muy por encima de Deno y comparable con frameworks históricos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;7,2 millones de descargas mensuales&lt;/strong&gt; desde el registro npm.&lt;/li&gt;
&lt;li&gt;Aproximadamente &lt;strong&gt;3,1 millones de descargas semanales&lt;/strong&gt; del paquete &lt;code&gt;bun&lt;/code&gt;, con crecimiento interanual reportado del &lt;strong&gt;+85%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Empresas con uso documentado en producción incluyen &lt;strong&gt;Stripe&lt;/strong&gt;, &lt;strong&gt;X (anteriormente Twitter)&lt;/strong&gt;, &lt;strong&gt;Midjourney&lt;/strong&gt; y &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, que distribuye su CLI standalone como un binario construido con Bun.&lt;/li&gt;
&lt;li&gt;El propio &lt;strong&gt;Anthropic&lt;/strong&gt; lo usa internamente para Claude Code, su producto de agente CLI.&lt;/li&gt;
&lt;li&gt;Aproximadamente 770.000 líneas de código en el repositorio principal, predominantemente en Zig.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A diferencia de Node, que está en C++ y cuyo desarrollo lleva más de quince años, o de Deno, que está escrito en Rust desde su origen, Bun apostó por &lt;strong&gt;Zig&lt;/strong&gt;, un lenguaje de sistemas diseñado por Andrew Kelley a partir de 2016 para reemplazar C en escenarios donde se requiere control bajo nivel sin la complejidad sintáctica de Rust. Esa decisión fue distintiva durante años y forma parte de la identidad técnica del proyecto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué Zig fue la elección original
&lt;/h2&gt;

&lt;p&gt;La elección de &lt;a href="https://en.wikipedia.org/wiki/Zig_%28programming_language%29" rel="noopener noreferrer"&gt;Zig&lt;/a&gt; por parte de Sumner respondía a tres factores que en su momento eran defendibles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compilación rápida&lt;/strong&gt;. Zig produce binarios sin las pesadas operaciones de monomorfización que Rust hace para cada genérico. En proyectos grandes como Bun esa diferencia se nota: los tiempos de iteración del desarrollador son sustancialmente menores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control explícito de memoria sin borrow checker&lt;/strong&gt;. Zig deja la responsabilidad al programador, lo que evita pelear con el verificador de préstamos, pero exige disciplina manual. Sumner ha argumentado que para un runtime con caminos calientes muy específicos, eso permite optimizaciones difíciles de expresar en Rust idiomático sin caer en &lt;code&gt;unsafe&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;comptime&lt;/code&gt; y monomorfización selectiva&lt;/strong&gt;. Zig permite ejecutar código en tiempo de compilación para generar variantes especializadas de funciones. Esto encaja con el patrón típico de un runtime, donde se quiere una implementación rápida para casos comunes y un fallback genérico para casos raros.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El precio de esa elección era estabilidad. Zig estaba —y sigue estando— en versión &lt;strong&gt;0.16&lt;/strong&gt;, lo que significa que tanto la sintaxis del lenguaje como la biblioteca estándar pueden cambiar entre versiones menores. El equipo de Bun mantiene un fork interno de Zig precisamente para amortiguar ese ritmo, además de incorporar mejoras propias. Una de esas mejoras —&lt;strong&gt;generación de código en paralelo&lt;/strong&gt;, que cuadruplicaba la velocidad de compilación en modo debug— se convirtió, paradójicamente, en parte del detonante del experimento actual.&lt;/p&gt;

&lt;h2&gt;
  
  
  La política no-IA de Zig y el bloqueo del fork
&lt;/h2&gt;

&lt;p&gt;Cuando Bun intentó proponer la mejora de compilación paralela al proyecto Zig upstream, dos obstáculos aparecieron al mismo tiempo. El primero fue técnico: el equipo core de Zig argumentó que la implementación paralela del análisis semántico podía exhibir comportamientos no deterministas en ciertos órdenes de evaluación, y que aceptar el cambio sin un análisis exhaustivo podía romper supuestos del compilador. El segundo fue de gobernanza: el proyecto Zig adoptó formalmente una &lt;strong&gt;política contra contribuciones asistidas por modelos de lenguaje grandes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;El argumento detallado de esa política fue publicado por &lt;strong&gt;Loris Cro&lt;/strong&gt;, ingeniero del equipo Zig, en su blog &lt;a href="https://kristoff.it/blog/contributor-poker-and-ai/" rel="noopener noreferrer"&gt;kristoff.it&lt;/a&gt; el &lt;strong&gt;29 de abril de 2026&lt;/strong&gt;. Cro lo enmarca en lo que llama "contributor poker": apostar el tiempo y la energía de los mantenedores en contribuyentes humanos que desarrollen pericia y confianza con el equipo. La cita central de su tesis es:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"From the perspective of contributor poker it's simply irrational for us to bet on LLM users while there's a huge pool of other contributors. To be able to provide impactful work a contributor needs to be familiar with the codebase and the problem space."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El equipo Zig sostiene que las contribuciones generadas por LLMs presentan tres problemas recurrentes: pull requests con alucinaciones, código que no compila, y autores que consultan modelos en privado mientras niegan hacerlo en el hilo público. La política no prohíbe a desarrolladores usar IA en su flujo personal; prohíbe contribuciones donde el LLM es el autor efectivo del código.&lt;/p&gt;

&lt;p&gt;Para Bun la política fue una pared. La mejora de compilación paralela, junto con varios parches adicionales, no podía mergearse upstream sin reescritura humana. Esto implica que cualquier mejora seguirá viviendo en el fork interno de Bun, multiplicando el esfuerzo de mantenimiento a medida que Zig sigue evolucionando independientemente. La pregunta empezó a ser: si el proyecto va a desviarse cada vez más del Zig upstream, ¿por qué no usar un lenguaje que sí acepte los flujos de trabajo modernos?&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase A y Phase B: la guía oficial
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/oven-sh/bun/blob/claude/phase-a-port/docs/PORTING.md" rel="noopener noreferrer"&gt;&lt;code&gt;PORTING.md&lt;/code&gt;&lt;/a&gt; divide el proceso en dos fases con objetivos muy distintos. La estructura está pensada para usar agentes de IA como motor de traducción, pero conserva control humano explícito.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fase A: capturar la lógica
&lt;/h3&gt;

&lt;p&gt;El objetivo de la fase A es producir un archivo &lt;code&gt;.rs&lt;/code&gt; al lado de cada &lt;code&gt;.zig&lt;/code&gt; que represente la misma lógica, sin que el código necesite compilar. La consigna es estructural: respetar el orden de los campos, los nombres de las funciones (en &lt;code&gt;snake_case&lt;/code&gt;) y el flujo de control. Cada función traducida lleva un comentario que indica el grado de confianza:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="c1"&gt;// CONFIDENCE: high&lt;/span&gt;
&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;parse_header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buffer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;u8&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Option&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// TODO(port): verificar manejo de end-of-stream&lt;/span&gt;
    &lt;span class="c1"&gt;// PERF(port): zig usaba un arena allocator de 4096 bytes&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Las restricciones explícitas que enumera la guía son sorprendentemente estrictas para un proyecto Rust. Citando textualmente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"No &lt;code&gt;tokio&lt;/code&gt;, &lt;code&gt;rayon&lt;/code&gt;, &lt;code&gt;hyper&lt;/code&gt;, &lt;code&gt;async-trait&lt;/code&gt;, &lt;code&gt;futures&lt;/code&gt;. No &lt;code&gt;std::fs&lt;/code&gt;, &lt;code&gt;std::net&lt;/code&gt;, &lt;code&gt;std::process&lt;/code&gt;."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tampoco se permite &lt;code&gt;async fn&lt;/code&gt;. Todo concurrencia se expresa con &lt;strong&gt;callbacks y máquinas de estado&lt;/strong&gt;, "igual que en el Zig original". Los bloques &lt;code&gt;unsafe&lt;/code&gt; requieren anotaciones &lt;code&gt;// SAFETY: &amp;lt;razón&amp;gt;&lt;/code&gt; que reflejen los invariantes del código original. Los crates relacionados con el AST mantienen arenas; el resto usa el alocador global.&lt;/p&gt;

&lt;p&gt;Estas restricciones son, en términos de comunidad Rust, profundamente no-idiomáticas. La mayoría de los proyectos Rust modernos asumen tokio para asíncrono, hyper para HTTP, rayon para paralelismo de datos. Renunciar a todo el ecosistema asíncrono de alto nivel no es una decisión accidental: el equipo de Bun necesita preservar el modelo de concurrencia del runtime original, donde el bucle de eventos está construido manualmente y los handles se pasan como argumentos explícitos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fase B: hacer que compile
&lt;/h3&gt;

&lt;p&gt;La fase B toma los archivos producidos por la fase A y los hace compilar crate por crate. Aquí los tipos se ajustan, los imports se resuelven, los lifetimes se anotan, y el borrow checker se enfrenta. Esta es la parte donde la mayor parte del trabajo humano resulta inevitable.&lt;/p&gt;

&lt;p&gt;El estado actual reportado por la comunidad es elocuente: aproximadamente el &lt;strong&gt;80% de los archivos porteados&lt;/strong&gt; tiene confianza marcada como &lt;code&gt;medium&lt;/code&gt;, lo cual significa que la lógica probablemente está bien capturada, pero el código no compila. La fase B no ha empezado en serio. Sumner lo confirmó al moderar la discusión en HN:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This whole thread is an overreaction. 302 comments about code that does not work."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Cómo se traduce código entre lenguajes con agentes
&lt;/h2&gt;

&lt;p&gt;El método operativo descrito implícitamente en &lt;code&gt;PORTING.md&lt;/code&gt; y discutido en los hilos públicos es lo que en la comunidad se ha empezado a llamar &lt;strong&gt;"vibe-port"&lt;/strong&gt;: un agente coordinador lee el archivo Zig, identifica las construcciones idiomáticas, las mapea a equivalentes en Rust según un libro de reglas, y produce el &lt;code&gt;.rs&lt;/code&gt; con marcadores TODO/PERF para los puntos donde la traducción es ambigua. Un humano —o un segundo agente— revisa los marcadores antes de pasar a la fase B.&lt;/p&gt;

&lt;p&gt;La ventaja teórica de este enfoque sobre una reescritura humana es la velocidad: 770.000 líneas de código se pueden traducir en días, no en años. La desventaja es que el código resultante puede ser correcto en lógica pero feo en estilo, lleno de &lt;code&gt;unsafe&lt;/code&gt; para imitar punteros crudos del Zig original, con asignaciones manuales que un programador Rust expresaría con primitivas estándar.&lt;/p&gt;

&lt;p&gt;Un comentario destacado en Lobsters sintetiza la crítica:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Está absolutamente lleno de &lt;code&gt;unsafe&lt;/code&gt; y producirá toneladas de código Rust no idiomático. Nunca conocí mantenedores felices con Rust en codebases de más de 100k líneas que tengan ese perfil."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Otro punto crítico es la verificación: ¿cómo sabe el equipo que el código traducido se comporta igual al original? La respuesta probable es la batería de tests del runtime, que ya es muy extensa por la naturaleza del proyecto (cubrir compatibilidad con Node.js obliga a una cobertura amplia). Si los tests pasan idénticos en ambas implementaciones, la traducción se considera válida; si fallan, los marcadores TODO en el archivo son las pistas que un humano usa para investigar.&lt;/p&gt;

&lt;h2&gt;
  
  
  La discusión pública: 692 puntos en HN
&lt;/h2&gt;

&lt;p&gt;El hilo en Hacker News ha sido el más activo de la semana en el espacio runtime/lenguaje. Las posiciones se distribuyen de forma reconocible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Defensores del experimento&lt;/strong&gt;. Validan la curiosidad técnica de comparar lenguajes lado a lado. Argumentan que usar LLMs para PoCs de traducción es legítimo si el código se descarta después. Notar que algunos modelos manejan mejor Rust que Zig en código generado, lo cual sesga el experimento a favor del port.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escépticos del AI-coding&lt;/strong&gt;. Preocupación por código sin comprensión humana profunda. Desconfianza en que un modelo genere Rust idiomático con borrow checker correcto a esta escala. Crítica a la falta de claridad sobre si esto es experimento real o cambio de dirección encubierto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observadores del ecosistema&lt;/strong&gt;. Apuntan que Rust tiene tiempos de compilación más lentos que Zig, lo cual es paradójico si la motivación inicial era acelerar la compilación. Otros notan que Rust no necesariamente tiene que arrastrar todo su ecosistema asíncrono pesado, y que evitando tokio/rayon —como hace la guía de Bun— se puede mantener un perfil de dependencias relativamente liviano.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sospecha post-adquisición&lt;/strong&gt;. Aparecen comentarios que conectan este experimento con la cobertura previa sobre la degradación de Claude Code y los miedos a la "enshittification" de Bun. Para esta fracción de la comunidad, ver código generado por agentes Anthropic dentro del runtime que esos mismos agentes consumen confirma una espiral preocupante de auto-referencia: la herramienta usa la herramienta para reescribir la herramienta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El comentario más votado en Lobsters, de un usuario llamado &lt;strong&gt;pyfisch&lt;/strong&gt;, documenta con citas explícitas el uso extensivo de agentes LLM en pull requests recientes del repositorio de Bun, incluso en la rama principal. La línea entre "experimento aislado" y "metodología principal de desarrollo" es tenue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conexión con la adquisición y el caso Claude Code
&lt;/h2&gt;

&lt;p&gt;Este movimiento técnico no se puede leer aislado del contexto corporativo. Anthropic compró Bun a finales de 2025. Cinco meses después, &lt;a href="https://elsolitario.org/2026/05/04/anthropic-bun-claude-code-runtime-2026/" rel="noopener noreferrer"&gt;Claude Code mostró señales de degradación&lt;/a&gt; que despertaron alarmas comunitarias. El experimento de port a Rust llega justo cuando esas alarmas todavía están vigentes, y la postura pública de Sumner —&lt;em&gt;"espero que el OSS vaya en la dirección opuesta: que no se permita contribución humana"&lt;/em&gt;, &lt;a href="https://www.theregister.com/2026/05/05/bun_rust_port/" rel="noopener noreferrer"&gt;según recogió The Register&lt;/a&gt;— pone gasolina al fuego.&lt;/p&gt;

&lt;p&gt;Para una parte de los usuarios productivos de Bun la pregunta práctica es simple: ¿qué hago con mis pipelines si el runtime que despliego cada noche está siendo reescrito por agentes con el sello de la empresa que también vende el agente que escribe el código? La respuesta razonable, mientras el experimento esté en fase A, es ninguna acción urgente. La rama &lt;code&gt;claude/phase-a-port&lt;/code&gt; no afecta la rama &lt;code&gt;main&lt;/code&gt;. Los releases públicos de Bun siguen saliendo del Zig original.&lt;/p&gt;

&lt;p&gt;Pero la pregunta que sí cambia con este anuncio es de otro orden: si el equipo decide promover el port a producción —lo cual depende fundamentalmente de los resultados de la fase B—, los usuarios estarán dependiendo de un runtime cuyo código fuente no fue escrito por humanos en su mayoría. Para escenarios de auditoría, compliance, certificaciones gubernamentales o seguridad sectorial, eso es una conversación nueva que pocas organizaciones tienen modelada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué viene después
&lt;/h2&gt;

&lt;p&gt;Tres escenarios concretos quedan abiertos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Escenario 1: El experimento se descarta&lt;/strong&gt;. Sumner termina la fase B parcialmente, descubre que el código resultante es lento o lleno de bugs sutiles, y archiva la rama. Bun sigue en Zig. Costo: tiempo gastado, no más. Probabilidad estimada por el propio Sumner: alta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escenario 2: Coexistencia de runtimes&lt;/strong&gt;. La fase B se completa lo suficiente como para producir un binario funcional pero con desempeño inferior. Bun mantiene la versión Zig como producción estable y la versión Rust como experimento. Esto fragmentaría la comunidad de mantenedores en dos bases de código.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escenario 3: Migración completa&lt;/strong&gt;. La fase B produce un runtime Rust con desempeño aceptable o superior, el equipo abandona la base Zig, y Bun pasa a ser oficialmente un proyecto Rust. Esto sería un terremoto para el ecosistema Zig (perdería su usuario más visible) y enviaría una señal fuerte sobre el lugar del AI-coding en el desarrollo serio de software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Los plazos típicos para experimentos de este tamaño en la práctica de Sumner sugieren resoluciones en orden de &lt;strong&gt;semanas, no meses&lt;/strong&gt;. La gente que sigue el repositorio de cerca podrá observar el avance directamente: la rama es pública, los commits son visibles, y el &lt;code&gt;PORTING.md&lt;/code&gt; se actualiza con cada cambio metodológico. El thread de Hacker News probablemente se reactivará cada vez que aparezca un commit relevante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo seguir el experimento desde el código
&lt;/h2&gt;

&lt;p&gt;Para desarrolladores que quieran seguirlo de cerca sin instalar nada, los puntos de observación son:&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="c"&gt;# Ver el árbol completo de la rama experimental&lt;/span&gt;
git clone &lt;span class="nt"&gt;--branch&lt;/span&gt; claude/phase-a-port https://github.com/oven-sh/bun.git bun-port
&lt;span class="nb"&gt;cd &lt;/span&gt;bun-port

&lt;span class="c"&gt;# Comparar la cantidad de archivos zig vs rust&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*.zig"&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*.rs"&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;

&lt;span class="c"&gt;# Buscar marcadores TODO específicos del port&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"TODO(port)"&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.rs"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"PERF(port)"&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.rs"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Ver el grado de confianza por archivo&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; &lt;span class="s2"&gt;"CONFIDENCE:"&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.rs"&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para quien tenga una instalación de Bun en producción, no hay acción técnica requerida hoy. Los releases de la rama &lt;code&gt;main&lt;/code&gt; se siguen produciendo desde Zig. Sin embargo, vale la pena empezar a documentar internamente la decisión: si alguna vez Bun pasa a producción Rust, querrás tener registrado el momento exacto, los flags de versión y el hash del commit del binario que estabas usando. La auditoría retrospectiva cuesta mucho más cuando se difiere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lección de fondo
&lt;/h2&gt;

&lt;p&gt;Este episodio es un caso de estudio temprano de una pregunta que va a definir buena parte de la próxima década del software: &lt;strong&gt;¿qué pasa cuando los agentes escriben código que va a producción a una escala que ningún equipo humano podría revisar línea por línea?&lt;/strong&gt; La respuesta optimista dice que las pruebas, el control de versiones y la presión competitiva del ecosistema mantendrán la calidad. La respuesta pesimista dice que el código generado por agentes va a tener categorías nuevas de bugs sutiles —patrones de error que humanos no producirían— y que el ecosistema todavía no tiene herramientas para detectarlos.&lt;/p&gt;

&lt;p&gt;Lo interesante de Bun es que la decisión se toma a la vista del público, en un repositorio open source, con un mantenedor que verbaliza explícitamente su postura. No es una empresa cerrada decidiendo internamente cómo escribe su backend; es un proyecto que millones de personas instalan, ejecutado por agentes que esos mismos millones consumen, en un lenguaje cuya gobernanza se opone a la práctica que el proyecto adopta. Las tensiones de la próxima década en el open source quedan condensadas en este experimento. Vale la pena seguirlo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bun.com/" rel="noopener noreferrer"&gt;Bun — sitio oficial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/oven-sh/bun" rel="noopener noreferrer"&gt;Bun — repositorio principal en GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/oven-sh/bun/blob/claude/phase-a-port/docs/PORTING.md" rel="noopener noreferrer"&gt;PORTING.md — guía oficial del port Zig → Rust (rama &lt;code&gt;claude/phase-a-port&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theregister.com/2026/05/05/bun_rust_port/" rel="noopener noreferrer"&gt;The Register — Bun posts Rust porting guide, says rewrite is still half-baked&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://news.ycombinator.com/item?id=48016880" rel="noopener noreferrer"&gt;Hacker News — Bun is being ported from Zig to Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lobste.rs/s/otxkjw/bun_js_runtime_is_being_vibe_ported_from" rel="noopener noreferrer"&gt;Lobsters — Bun (the js runtime) is being vibe-ported from zig to rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kristoff.it/blog/contributor-poker-and-ai/" rel="noopener noreferrer"&gt;kristoff.it — Contributor poker and AI (Loris Cro, abril 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Bun_%28software%29" rel="noopener noreferrer"&gt;Wikipedia — Bun (software)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Zig_%28programming_language%29" rel="noopener noreferrer"&gt;Wikipedia — Zig (programming language)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Rust_%28programming_language%29" rel="noopener noreferrer"&gt;Wikipedia — Rust (programming language)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;elsolitario.org — &lt;em&gt;Anthropic y Bun: ¿el runtime seguirá el camino de Claude Code?&lt;/em&gt; (4 mayo 2026): &lt;a href="https://elsolitario.org/2026/05/04/anthropic-bun-claude-code-runtime-2026/" rel="noopener noreferrer"&gt;https://elsolitario.org/2026/05/04/anthropic-bun-claude-code-runtime-2026/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
