Le personnage de coton souriant du logo original de Cotton, sans fond ni lettrage
Retour à la salle

Cotton

Translation workflow

Des traductions générées aux résultats révisables.

Un workflow de traduction pour les dialogues de jeux vidéo.

2026.05.06 — 2026.05.26

Projet professionnel · traitement des traductions, jugement et chemin de revue

  • Application webImplémenté · développement

Une course trouvée en revue, des jobs bloqués renvoyés selon leur cause

Un cas dont la politique et les commits nomment Claude pour l’implémentation et Codex pour la revue, et un autre qui a rendu les jobs bloqués diagnosticables.

Légende complète

Mode de lecture · une même grammaire pour chaque cas

  • Les colonnes indiquent qui a agi ; de haut en bas, le temps
  • Trait plein : une passation consignée ou une étape suivante
  • ↩ lapis épais : un constat qui a renvoyé le travail
  • Tirets : pas une exécution consignée (une règle écrite, un conseil sans autorité, une frontière non vérifiée)
  • Rectangle : une action
  • Arrondi : un état observé ou un constat
  • Coin plié : un artefact ou une preuve
  • Colonne hachurée : parties du produit en développement (pas les agents qui ont servi à le construire)

Cas 1 / 2 · Une modification qui s’arrête à l’épuisement du quota a été corrigée dans la même PR, y compris la course trouvée en revue

May 19, 2026

Une modification qui s’arrête à l’épuisement du quota a été corrigée dans la même PR, y compris la course trouvée en revue

  1. PersonnePersonne

    ActionArrêt des dépenses à l’épuisement du quota · pas de repli automatique

    • passationContrainte d’implémentation→ Implémenter checkpoint · arrêt · reprise manuelle (Claude)
  2. Agent de codeClaude

    ActionImplémenter checkpoint · arrêt · reprise manuelle

    • passationRevue dans la même PR→ Constat : course · transitions d’état en double (Codex)
  3. Revue · vérificationCodex

    Observation · constatConstat : course · transitions d’état en double

  4. ArtefactsMême PR

    ArtefactDans la même PR : verrou de ligne · clé de score unique · transition atomique

    • passation→ Fixture locale · enregistrements du contrôle d’intégration DB (Même PR)
  5. ArtefactsMême PR

    ArtefactFixture locale · enregistrements du contrôle d’intégration DB

    • pas une exécution consignéePérimètre vérifié→ Aucun nouveau résultat de CI ni de déploiement en production collecté (Même PR)
  6. ArtefactsMême PR

    Règle · non vérifiéeAucun nouveau résultat de CI ni de déploiement en production collecté

Contexte
La condition fixée par une personne était d’arrêter les dépenses quand le quota est épuisé, sans repli automatique. Claude a implémenté checkpoint, arrêt et reprise manuelle, et une revue Codex lancée via le MCP du projet a trouvé une course et des doublons dans les transitions d’état.
Résultat
Les transitions d’entrée et de reprise s’exécutent sous verrou, les scores du juge portent une clé unique contre les doublons, et la frontière de transaction a été fixée. Cela ne signifie pas que toutes les courses ont été éliminées.
Limite
Le commit indique 140 contrôles et le CHANGELOG d’intégration ultérieur en indique 160 ; ils ne sont donc pas fusionnés en un seul nombre d’exécutions. Selon la politique, la revue Codex est une étape locale facultative ; cela ne signifie donc pas que toutes les PR passées en ont bénéficié.
Sources et limites restantes
  • La politique consigne l’ordre : Claude implémente, Codex fait une revue locale via le MCP du projet, la revue est jointe à la PR, et les désaccords sont examinés avec l’agent de revue de Claude. La revue Codex automatique en CI avait été reportée.
  • Les contrôles de développement utilisent des fixtures et des mocks, et les appels réels au modèle demandent un périmètre propre. Les constats de revue sont intégrés à la même PR, puis squash-merge feature → main.

May 26, 2026

Les jobs bloqués sont devenus diagnosticables et ont été renvoyés selon leur cause

  1. En développementWorker de traduction · file

    Observation · constatJobs restés en brouillon · tentatives épuisées

    • passationValeurs observées→ Rapprocher failedReason · codes de sortie · état brouillon (Développeur)
  2. PersonneDéveloppeur

    ActionRapprocher failedReason · codes de sortie · état brouillon

    • passation→ Cause : le NODE_OPTIONS hérité entre en conflit dans les sous-processus (Développeur)
  3. PersonneDéveloppeur

    Observation · constatCause : le NODE_OPTIONS hérité entre en conflit dans les sous-processus

  4. Session de travailModifications du code

    ActionRetirer NODE_OPTIONS · plafond de concurrence par processus

    • passation→ État de la file : waiting · active · failed · stale (Modifications du code)
  5. Session de travailModifications du code

    ActionÉtat de la file : waiting · active · failed · stale

    • passation→ Balayage des inactifs : absent de la file ou tentatives épuisées, selon qu’un résultat existe (Modifications du code)
  6. Session de travailModifications du code

    ActionBalayage des inactifs : absent de la file ou tentatives épuisées, selon qu’un résultat existe

    • passationUn cycle→ Balayage en dev : 200 candidats → 106 déplacés · 2 remis en file · 0 erreur (Artefacts)
  7. ArtefactsArtefacts

    ArtefactBalayage en dev : 200 candidats → 106 déplacés · 2 remis en file · 0 erreur

    • pas une exécution consignéeLimite de l’interprétation→ Les 106 ne sont pas des traductions réussies (Artefacts)
  8. ArtefactsArtefacts

    Règle · non vérifiéeLes 106 ne sont pas des traductions réussies

Contexte
Le rapprochement du failedReason de BullMQ, des codes de sortie des sous-processus et des jobs restés en brouillon a montré que le NODE_OPTIONS hérité entrait en conflit dans les sous-processus. Ensuite, la même situation a été rendue visible comme état de la file.
Résultat
Les jobs bloqués sont séparés entre ceux absents de la file et ceux qui ont épuisé leurs tentatives ; ces derniers passent, avec une raison, à needs_review ou à needs_credential selon qu’un résultat existe. La revue humaine est maintenue.
Limite
Le plafond de concurrence est par processus. Les journaux d’exécution d’origine n’étaient pas disponibles dans les éléments examinés ; les chiffres de latence sont omis faute d’enregistrement des modèles et de l’effort demandés. Le code de build et de version ne prouve pas à lui seul un déploiement public.
Sources et limites restantes
  • Le CHANGELOG consigne une proposition de branches d’adaptateurs parallèles, mais elle n’est pas transformée en enregistrement d’une exécution parallèle réelle.
  • Le reste des 200 n’est pas détaillé dans cet enregistrement.