
Cotton
Translation workflow
Згенеровані переклади стають результатами, які можна рецензувати.
Робочий процес перекладу ігрових діалогів.
Стан гонитви, знайдений рев’ю, і завислі завдання, повернуті за причиною
Один випадок, у якому політика й коміт називають Claude для реалізації й Codex для рев’ю, і один, що зробив завислі завдання придатними для діагностики.
May 19, 2026
Зміну, що зупиняє роботу після вичерпання квоти, виправили в тому самому PR разом зі станом гонитви, знайденим рев’ю
ЛюдинаЛюдина
ДіяПрипиняти витрати після вичерпання квоти · без автоматичного fallback
- передачаОбмеження реалізації→ Реалізувати контрольну точку · зупинку · ручне відновлення (Claude)
Агент для програмуванняClaude
ДіяРеалізувати контрольну точку · зупинку · ручне відновлення
- передачаРев’ю в тому самому PR→ Зауваження: стан гонитви · дубльовані переходи стану (Codex)
Рев’ю · верифікаціяCodex
Спостереження · зауваженняЗауваження: стан гонитви · дубльовані переходи стану
- повернутоСтан гонитви · ідемпотентність→ У тому самому PR: блокування рядка · унікальний ключ оцінки · атомарний перехід (Той самий PR)
АртефактиТой самий PR
АртефактУ тому самому PR: блокування рядка · унікальний ключ оцінки · атомарний перехід
- передача→ Записи локальних фікстур · перевірки інтеграції з БД (Той самий PR)
АртефактиТой самий PR
АртефактЗаписи локальних фікстур · перевірки інтеграції з БД
- не записане виконанняОбсяг перевірено→ Нових результатів CI чи продакшн-розгортання не зібрано (Той самий PR)
АртефактиТой самий PR
Правило · не перевіреноНових результатів CI чи продакшн-розгортання не зібрано
- Контекст
- Умова, яку поставила людина, — припиняти витрати, коли квота вичерпана, без автоматичного fallback. Claude реалізував контрольну точку, зупинку й ручне відновлення, а рев’ю Codex, запущене через MCP проєкту, знайшло стан гонитви й дублювання в переходах стану.
- Результат
- Переходи входу й відновлення виконуються під блокуванням, оцінки судді мають унікальний ключ проти дублікатів, а межу транзакції визначено. Це не означає, що всі стани гонитви усунуто.
- Межа
- Коміт зазначає 140 перевірок, а пізніший CHANGELOG інтеграції — 160, тож їх не зведено в одну кількість запусків. За політикою рев’ю Codex — необов’язковий локальний крок, тож це не означає, що кожен минулий PR його пройшов.
Джерела й залишкові обмеження
- Політика фіксує порядок: Claude реалізує, Codex рецензує локально через MCP проєкту, рев’ю додається до PR, а розбіжності розслідуються разом з агентом рев’ю Claude. Автоматичне рев’ю Codex у CI було відкладено.
- Перевірки під час розробки використовують фікстури й моки, а реальні виклики моделі потребують окремого обсягу. Зауваження рев’ю вносяться в той самий PR і зливаються squash-злиттям feature → main.
May 26, 2026
Завислі завдання зробили придатними для діагностики й повернули за причиною
У розробціВоркер перекладу · черга
Спостереження · зауваженняЗавдання, що лишилися в draft · спроби вичерпано
- передачаСпостережені значення→ Зіставити failedReason · коди виходу · стан draft (Розробник)
ЛюдинаРозробник
ДіяЗіставити failedReason · коди виходу · стан draft
- передача→ Причина: успадкований NODE_OPTIONS конфліктує в підпроцесах (Розробник)
ЛюдинаРозробник
Спостереження · зауваженняПричина: успадкований NODE_OPTIONS конфліктує в підпроцесах
- повернутоКонфлікт успадкованих опцій→ Прибрати NODE_OPTIONS · ліміт паралельності на процес (Зміни коду)
Робоча сесіяЗміни коду
ДіяПрибрати NODE_OPTIONS · ліміт паралельності на процес
- передача→ Стан черги: waiting · active · failed · stale (Зміни коду)
Робоча сесіяЗміни коду
ДіяСтан черги: waiting · active · failed · stale
- передача→ Огляд stale: відсутні в черзі проти вичерпаних спроб, розгалуження за наявністю результату (Зміни коду)
Робоча сесіяЗміни коду
ДіяОгляд stale: відсутні в черзі проти вичерпаних спроб, розгалуження за наявністю результату
- передачаОдин цикл→ Огляд у dev: 200 кандидатів → 106 переведено · 2 знову в черзі · 0 помилок (Артефакти)
АртефактиАртефакти
АртефактОгляд у dev: 200 кандидатів → 106 переведено · 2 знову в черзі · 0 помилок
- не записане виконанняМежа інтерпретації→ 106 — це не успішні переклади (Артефакти)
АртефактиАртефакти
Правило · не перевірено106 — це не успішні переклади
- Контекст
- Зіставлення failedReason у BullMQ, кодів виходу підпроцесів і завдань, що лишилися в стані draft, показало, що успадкований NODE_OPTIONS конфліктував у підпроцесах. Після цього ту саму ситуацію зробили видимою як стан черги.
- Результат
- Завислі завдання розділяються на відсутні в черзі й ті, що вичерпали спроби; останні з причиною переходять у needs_review чи needs_credential залежно від того, чи є результат. Рецензування людиною лишається на місці.
- Межа
- Ліміт паралельності діє на рівні процесу. Оригінальних журналів запусків у переглянутих матеріалах не було; показники затримки опущено, бо запитані моделі й effort не записано. Сам лише код збірки й релізу не є доказом публічного розгортання.
Джерела й залишкові обмеження
- CHANGELOG фіксує пропозицію паралельних гілок адаптерів, але вона не перетворена на запис фактичного паралельного виконання.
- Решту з 200 у цьому записі не деталізовано.