El personaje de algodón sonriente del logotipo original de Cotton, sin fondo ni letras
Volver a la sala

Cotton

Translation workflow

Convertir traducciones generadas en resultados revisables.

Un flujo de trabajo de traducción para diálogos de videojuegos.

2026.05.06 — 2026.05.26

Proyecto laboral · procesamiento de traducciones, juicio y ruta de revisión

  • Aplicación webImplementado · desarrollo

Una condición de carrera hallada en revisión y trabajos estancados devueltos según su causa

Un caso cuya política y cuyos commits nombran a Claude para la implementación y a Codex para la revisión, y otro que hizo diagnosticables los trabajos estancados.

Leyenda completa

Cómo leer · una misma gramática para cada caso

  • Las columnas indican quién actuó; de arriba abajo, el tiempo
  • Continua: un traspaso registrado o un paso siguiente
  • ↩ lapislázuli grueso: un hallazgo que devolvió el trabajo
  • Discontinua: no es una ejecución registrada (una regla escrita, un consejo sin autoridad, una frontera sin verificar)
  • Rectángulo: una acción
  • Redondeado: un estado observado o un hallazgo
  • Esquina doblada: un artefacto o una evidencia
  • Columna rayada: partes del producto en desarrollo (no los agentes usados para construirlo)

Caso 1 / 2 · Un cambio que se detiene al agotarse la cuota se corrigió en el mismo PR, incluida la condición de carrera hallada en revisión

May 19, 2026

Un cambio que se detiene al agotarse la cuota se corrigió en el mismo PR, incluida la condición de carrera hallada en revisión

  1. PersonaPersona

    AcciónDetener el gasto al agotarse la cuota · sin fallback automático

    • traspasoRestricción de implementación→ Implementar checkpoint · detención · reanudación manual (Claude)
  2. Agente de programaciónClaude

    AcciónImplementar checkpoint · detención · reanudación manual

    • traspasoRevisión en el mismo PR→ Hallazgo: condición de carrera · transiciones de estado duplicadas (Codex)
  3. Revisión · verificaciónCodex

    Observación · hallazgoHallazgo: condición de carrera · transiciones de estado duplicadas

  4. ArtefactosMismo PR

    ArtefactoEn el mismo PR: bloqueo de fila · clave de puntuación única · transición atómica

    • traspaso→ Fixture local · registros de la comprobación de integración con la BD (Mismo PR)
  5. ArtefactosMismo PR

    ArtefactoFixture local · registros de la comprobación de integración con la BD

    • no es una ejecución registradaAlcance comprobado→ No se recopilaron nuevos resultados de CI ni de despliegue en producción (Mismo PR)
  6. ArtefactosMismo PR

    Regla · sin verificarNo se recopilaron nuevos resultados de CI ni de despliegue en producción

Contexto
La condición que fijó una persona era detener el gasto al agotarse la cuota, sin fallback automático. Claude implementó checkpoint, detención y reanudación manual, y una revisión de Codex ejecutada mediante el MCP del proyecto encontró una condición de carrera y duplicación en las transiciones de estado.
Resultado
Las transiciones de entrada y de reanudación se ejecutan dentro de un bloqueo, las puntuaciones del juez llevan una clave única contra duplicados, y se fijó la frontera de la transacción. Esto no significa que se hayan eliminado todas las condiciones de carrera.
Límite
El commit indica 140 comprobaciones y el CHANGELOG de integración posterior indica 160, así que no se suman en un único número de ejecuciones. Según la política, la revisión de Codex es un paso local opcional, así que esto no significa que todos los PR anteriores pasaran por ella.
Fuentes y límites restantes
  • La política registra el orden: Claude implementa, Codex revisa localmente mediante el MCP del proyecto, la revisión se adjunta al PR, y los desacuerdos se investigan junto con el agente de revisión de Claude. La revisión automática de Codex en la CI se había aplazado.
  • Las comprobaciones de desarrollo usan fixtures y mocks, y las llamadas reales al modelo necesitan su propio alcance. Los hallazgos de la revisión se incorporan al mismo PR, que se integra con squash merge de feature → main.

May 26, 2026

Los trabajos estancados se hicieron diagnosticables y se devolvieron según su causa

  1. En desarrolloWorker de traducción · cola

    Observación · hallazgoTrabajos que quedan en borrador · intentos agotados

    • traspasoValores observados→ Cotejar failedReason · códigos de salida · estado de borrador (Desarrollador)
  2. PersonaDesarrollador

    AcciónCotejar failedReason · códigos de salida · estado de borrador

    • traspaso→ Causa: el NODE_OPTIONS heredado entra en conflicto en los subprocesos (Desarrollador)
  3. PersonaDesarrollador

    Observación · hallazgoCausa: el NODE_OPTIONS heredado entra en conflicto en los subprocesos

  4. Sesión de trabajoCambios de código

    AcciónQuitar NODE_OPTIONS · tope de concurrencia por proceso

    • traspaso→ Estado de la cola: waiting · active · failed · stale (Cambios de código)
  5. Sesión de trabajoCambios de código

    AcciónEstado de la cola: waiting · active · failed · stale

    • traspaso→ Barrido de inactivos: ausente de la cola frente a intentos agotados, según exista o no un resultado (Cambios de código)
  6. Sesión de trabajoCambios de código

    AcciónBarrido de inactivos: ausente de la cola frente a intentos agotados, según exista o no un resultado

    • traspasoUn ciclo→ Barrido en desarrollo: 200 candidatos → 106 movidos · 2 de nuevo en cola · 0 errores (Artefactos)
  7. ArtefactosArtefactos

    ArtefactoBarrido en desarrollo: 200 candidatos → 106 movidos · 2 de nuevo en cola · 0 errores

    • no es una ejecución registradaLímite de la interpretación→ Los 106 no son traducciones exitosas (Artefactos)
  8. ArtefactosArtefactos

    Regla · sin verificarLos 106 no son traducciones exitosas

Contexto
Al cotejar el failedReason de BullMQ, los códigos de salida de los subprocesos y los trabajos que quedaban en borrador, se descubrió que el NODE_OPTIONS heredado entraba en conflicto en los subprocesos. Después, la misma situación se hizo visible como estado de la cola.
Resultado
Los trabajos estancados se dividen entre los que no están en la cola y los que agotaron sus intentos; estos últimos pasan, con un motivo, a needs_review o needs_credential según exista o no un resultado. La revisión humana se mantiene.
Límite
El tope de concurrencia es por proceso. Los registros originales de ejecución no estaban disponibles en el material revisado; las cifras de latencia se omiten porque no se registraron los modelos ni el esfuerzo solicitados. El código de compilación y de versión por sí solo no es evidencia de un despliegue público.
Fuentes y límites restantes
  • El CHANGELOG registra una propuesta de ramas de adaptadores en paralelo, pero no se convierte en registro de una ejecución paralela real.
  • El resto de los 200 no se desglosa en este registro.