Vitest 5.0.0-rc.2: vuelve el límite global de concurrencia y el browser mode deja de colgarse
Segunda RC, casi toda de fixes — que es exactamente lo que querés ver antes de una major. Se revive el límite global de concurrencia para el ciclo de vida de los tests, el runner se apropia del rerun post-restart manteniendo process.exit deshabilitado en los workers, y se preserva el root correcto al resolver la config. En browser mode hay tres arreglos que importan si tenés CI flaky: falla en vez de colgarse cuando el browser deja de responder, salida elegante si el browser se desconecta durante una cancelación, y GC de Playwright/Chromium cuando queda poco disco. Suma también un título custom para el summary de GitHub Actions.
Biome 2.5.9: el parser CSS se recupera de declaraciones rotas
Patch chico pero de calidad de vida. El parser CSS ahora se recupera en los límites de declaración tras una declaración inválida, así que las declaraciones válidas que vienen después sí se parsean — antes una línea rota te tiraba el resto del bloque. Llega también la regla nursery useNamedLayer, que prohíbe las cascade layers anónimas (@layer { ... } sin nombre), el formatter de HTML preserva las líneas en blanco significativas, y biome rage reporta más variables de entorno (BIOME_BINARY, BIOME_LOG_FILE, RUST_BACKTRACE).
Effect 4.0.0-rc.110: la cadencia de la major sigue firme
Otra RC del ecosistema Effect, publicada junto a @effect/vitest y los drivers SQL. Si estás evaluando Effect 4 para backend TypeScript, el número de RC te cuenta la historia: 110 candidates y sigue. Ideal para prototipar y aprender la API, arriesgado para comprometer un servicio en producción antes del estable.
DynamoDB suma vector search nativo: se acabó el side-car de base vectorial
AWS suma un tipo de índice nuevo sobre embeddings guardados en atributos de la tabla, con una API SearchVectors para queries de vecinos más cercanos aproximados. Soporta hasta 4.096 dimensiones, distancias euclidiana, coseno y dot product, filtrado inline, y escala horizontalmente sin límite de storage. Está disponible en todas las regiones donde ya corre DynamoDB, con table classes Standard y Standard-IA. Ojo con el billing: son tres dimensiones de cobro adicionales — data escrita al índice, data procesada en las búsquedas y data almacenada, todas medidas por byte y facturadas por gigabyte. Para memoria de agentes, RAG o recomendaciones, esto elimina un componente entero de la arquitectura: la base vectorial separada que había que sincronizar. Y sincronizar dos stores es donde nacen la mitad de los bugs de consistencia.
Cloudflare convierte los pipelines de CI en workflows de TypeScript
El paquete @cloudflare/ci (Apache 2.0, sobre el runtime de Workers) deja definir pipelines en TypeScript en lugar de YAML. Cada etapa mapea a un step de Workflow, o sea ejecución con checkpoint: un step que falla reintenta con el estado preservado. Los steps corren concurrentes salvo que declares dependencias — lint, test, typecheck y build se envuelven en Promise.all() antes del deploy. El caching de dependencias usa snapshots del filesystem de Sandbox guardados en R2, y un campo events nuevo en la config de Wrangler dispara Workflows directo desde eventos de version control. Dos advertencias antes de que te entusiasmes: los comandos tienen que ser idempotentes porque los steps son reintentables, y el SDK no redacta secretos de los logs de salida. La integración inicial lee repos desde Cloudflare Artifacts, todavía en private beta.
Grafana lleva gcx y su MCP server a GA: los agentes ahora leen telemetría real
Dos herramientas en GA: gcx, una CLI flexible para armar workflows propios contra Grafana Cloud o self-hosted, y el Grafana MCP Server, más opinado y disponible self-hosted o con endpoint hosteado. Ambos permiten consultar métricas, logs, traces, SLOs y resultados de Synthetic Monitoring. El problema que atacan es el que más duele con código generado por agentes: la brecha de verificación. La pregunta deja de ser si el agente entendió el ticket y pasa a ser si el sistema corriendo se comporta como esperabas. Incluyen creación de dashboards, generación de scripts k6 de load testing a partir de telemetría de producción, iteración local vía OpenTelemetry Collector y enriquecimiento de PRs con dashboards en vivo. Ahora bien, no te confundas: que el agente pueda leer tus métricas no reemplaza entender qué medís.
AWS abre Dogwood: políticas de autorización que sí miran el pasado
Pieza de diseño interesante para cualquiera que modele autorización, con o sin agentes. Cedar evalúa cada request aislado: le das el mismo request dos veces y devuelve lo mismo, sin importar qué pasó antes. Dogwood (Apache 2.0) agrega una cláusula when temporal con cuatro operadores — formerly (ventanas de tiempo), count_within (límites de frecuencia), count_distinct_within (valores únicos) y sum_within (totales agregados) — implementados como macros sobre lógica temporal de primer orden métrica, no como primitivas del lenguaje. Con eso podés expresar reglas que antes vivían enterradas en código de aplicación: exigir aprobación antes de una acción, mantener totales corrientes, o prohibir contacto con terceros después de haber tocado datos confidenciales. El precio es alto y está bien declarado: la evaluación temporal necesita tracking de eventos con estado y sacrifica el razonamiento automatizado de Cedar — las políticas con condiciones temporales ya no se pueden analizar formalmente. Además el intérprete de referencia es para explorar y testear, no para autorizar en producción. Las políticas Cedar existentes siguen siendo compatibles.
Grab bajó el trabajo mecánico de analytics del 44% al 30%, y el contexto fue el trabajo pesado
Los titulares se quedan con el número — trabajo analítico rutinario del 44% en febrero al 30% en junio — pero lo que hay que mirar es la infraestructura que lo hizo posible: más de 5.000 tablas y métricas certificadas, 4.000 documentos de contexto y 2.000 golden records a través de su sistema ContextIQ. Los agentes no arreglaron un data warehouse desordenado; el data warehouse ordenado fue el requisito. Grab usa un modelo de cinco niveles de autonomía: en el nivel 3 los agentes descubren data y redactan análisis mientras los humanos formulan la pregunta y revisan el resultado. Su sistema Spartan enruta requests a workflows especializados con más de 50 skills y 120 frameworks de análisis. Los números de self-service de marzo a mayo: métricas del 53% al 67%, data pulls del 63% al 90%, requests de SQL del 50% al 81%. Definición de métricas, interpretación causal y decisión final siguen siendo humanas — y ahí está la lección: la parte que no se automatiza es justo la que exige entender el dominio.
deepmerge-ts: un objeto recursivo tumba el proceso, CVSS 8.2
Severidad alta, CVSS 8.2, y un caso de manual de CWE-674 (recursión no controlada). El merge de records está implementado recursivamente sin detección de ciclos: si dos objetos se referencian a sí mismos por el mismo path de propiedades, la recursión no termina y te comés un RangeError: Maximum call stack size exceeded. Afecta a deepmerge(), deepmergeCustom(), deepmergeInto() y deepmergeIntoCustom() — o sea, toda la API pública. Versiones anteriores a 8.0.0; el fix está en 8.0.0. En Node, un atacante que controle el objeto de entrada logra crashes sincrónicos repetidos y reinicios de worker en loop. Si mergeás config o payloads que vienen de afuera, este es tu recordatorio de que parsear no es validar.
Tendencias Destacadas
Segunda semana sin runtimes: Node.js, Deno, Bun y TypeScript no publicaron nada entre el 11 y el 18 de agosto. Lo último sigue siendo Node 26.7.0 del 5 de agosto y Deno 2.9.5 del 6. Bun no saca release desde el 13 de mayo. Por eso hoy tampoco hay sección de runtimes — no inventamos noticias.
Las dos fallas más graves de la semana no son overflows exóticos: son parsing. El NUL byte embebido en un Common Name de certificado TLS que Redis truncaba, y el Error.cause que vm2 no sanitiza. Ambas convierten un mecanismo de defensa en el vector de ataque. Cuando escribas un parser en un borde de confianza, asumí que la entrada fue diseñada para romperlo.
better-auth y Prisma rompen la misma semana, y ambos avisan lo mismo: la migración generada no alcanza. Prisma exige re-emitir el contract y renombrar la config; better-auth pide un backfill manual de identidad porque el schema no puede asignar issuers confiables ni resolver colisiones existentes. Cuando el mantenedor te dice que la herramienta no automatiza el paso, no lo automatices vos a las apuradas.
Tres piezas de esta semana empujan la misma idea desde ángulos distintos: la autorización, el CI y la observabilidad se están volviendo código TypeScript o política declarativa con estado. Dogwood mete historial temporal en Cedar, Cloudflare cambia YAML por Workflows con checkpoint, y Grafana expone telemetría en vivo a los agentes. El patrón común es que las decisiones dejan de vivir en configuración opaca y pasan a ser código que se testea.
Vitest 5.0.0-rc.2: the global concurrency limit returns and browser mode stops hanging
Second RC, almost entirely fixes — exactly what you want before a major. The global concurrency limit for the test lifecycle is revived, the runner owns the post-restart rerun while keeping process.exit disabled in workers, and the correct root is preserved during config resolution. Browser mode gets three fixes that matter if your CI is flaky: it fails instead of hanging when the browser stops responding, exits gracefully when the browser disconnects mid-cancellation, and triggers Playwright/Chromium GC on low disk availability. A custom GitHub Actions summary title also lands.
Biome 2.5.9: the CSS parser recovers from broken declarations
Small but welcome quality-of-life patch. The CSS parser now recovers at declaration boundaries after a bogus declaration, so valid declarations that follow are parsed — previously one broken line took the rest of the block with it. Also landing: the nursery rule useNamedLayer, which disallows anonymous cascade layers (@layer { ... } with no name), the HTML formatter preserving meaningful blank lines, and biome rage reporting more environment variables (BIOME_BINARY, BIOME_LOG_FILE, RUST_BACKTRACE).
Effect 4.0.0-rc.110: the major's cadence holds steady
Another RC across the Effect ecosystem, published alongside @effect/vitest and the SQL drivers. If you are evaluating Effect 4 for backend TypeScript, the RC number tells the story: 110 candidates and counting. Great for prototyping and learning the API, risky for committing a production service before the stable release.
DynamoDB adds native vector search: no more vector-database side-car
AWS adds a new index type over embeddings stored in table attributes, with a SearchVectors API for approximate nearest-neighbor queries. It supports up to 4,096 dimensions, Euclidean, cosine and dot-product distances, inline filtering, and scales horizontally with no storage limit. Available in every region where DynamoDB already runs, on Standard and Standard-IA table classes. Watch the billing: there are three extra charge dimensions — data written to the index, data processed during searches, and stored data, all metered per byte and billed per gigabyte. For agentic memory, RAG or recommendation engines, this removes an entire architectural component: the separate vector database you had to keep in sync. And keeping two stores in sync is where half your consistency bugs are born.
Cloudflare turns CI pipelines into TypeScript workflows
The @cloudflare/ci package (Apache 2.0, on the Workers runtime) lets you define pipelines in TypeScript instead of YAML. Each stage maps to a Workflow step, which means checkpointed execution: a failed step retries with state preserved. Steps run concurrently unless you declare dependencies — lint, test, typecheck and build get wrapped in Promise.all() before deploy. Dependency caching uses Sandbox filesystem snapshots stored in R2 buckets, and a new events field in Wrangler configuration triggers Workflows straight from version-control events. Two warnings before you get excited: commands must be idempotent because Workflow steps are retryable, and the SDK does not redact secrets from output logs. The initial integration reads repositories from Cloudflare Artifacts, still in private beta.
Grafana takes gcx and its MCP server to GA: agents can now read real telemetry
Two tools reach GA: gcx, a flexible CLI for building your own workflows against Grafana Cloud or self-hosted instances, and the Grafana MCP Server, more opinionated and available self-hosted or through a hosted endpoint. Both let agents query metrics, logs, traces, SLOs and Synthetic Monitoring results. The problem they attack is the sharpest one with agent-generated code: the verification gap. The question stops being whether the agent understood the ticket and becomes whether the running system behaves as expected. Features include dashboard creation, k6 load-test script generation from production telemetry, local iteration via the OpenTelemetry Collector, and pull requests enriched with live dashboards. One caveat: an agent being able to read your metrics does not replace understanding what you measure.
AWS open-sources Dogwood: authorization policies that actually look at the past
An interesting design piece for anyone modeling authorization, agents or not. Cedar evaluates each request in isolation: feed it the same request twice and you get the same answer, regardless of what happened before. Dogwood (Apache 2.0) adds a when temporal clause with four operators — formerly (time-window checks), count_within (frequency limits), count_distinct_within (unique value counts) and sum_within (aggregate totals) — implemented as macros over Metric First-Order Temporal Logic rather than language primitives. That lets you express rules that used to live buried in application code: require approval before an action, maintain running totals, or forbid contact with external parties after handling confidential data. The price is steep and clearly stated: temporal evaluation requires stateful event tracking and sacrifices Cedar's automated reasoning — policies using temporal conditions can no longer be formally analyzed. The reference interpreter is also for exploring and testing, not for running authorization in production. Existing Cedar policies remain fully compatible.
Grab cut mechanical analytics work from 44% to 30%, and the context was the heavy lifting
The headline keeps the number — routine analytical work down from 44% in February to 30% in June — but what deserves your attention is the infrastructure that made it possible: more than 5,000 certified tables and metrics, 4,000 context documents and 2,000 golden records through their ContextIQ system. The agents did not fix a messy data warehouse; the tidy data warehouse was the prerequisite. Grab uses a five-level autonomy model: at level 3, agents discover data and draft analyses while humans frame the question and review the result. Their Spartan system routes requests to specialized workflows across more than 50 skills and 120 analysis frameworks. Self-service numbers from March to May: metric requests 53% to 67%, data pulls 63% to 90%, SQL requests 50% to 81%. Metric definitions, causal interpretation and final decisions stay human — and there is the lesson: the part that does not get automated is exactly the part that requires understanding the domain.
deepmerge-ts: a recursive object takes down the process, CVSS 8.2
High severity, CVSS 8.2, and a textbook case of CWE-674 (uncontrolled recursion). Record merging is implemented recursively with no cycle detection: if two objects reference themselves through identical property paths, the recursion never terminates and you get a RangeError: Maximum call stack size exceeded. It affects deepmerge(), deepmergeCustom(), deepmergeInto() and deepmergeIntoCustom() — the whole public API. Versions before 8.0.0; fixed in 8.0.0. Under Node, an attacker controlling the input object gets repeated synchronous crashes and looping worker restarts. If you merge config or payloads that come from outside, this is your reminder that parsing is not validating.
Notable Trends
Second week without runtimes: Node.js, Deno, Bun and TypeScript shipped nothing between August 11 and 18. The most recent are still Node 26.7.0 on August 5 and Deno 2.9.5 on the 6th. Bun has not shipped since May 13. That is why there is no runtimes section today either — we do not invent news.
The two worst flaws of the week are not exotic overflows — they are parsing. The embedded NUL byte in a TLS certificate Common Name that Redis truncated, and the Error.cause that vm2 fails to sanitize. Both turn a defense mechanism into the attack vector. When you write a parser at a trust boundary, assume the input was designed to break it.
better-auth and Prisma break in the same week, and both raise the same flag: the generated migration is not enough. Prisma requires re-emitting the contract and renaming the config; better-auth requires a manual identity backfill because the schema cannot assign trusted issuers or resolve existing collisions. When the maintainer tells you the tool does not automate a step, do not rush to automate it yourself.
Three pieces this week push the same idea from different angles: authorization, CI and observability are becoming TypeScript code or stateful declarative policy. Dogwood puts temporal history into Cedar, Cloudflare swaps YAML for checkpointed Workflows, and Grafana exposes live telemetry to agents. The common pattern is that decisions stop living in opaque configuration and become code you can test.
Vitest 5.0.0-rc.2 : la limite globale de concurrence revient et le browser mode ne se fige plus
Deuxième RC, presque uniquement des correctifs — exactement ce qu'on veut avant une major. La limite globale de concurrence du cycle de vie des tests est rétablie, le runner reprend la main sur le rerun après redémarrage en gardant process.exit désactivé dans les workers, et le root correct est préservé lors de la résolution de config. Le browser mode reçoit trois correctifs utiles si votre CI est flaky : il échoue au lieu de se figer quand le navigateur ne répond plus, sort proprement en cas de déconnexion pendant une annulation, et déclenche le GC Playwright/Chromium quand l'espace disque manque.
Biome 2.5.9 : le parser CSS récupère après des déclarations invalides
Petit patch de confort. Le parser CSS récupère désormais aux limites de déclaration après une déclaration invalide, si bien que les déclarations valides suivantes sont analysées — auparavant une ligne cassée emportait le reste du bloc. Arrivent aussi la règle nursery useNamedLayer, qui interdit les cascade layers anonymes, la préservation des lignes vides significatives par le formatter HTML, et plus de variables d'environnement rapportées par biome rage.
Effect 4.0.0-rc.110 : la cadence de la major se maintient
Une nouvelle RC de l'écosystème Effect, publiée avec @effect/vitest et les drivers SQL. Si vous évaluez Effect 4 pour du backend TypeScript, le numéro de RC raconte l'histoire : 110 candidates et ça continue. Parfait pour prototyper et apprendre l'API, risqué pour engager un service en production avant la stable.
DynamoDB ajoute la vector search native : fini le side-car de base vectorielle
AWS ajoute un nouveau type d'index sur les embeddings stockés dans les attributs de table, avec une API SearchVectors pour les requêtes de plus proches voisins approximatifs. Jusqu'à 4 096 dimensions, distances euclidienne, cosinus et produit scalaire, filtrage inline, et scaling horizontal sans limite de stockage. Disponible dans toutes les régions DynamoDB, sur les table classes Standard et Standard-IA. Attention à la facturation : trois dimensions de coût supplémentaires — données écrites dans l'index, données traitées pendant les recherches et données stockées, mesurées par octet et facturées par gigaoctet. Pour la mémoire d'agents, le RAG ou les moteurs de recommandation, cela supprime un composant entier de l'architecture.
Cloudflare transforme les pipelines CI en workflows TypeScript
Le paquet @cloudflare/ci (Apache 2.0, sur le runtime Workers) permet de définir des pipelines en TypeScript plutôt qu'en YAML. Chaque étape correspond à un step de Workflow, donc une exécution avec checkpoint : un step échoué retente avec l'état préservé. Les steps s'exécutent en parallèle sauf dépendances déclarées via Promise.all(). Le cache de dépendances utilise des snapshots du filesystem Sandbox stockés dans R2, et un nouveau champ events dans la config Wrangler déclenche les Workflows depuis les événements de version control. Deux avertissements : les commandes doivent être idempotentes car les steps sont retentables, et le SDK ne masque pas les secrets dans les logs.
Grafana passe gcx et son serveur MCP en GA : les agents lisent la télémétrie réelle
Deux outils en GA : gcx, une CLI flexible pour construire ses propres workflows contre Grafana Cloud ou une instance self-hosted, et le Grafana MCP Server, plus opinionné, disponible self-hosted ou via un endpoint hébergé. Les deux permettent d'interroger métriques, logs, traces, SLO et résultats de Synthetic Monitoring. Le problème visé est le plus douloureux avec du code généré par agent : l'écart de vérification. La question n'est plus de savoir si l'agent a compris le ticket, mais si le système en fonctionnement se comporte comme prévu. Au menu : création de dashboards, génération de scripts k6 depuis la télémétrie de production, itération locale via l'OpenTelemetry Collector et enrichissement des PR avec des dashboards en direct.
AWS ouvre Dogwood : des politiques d'autorisation qui regardent le passé
Une pièce de conception intéressante pour quiconque modélise l'autorisation, avec ou sans agents. Cedar évalue chaque requête isolément : la même requête deux fois donne la même réponse, quel que soit le passé. Dogwood (Apache 2.0) ajoute une clause when temporal avec quatre opérateurs — formerly, count_within, count_distinct_within et sum_within — implémentés comme des macros sur la logique temporelle du premier ordre métrique plutôt que comme des primitives du langage. On peut ainsi exprimer des règles jusque-là enfouies dans le code applicatif. Le prix est élevé et clairement annoncé : l'évaluation temporelle exige un suivi d'événements avec état et sacrifie le raisonnement automatisé de Cedar. L'interpréteur de référence sert à explorer et tester, pas à autoriser en production.
Grab a réduit le travail analytique mécanique de 44% à 30%, le contexte étant le vrai chantier
Le titre retient le chiffre — travail analytique routinier passé de 44% en février à 30% en juin — mais ce qui compte est l'infrastructure qui l'a rendu possible : plus de 5 000 tables et métriques certifiées, 4 000 documents de contexte et 2 000 golden records via leur système ContextIQ. Les agents n'ont pas réparé un data warehouse en désordre ; le data warehouse ordonné était le prérequis. Grab utilise un modèle d'autonomie à cinq niveaux : au niveau 3, les agents découvrent les données et rédigent des analyses pendant que les humains formulent la question et vérifient le résultat. Définitions de métriques, interprétation causale et décision finale restent humaines.
deepmerge-ts : un objet récursif fait tomber le processus, CVSS 8.2
Sévérité haute, CVSS 8.2, cas d'école de CWE-674 (récursion non contrôlée). Le merge de records est implémenté récursivement sans détection de cycles : si deux objets se référencent eux-mêmes par le même chemin de propriétés, la récursion ne se termine jamais et provoque un RangeError: Maximum call stack size exceeded. Toute l'API publique est touchée — deepmerge(), deepmergeCustom(), deepmergeInto() et deepmergeIntoCustom(). Versions antérieures à 8.0.0 ; corrigé en 8.0.0. Sous Node, un attaquant contrôlant l'objet d'entrée obtient des crashes synchrones répétés et des redémarrages de worker en boucle.
Tendances Notables
Deuxième semaine sans runtimes : Node.js, Deno, Bun et TypeScript n'ont rien publié entre le 11 et le 18 août. Les plus récents restent Node 26.7.0 du 5 août et Deno 2.9.5 du 6. Bun n'a rien sorti depuis le 13 mai. D'où l'absence, encore, de section runtimes.
Les deux failles les plus graves de la semaine ne sont pas des overflows exotiques : c'est du parsing. Le NUL byte embarqué dans un Common Name de certificat TLS que Redis tronquait, et le Error.cause que vm2 ne sanitise pas. Les deux transforment un mécanisme de défense en vecteur d'attaque. Quand vous écrivez un parser sur une frontière de confiance, supposez que l'entrée a été conçue pour le casser.
better-auth et Prisma cassent la même semaine, et les deux disent la même chose : la migration générée ne suffit pas. Prisma exige de ré-émettre le contract et de renommer la config ; better-auth demande un backfill d'identité manuel car le schéma ne peut ni assigner les issuers de confiance ni résoudre les collisions existantes. Quand le mainteneur dit que l'outil n'automatise pas une étape, ne l'automatisez pas à la hâte.
Trois sujets de la semaine poussent la même idée sous des angles différents : l'autorisation, la CI et l'observabilité deviennent du code TypeScript ou de la politique déclarative avec état. Dogwood intègre l'historique temporel dans Cedar, Cloudflare remplace le YAML par des Workflows avec checkpoint, et Grafana expose la télémétrie en direct aux agents. Le point commun : les décisions quittent la configuration opaque pour devenir du code testable.