
Cotton
Translation workflow
Згенеровані переклади стають результатами, які можна рецензувати.
Робочий процес перекладу ігрових діалогів.
Cotton vocabulary
- prompt layers
- glossary
- generation
- revision
- judge
- hard gate
- score
- intake
- checkpoint
- spend control
- stale sweep
- approval
- correction
- audit trail
Prompt Layers: SYSTEM_PROMPT_L0 · buildTranslateUserMessage · L1 CONTRACT · L3 SPEAKER · L6 SOURCE · L7 INSTRUCTION · ICU PLACEHOLDER · INLINE TAG · TARGET TEXT ONLY · FORCED MAPPING · L2 GLOSSARY · speaker_keyGlossary: glossary_term · fetchGlossaryHits · canonical_form · forbidden_translations · SUBSTRING MATCH · FORCED MAPPING · FORBIDDEN ALTERNATIVE · L2 GLOSSARY · glossary_hits · glossary_complianceGeneration: AdapterRegistry · anthropic-sdk · openai-sdk · claude-local · codex-local · llm_plan · PIVOT_VIA · shouldPivot · COTTON_ADAPTER_CONCURRENCY · NODE_OPTIONS · pivot_register_carry · translation.refinedRevision: buildTranslateUserMessage · L7 INSTRUCTION · runRefinementLoop · priorAttempt · priorCritique · REJECTED BY THE JUDGE · maxTurns · willRetry · RefinementHooks · HOOK ABORT · turn_count_to_final · critique_for_retry · failingDimensions · cost_ceiling_usd · needs_reviewJudge: glossary_hits · runJudge · JUDGE_SYSTEM_PROMPT · judgeModel · TEMPERATURE 0 · parseJudgeResponse · FOUR-SECTION XML · VERBATIM CHUNKS · severity · critique_for_retry · judge_citation · missingHardGates · TRIGGER ABSENT = PASS · judge.scoredHard Gate: ICU PLACEHOLDER · INLINE TAG · FORBIDDEN ALTERNATIVE · hard_gate_fail · hardGatePassed · glossary_compliance · cps_budget_compliant · icu_validity · inline_tag_preserved · length_constraint · HARD GATE FIRST · missingHardGates · TRIGGER ABSENT = PASSScore: HARD GATE FIRST · computeVerdict · cottonEvalScore · WEIGHTED AVERAGE · tone_register · personality_consistent · emotional_state_match · cultural_marker_preserved · accuracy · pivot_register_carry · auto_approve_threshold · failingDimensions · approval_gate · judge.scoredIntake: processXlsxBytes · classifySheetName · parseGoogleSheetsUrl · source_file · content_sha256 · extractStageDirection · speaker_key · ingest_session · segment.ingested · github.push.receivedCheckpoint: translation_progress · last_completed_step · turn_translated · turn_judged · finalized · jobEntryGuard · SELECT FOR UPDATE · attempt_count · DEFAULT_MAX_RESUME_ATTEMPTS · TWO-TX SPLIT · ON CONFLICT DO NOTHINGSpend Control: llm_plan · costCap · cost_ceiling_usd · rateLimit · FailoverDispatcher · haltOnQuota · detectQuotaFromStream · quota_daily_exhausted · auth_revoked · NO AUTO-SWAP · needs_credential · POST /:id/resumeStale Sweep: COTTON_ADAPTER_CONCURRENCY · NODE_OPTIONS · attempt_count · runStaleSweep · STALE_THRESHOLD_INTERVAL · DLQ_ATTEMPT_CAP · LIMIT 200 · re_enqueued · dead_lettered · ORPHAN RE-ENQUEUE · IN-FLIGHT SET · /health/queues · maxStalledCount · needs_reviewApproval: auto_approve_threshold · ingest_session · SELECT FOR UPDATE · needs_credential · POST /:id/resume · POST /:id/approve · POST /:id/unapprove · POST /:id/reject · APPROVE_FROM · REJECT_FROM · needs_review · reviewer_id · HITL · approval_gate · translation.approved · EDIT & APPROVE · actor_idCorrection: POST /:id/correct · corrected_text · CORRECT_FROM · EDIT & APPROVE · human_corrected_segments · human-corrected-after-mt · translation.human_corrected · supersedes · NEW REVISION · IMMUTABLE HISTORYAudit Trail: turn_count_to_final · severity · judge_citation · content_sha256 · segment.ingested · github.push.received · translation.approved · human_corrected_segments · translation.human_corrected · IMMUTABLE HISTORY · event_log · appendNextEvent · ULID · AGGREGATE VERSION · translation_state_log · actor_id · llm_call_log · telemetryHook · judge.scored · translation.refined
Оцінки, повторні спроби й рецензування людиною — кожне на своїй межі.
Генерація й оцінювання спільно використовують глосарій, а провал жорсткого порогу, про який повідомила модель-суддя, не може бути компенсований середнім балом. Проміжні стани перекладу й оцінювання записуються, ліміти повторів і вартості тримаються окремо від вичерпаних облікових даних, а завислі завдання повертаються в чергу чи на рецензування залежно від причини.
Цей робочий проєкт поєднує генерацію перекладу, оцінку якості з боку моделі, повторні спроби й рецензування людиною в одному потоці.
Від початку репозиторію до роботи, підтвердженої під час співпраці
Вебзастосунок з екранами редагування й схвалення перекладів, API та обробником завдань, що працює в середовищі розробки.
Реєстрація → вхід
Ставиться в чергу після коміту в базу даних; воркер блокує рядок, перевіряє спробу й створює чернетку.
Джерело · цільові мовиДані: джерелоЧерга після коміту
API · реєстрація завданьВихідні сегменти й цільові мови проєкту зберігаються в базі даних. Дані клієнта не показано.
Черга після коміту
API · реєстрація завданьДані: після комітуBullMQ · ID завданняЧерга завданьПісля коміту в базу даних для кожної активної цільової мови в чергу ставиться завдання з ID, визначеним у межах запиту. Якщо постановка в чергу не вдається, лише логується попередження, а коміт не відкочується (атомарного outbox немає), — тому й існує огляд завислих.
BullMQ · ID завдання
Черга завданьЗапуск · рішення: доставка завданняБлокування рядка · перевірка спробиВхід завданняBullMQ асинхронно передає завдання воркеру.
Блокування рядка · перевірка спроби
Вхід завданняДані: рядок поступуЧернетка · поступСтан перекладуУсередині транзакції рядок поступу блокується й створюється чернетка перекладу. Автоматичні повтори фіналізованих або призупинених через облікові дані завдань пропускаються; ручні запити обробляються окремо.
Блокування рядка · перевірка спроби
Вхід завданняЗапуск · рішення: спробу дозволеноГенерація · виклик моделіХід перекладуЛічильник спроб збільшується на один у межах ліміту, після чого починається хід перекладу.
Генерація → оцінювання → фіналізація
Генерація й оцінювання використовують той самий глосарій; переклад і оцінку записують окремо, а код агрегує оцінку перед фіналізацією.
Глосарій робочого простору
Глосарій · контекстДані: глосарійГенерація · виклик моделіХід перекладуГлосарій робочого простору й контекст знаходять і передають генерації.
Глосарій робочого простору
Глосарій · контекстДані: той самий глосарійВиклик моделі-судді · розбірХід перекладуОцінювання отримує ті самі обмеження глосарію.
Генерація · виклик моделі
Хід перекладуДані: Tx1 · перекладРядки перекладу · оцінкиСтан перекладуМодель викликається напряму або через проміжну en-US, а виклик, подію й поступ записують однією транзакцією. Якщо завдання запускається знову після аварійного збою, виклик перекладу та його вартість можуть повторитися.
Виклик моделі-судді · розбір
Хід перекладуДані: Tx2 · оцінюванняРядки перекладу · оцінкиСтан перекладуОцінки судді й докази вставляються один раз на переклад і хід; дублікат знаходить наявний рядок, а цитати записуються лише під час першої вставки. Це не та сама транзакція, що й переклад.
Виклик моделі-судді · розбір
Хід перекладуДані: оцінки · порогиЖорсткий поріг · зважене середнєПравила вердиктуВідповідь моделі-судді розбирається на оцінки за вимірами й результати порогів. Чи пройшов глосарій — це те, що повідомляє модель-суддя.
Жорсткий поріг · зважене середнє
Правила вердиктуЗапуск · рішення: вердиктХоди · вартість · квотаПовтор · витратиБудь-який повідомлений провал жорсткого порогу означає нуль і провал; лише потім застосовуються зважене середнє й пороги за вимірами. Загальний поріг 8.0 — типове значення конфігурації, а не спостережена якість перекладу.
Ходи · вартість · квота
Повтор · витратиЗапуск · рішення: passФінальна транзакціяФіналізаціяУспіх фіналізується як translated.
Фінальна транзакція
ФіналізаціяДані: фінальний записСтан · журнал викликівСтан перекладуКандидат, стан, оцінка й ходи фіналізуються, а фіналізація поступу й журнал станів записуються однією транзакцією. Подія завершення перекладу надсилається лише для translated.
Повтор · ліміти витрат
Непроходження означає ще один хід; ліміт — рецензування людиною; квота чи автентифікація зупиняють витрати й чекають, поки оператор відновить роботу.
Жорсткий поріг · зважене середнє
Правила вердиктуЗапуск · рішення: вердиктХоди · вартість · квотаПовтор · витратиБудь-який повідомлений провал жорсткого порогу означає нуль і провал; лише потім застосовуються зважене середнє й пороги за вимірами. Загальний поріг 8.0 — типове значення конфігурації, а не спостережена якість перекладу.
Ходи · вартість · квота
Повтор · витратиЗапуск · рішення: наступний хідГенерація · виклик моделіХід перекладуПереклад, що не пройшов, генерується знову з попереднім перекладом і критикою. Навіть провал жорсткого порогу спершу можна спробувати знову, а не одразу передавати людині.
Ходи · вартість · квота
Повтор · витратиЗапуск · рішення: ліміт · перериванняРецензування людиноюКоли ходи вичерпано або досягнуто стелі вартості, завдання фіналізується як needs_review. «Фіналізовано» означає, що обробку завершено, а не що людина схвалила.
Ходи · вартість · квота
Повтор · витратиЗбій · ліміт: квота · автентифікаціяПеревірка облікових данихСигнал квоти чи автентифікації зупиняє витрати й встановлює needs_credential. Автоматичного перемикання на інший обліковий запис чи провайдера немає. Транспортні помилки без сигналу зупинки повертаються до повторів BullMQ.
Перевірка облікових данихЗапуск · рішення: ручне відновленняBullMQ · ID завдання
Черга завданьОператор, який перевірив облікові дані, явно перезапускає.
Відновлення завислих завдань
Старі чернетки розділяються за причиною: відсутність у черзі означає повторну постановку в чергу, вичерпані спроби — рішення людини.
Чернетка · поступ
Стан перекладуСпостереження · звіт: зависла чернеткаЧернетки понад 10 min · макс. 200Огляд завислихЧитається до 200 кандидатів, що залишаються чернетками понад 10 хвилин, починаючи з найстаріших. Запит не бере блокування, а оновлення й журнали виконуються окремими інструкціями, тож це не описано як пакет без станів гонитви.
Чернетки понад 10 min · макс. 200
Огляд завислихЗапуск · рішення: нижче лімітуПорівняння стану чергиПеревірка чергиЯкщо спроб менше за ліміт (3), завдання порівнюють зі станами черги active, waiting, delayed і prioritized. У коді гілка вичерпаних спроб іде перед цією перевіркою черги.
Порівняння стану черги
Перевірка чергиЗапуск · рішення: знову в чергуBullMQ · ID завданняЧерга завданьЯкщо завдання немає в черзі, його знову ставлять у чергу. API використовує ID із суфіксом запиту, а огляд шукає за ID сегмента й мови, тож це не описано як відповідність кожному запиту в процесі.
Чернетки понад 10 min · макс. 200
Огляд завислихЗапуск · рішення: результат єРецензування людиноюЯкщо всі 3 спроби використано й результат перекладу є, завдання переходить у needs_review.
Чернетки понад 10 min · макс. 200
Огляд завислихЗапуск · рішення: результату немаєПеревірка облікових данихЯкщо всі 3 спроби використано, а результату немає, завдання переходить у needs_credential.
Усі зв’язки однакової товщини. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.
- Суцільна · напрямок входів, результатів і записів
- Штрихова · запуск, рішення, запит
- Довга пунктирна · спостереження й звітування, окремо від рішення
- Коротка штрихова · збій, зупинка, ліміт
- Товста чорна лінія · обраний потік; номери показують порядок
- Рамка · межа коду чи стану, названа в заголовку
- Внутрішня плашка · компонент цієї межі
- Пунктирна рамка · поза цією межею
- Помаранчевий контур · де вирішує модель
- Генерація · витрати · фіналізація
- Вхід · правила вердикту · огляд
- Черга · стан · записи
- Реєстрація · перевірка черги
Накреслено за закритими записами реалізації й розробки. Дані клієнтів і шляхи коду не показано.
- Один огляд
- May 26, 2026, один цикл огляду в середовищі розробки: 200 перевірено, 106 переходів стану, 2 знову в черзі. Перехід стану — не успішний переклад, і розподіл 106 за цільовими станами не записано.
- Чому не рівно один раз
- Записи робляться без дублікатів, але якщо завдання запускається знову після аварійного збою, виклики моделі та їхня вартість можуть повторитися. Ліміт паралельності діє на рівні процесу, а не всього кластера.
- Межі вердикту
- Те, що середнє не може перекрити провал глосарію, — це правило агрегування повідомлених порогів. Воно не доводить, що знайдено кожен заборонений термін чи що якість на рівні носія мови.