Sobre el proyecto

ChaosSQL es una herramienta de prueba orientada a defectos de concurrencia en bases de datos. Según su README, realiza pruebas deterministas de concurrencia e invariantes para PostgreSQL, MySQL y SQLite, y tiene como objetivo sacar a la luz la corrupción silenciosa de datos, el write skew y las actualizaciones perdidas en CI/CD antes de que lleguen a producción. Cómo funciona El proyecto programa transacciones de trabajadores concurrentes contra un esquema y un conjunto de datos semilla, verifica invariantes definidos por el usuario después de la ejecución y, cuando aparece una violación, produce una reproducción mínima. Reporta una semilla determinista y un archivo de prueba de reproducción en Go sintetizado (repro_test.go) que puede agregarse a una suite de pruebas. El README indica que los resultados incluyen la clasificación de anomalías, como la actualización perdida (P4) y el write skew (A5B). Interfaces CLI: el binario independiente se instala con go install github.com/bregaldahq/chaossql/cmd/chaossql y no tiene dependencias de CGO. Los subcomandos documentados incluyen run, demo, ui, diff, mutate, swarm y proxy. Demos: diez escenarios empaquetados cubren actualizaciones perdidas bancarias, sobreventa de inventario, write skew hospitalario, read skew, dirty write, flujo de información circular, dirty read, anti-dependencia, ciclos de deadlock y deadlocks de cascada de claves foráneas. UI: un visualizador de trazas local con una línea de tiempo de carriles de trabajadores, un grafo de dependencias Adya interactivo, una comparación entre la traza completa y una reproducción mínima reducida, y un inspector de sentencias que muestra SQL, parámetros y latencias. SDKs: un paquete de Go (pkg/chaostest) se integra con go test; un paquete de Python instalado desde pip funciona con pytest y unittest y ofrece un fixture de pytest; un paquete de TypeScript (at-chaossql-test en npm) se dirige a Vitest, Jest y el ejecutor de pruebas de Node.js. Informes: exportación SARIF 2.1.0 para GitHub Code Scanning, con reglas mapeadas a CWE-362. CI: una GitHub Action (bregaldahq/chaossql, referenciada como v1.5.0 en el README) puede bloquear pull requests ante fallos de invariantes, publicar comentarios en el PR y publicar un resumen del paso que contiene la traza de ejecución mínima. Características de multi-motor y mutación mutate genera variantes de un escenario perturbando los retrasos, inyectando savepoints anidados, barajando pasos de transacción causalmente válidos e invirtiendo el orden de adquisición de bloqueos; expone flags de variantes, directorio de salida, semilla y JSON. swarm ejecuta suites de escenarios a través de varios controladores (sqlite, mock, postgres, mysql) con concurrencia acotada, resúmenes opcionales en Markdown y salida JSON. Los DSN de los controladores se resuelven a partir de las variables de entorno POSTGRES_DSN y MYSQL_DSN. Se describe un arnés de estrés de WebAssembly y Web Worker sin interfaz a través de un objetivo de make, con metas declaradas sobre memoria lineal acotada y diseño de grafo no bloqueante durante ejecuciones de estrés prolongadas. Proxy de Capa 7 chaossql proxy se sitúa entre una aplicación y una base de datos, hablando el protocolo de cable de PostgreSQL 3.0 o MySQL, e inyecta micro-jitter y barreras de pre-commit mientras construye un grafo de serialización de dependencias shadow en vivo que clasifica anomalías en tiempo real. Puede exportar SARIF y servir una UI web con telemetría JSON en un puerto configurable. El README indica que el código de la aplicación no necesita ser modificado para usarlo. Detalles del proyecto Escrito en Go (1.22 o posterior según las insignias), con licencia MIT, un portal de documentación, un playground de WebAssembly basado en navegador y un directorio de ejemplos referenciado en todos los comandos. El README también menciona un servicio en la nube alojado con seguimiento de línea base y comentarios en pull requests como acceso anticipado, además de auditorías de concurrencia comerciales ofrecidas por el proveedor; estos son servicios del proveedor y no componentes del repositorio abierto.