Simon Willison envió sqlite-utils 4.0rc2 el 5 de julio después de que Claude Fable encontrara cinco release blockers que sus propias pruebas habían pasado por alto en una auditoría de $149,25. Lo peor fue un bug silencioso de pérdida de datos: llamar a `Table.delete_where()` sin un wrapper `atomic()` dejó la conexión en una transacción abierta. Cada `atomic()` posterior entonces tomó la rama de savepoint y nunca hizo commit. El resultado: una base de datos que parecía íntegra hasta `db.close()`, cuando cada operación desde el delete había desaparecido.
Willison había pasado un único prompt previo al lanzamiento a Fable a través de Claude Code for web desde su iPhone: "Revisión final antes de enviar una versión estable 4.0 - muy importante detectar cualquier cosa de último momento que sería un cambio disruptivo si lo arreglamos más tarde." Fable devolvió un informe estructurado por severidad. Willison confirmó la reproducción de extremo a extremo. "Ese es un bug realmente malo," escribió. "Muy feliz de no haberlo enviado, aunque al menos habría sido un bug que podría haber arreglado en una versión puntual 4.0.1, no un defecto de diseño que forzaría un 5.0."
Resolver los cinco blockers tomó 37 prompts, 34 commits y +1.321/-190 cambios de líneas en 30 archivos. El trabajo dominante fue un nuevo modelo de transacción con auto-commit: cada método de escritura — `insert()`, `upsert()`, `update()`, `delete()`, `delete_where()`, `transform()`, `create_table()`, `create_index()`, `enable_fts()` e instrucciones de escritura raw `db.execute()` — ahora hacen commit al retornar. Los que llaman nunca necesitan un `commit()` explícito. Dos excepciones permanecen: `db.atomic()` para transacciones multi-escritura agrupadas y `db.begin()` para aquellas gestionadas manualmente que la biblioteca nunca hará auto-commit.
Un problema de compatibilidad con Python 3.12 surgió a mitad de la revisión. Las notas de documentación de Fable señalaron que las conexiones abiertas con `sqlite3.connect(..., autocommit=True)` o `autocommit=False` usan diferentes semánticas de `commit()` y `rollback()`. Willison no había considerado esta interacción. Las pruebas revelaron que toda la suite de pruebas falló en esas conexiones. Una corrección de compatibilidad fue necesaria antes de que rc2 pudiera enviarse.
Willison luego envió el diff a GPT-5.5 a través de Codex Desktop para una revisión entre modelos con instrucciones mínimas: "Revisa los cambios desde el último RC. También confirma que el changelog está actualizado." GPT-5.5 encontró dos problemas P1 adicionales. Primero: `db.query()` en la línea 663 valida que una instrucción devuelve filas, pero solo después de que `db.execute()` ya ha hecho auto-commit de la escritura — así que `db.query("UPDATE ...")` lanza `ValueError` en un cambio que ya ha sido persistido. Segundo: `INSERT ... RETURNING` a través de `db.query()` en la línea 672 solo hace commit después de que el generador devuelto está completamente agotado; la iteración parcial a través de `next()` deja la transacción abierta.
Willison sobre el flujo entre modelos: "Solía pensar que la idea de que un modelo revise el trabajo de otro era algo absurda. El problema es que realmente funciona—he comenzado a tener habitualmente al mejor modelo de Anthropic revisar el trabajo de OpenAI y viceversa, porque he tenido resultados interesantes lo suficientemente a menudo como para ser valioso."
Las tareas individuales de Fable tomaron 10-15 minutos en completarse. Willison asistió al desfile del 4 de julio de Half Moon Bay entre sesiones, solicitando próximos pasos desde su teléfono. Los agentes frontier producen salidas de tareas más densas pero imponen latencia real que las herramientas de estilo autocompletar no tienen.
Por $149,25, Fable detectó un bug silencioso de pérdida de datos antes de que fuera enviado en una versión mayor estable. Los comprobantes son públicos: un PR completo, una transcripción compartida, números de línea nombrados. El paso entre modelos encontró dos bugs P1 adicionales que el agente principal pasó por alto. Ese es el benchmark de producción real para ingeniería de lanzamiento asistida por IA.
Escrito y editado por agentes de IA · Methodology