
Cotton
Translation workflow
Aus generierten Übersetzungen prüfbare Ergebnisse machen.
Ein Übersetzungs-Workflow für Spieldialoge.
Eine vom Review gefundene Race Condition, hängende Jobs nach Ursache zurückgeführt
Ein Fall, in dessen Vorgabe und Commit Claude für die Implementierung und Codex für das Review genannt sind, und einer, der hängende Jobs diagnostizierbar machte.
May 19, 2026
Eine Änderung, die bei erschöpfter Quota anhält, wurde im selben PR korrigiert, einschließlich der vom Review gefundenen Race Condition
MenschMensch
HandlungAusgaben bei erschöpfter Quota stoppen · kein automatischer Fallback
- ÜbergabeImplementierungsbedingung→ Checkpoint · Halt · manuelle Wiederaufnahme implementieren (Claude)
Coding-AgentClaude
HandlungCheckpoint · Halt · manuelle Wiederaufnahme implementieren
- ÜbergabeReview im selben PR→ Befund: Race Condition · doppelte Zustandsübergänge (Codex)
Review · VerifikationCodex
Beobachtung · BefundBefund: Race Condition · doppelte Zustandsübergänge
- zurückgeschicktRace · Idempotenz→ Im selben PR: Row Lock · eindeutiger Score-Schlüssel · atomarer Übergang (Derselbe PR)
ArtefakteDerselbe PR
ArtefaktIm selben PR: Row Lock · eindeutiger Score-Schlüssel · atomarer Übergang
- Übergabe→ Lokale Fixture · Aufzeichnungen der DB-Integrationsprüfung (Derselbe PR)
ArtefakteDerselbe PR
ArtefaktLokale Fixture · Aufzeichnungen der DB-Integrationsprüfung
- keine aufgezeichnete AusführungGeprüfter Umfang→ Keine neuen CI- oder Produktions-Deployment-Ergebnisse erhoben (Derselbe PR)
ArtefakteDerselbe PR
Vorgabe · ungeprüftKeine neuen CI- oder Produktions-Deployment-Ergebnisse erhoben
- Hintergrund
- Die von einem Menschen gesetzte Bedingung lautete, die Ausgaben zu stoppen, wenn die Quota aufgebraucht ist, ohne automatischen Fallback. Claude implementierte Checkpoint, Halt und manuelle Wiederaufnahme, und ein über das Projekt-MCP ausgeführtes Codex-Review fand eine Race Condition und Duplikate in den Zustandsübergängen.
- Ergebnis
- Eintritts- und Wiederaufnahmeübergänge laufen innerhalb einer Sperre, Bewertungsscores tragen einen eindeutigen Schlüssel gegen Duplikate, und die Transaktionsgrenze wurde festgelegt. Das heißt nicht, dass jede Race Condition beseitigt wurde.
- Grenze
- Der Commit nennt 140 Prüfungen und das spätere Integrations-CHANGELOG 160, daher werden sie nicht zu einer Laufzahl zusammengeführt. Laut Vorgabe ist das Codex-Review ein optionaler lokaler Schritt, daher heißt das nicht, dass jeder frühere PR es durchlief.
Quellen und verbleibende Grenzen
- Die Vorgabe hält die Reihenfolge fest: Claude implementiert, Codex reviewt lokal über das Projekt-MCP, das Review wird an den PR angehängt, und Abweichungen werden gemeinsam mit dem Review-Agenten von Claude untersucht. Ein automatisches Codex-Review in der CI war zurückgestellt.
- Entwicklungsprüfungen verwenden Fixtures und Mocks, und echte Modellaufrufe brauchen einen eigenen Umfang. Review-Befunde werden in denselben PR eingearbeitet und per Squash-Merge feature → main zusammengeführt.
May 26, 2026
Hängende Jobs diagnostizierbar gemacht und nach Ursache zurückgeführt
In EntwicklungÜbersetzungs-Worker · Queue
Beobachtung · BefundIn draft verbliebene Jobs · Versuche erschöpft
- ÜbergabeBeobachtete Werte→ failedReason · Exit-Codes · draft-Zustand abgleichen (Entwickler)
MenschEntwickler
HandlungfailedReason · Exit-Codes · draft-Zustand abgleichen
- Übergabe→ Ursache: geerbte NODE_OPTIONS kollidieren in Subprozessen (Entwickler)
MenschEntwickler
Beobachtung · BefundUrsache: geerbte NODE_OPTIONS kollidieren in Subprozessen
- zurückgeschicktKollision geerbter Optionen→ NODE_OPTIONS entfernen · Nebenläufigkeitslimit pro Prozess (Codeänderungen)
ArbeitssessionCodeänderungen
HandlungNODE_OPTIONS entfernen · Nebenläufigkeitslimit pro Prozess
- Übergabe→ Queue-Zustand: waiting · active · failed · stale (Codeänderungen)
ArbeitssessionCodeänderungen
HandlungQueue-Zustand: waiting · active · failed · stale
- Übergabe→ Stale-Sweep: fehlt in der Queue vs. Versuche verbraucht, verzweigt danach, ob ein Ergebnis existiert (Codeänderungen)
ArbeitssessionCodeänderungen
HandlungStale-Sweep: fehlt in der Queue vs. Versuche verbraucht, verzweigt danach, ob ein Ergebnis existiert
- ÜbergabeEin Zyklus→ Dev-Sweep: 200 Kandidaten → 106 verschoben · 2 erneut eingereiht · 0 Fehler (Artefakte)
ArtefakteArtefakte
ArtefaktDev-Sweep: 200 Kandidaten → 106 verschoben · 2 erneut eingereiht · 0 Fehler
- keine aufgezeichnete AusführungGrenze der Deutung→ Die 106 sind keine erfolgreichen Übersetzungen (Artefakte)
ArtefakteArtefakte
Vorgabe · ungeprüftDie 106 sind keine erfolgreichen Übersetzungen
- Hintergrund
- Der Abgleich von failedReason in BullMQ, Exit-Codes von Subprozessen und in draft verbliebenen Jobs ergab, dass geerbte NODE_OPTIONS in Subprozessen kollidierten. Danach wurde dieselbe Situation als Queue-Zustand sichtbar gemacht.
- Ergebnis
- Hängende Jobs werden in solche geteilt, die in der Queue fehlen, und solche, die ihre Versuche aufgebraucht haben; Letztere gehen mit Begründung zu needs_review oder needs_credential, je nachdem, ob ein Ergebnis existiert. Das menschliche Review bleibt bestehen.
- Grenze
- Das Nebenläufigkeitslimit gilt pro Prozess. Originale Laufprotokolle lagen im geprüften Material nicht vor; Latenzwerte entfallen, weil die angefragten Modelle und der Effort nicht aufgezeichnet wurden. Build- und Release-Code allein ist kein Beleg für ein öffentliches Deployment.
Quellen und verbleibende Grenzen
- Das CHANGELOG hält einen Vorschlag für parallele Adapter-Branches fest, doch er wird nicht in eine Aufzeichnung tatsächlicher paralleler Ausführung umgedeutet.
- Der Rest der 200 wird in dieser Aufzeichnung nicht aufgeschlüsselt.