
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 и обработчик на задачи, работещо в средата за разработка.
Регистриране → влизане
Поставя се в опашката след къмита в базата данни; работен процес заключва реда, проверява опита и създава draft.
Изходен текст · целеви езициДанни: изходен текстПоставяне в опашка след къмит
API · регистриране на задачиИзходните сегменти и целевите езици на проекта се съхраняват в базата данни. Данните на клиентите не са показани.
Поставяне в опашка след къмит
API · регистриране на задачиДанни: след къмитBullMQ · ID на задачаОпашка за задачиСлед къмита в базата данни за всеки активен целеви език в опашката се поставя задача с ID на ниво заявка. Ако поставянето в опашката се провали, се записва само предупреждение, а къмитът не се отменя (няма атомарен outbox), и затова съществува проверката stale.
BullMQ · ID на задача
Опашка за задачиИзпълнение · преценка: доставка на задачатаЗаключване на ред · проверка на опитаВлизане на задачатаBullMQ предава задачата на работен процес асинхронно.
Заключване на ред · проверка на опита
Влизане на задачатаДанни: ред за напредъкаDraft · напредъкСъстояние на преводаВ рамките на транзакция редът за напредъка се заключва и се създава draft превод. Автоматичните повторни опити за финализирани задачи или задачи, спрени заради идентификационни данни, се пропускат; ръчните заявки се обработват отделно.
Заключване на ред · проверка на опита
Влизане на задачатаИзпълнение · преценка: опитът е разрешенГенериране · извикване на моделаХод на преводаБроят опити се увеличава с едно в рамките на лимита, след което започва ходът на превода.
Генериране → преценка → финализиране
Генерирането и преценката използват един и същ речник; преводът и преценката се записват отделно, а кодът агрегира преценката преди финализирането.
Речник на работното пространство
Речник · контекстДанни: речникГенериране · извикване на моделаХод на преводаРечникът и контекстът на работното пространство се търсят и се подават на генерирането.
Речник на работното пространство
Речник · контекстДанни: същият речникИзвикване на модела съдия · анализХод на преводаПреценката получава същите ограничения от речника.
Генериране · извикване на модела
Ход на преводаДанни: Tx1 · преводРедове за превод · преценкаСъстояние на преводаМоделът се извиква директно или чрез en-US pivot, а извикването, събитието и напредъкът се записват в една транзакция. Ако задачата се изпълни отново след срив, извикването за превод и разходът му могат да се повторят.
Извикване на модела съдия · анализ
Ход на преводаДанни: Tx2 · преценкаРедове за превод · преценкаСъстояние на преводаОценките и доказателствата на съдията се вмъкват веднъж за всеки превод и ход; дубликат намира съществуващия ред, а цитатите се записват само при първото вмъкване. Това не е същата транзакция като превода.
Извикване на модела съдия · анализ
Ход на преводаДанни: оценки · портиТвърда порта · претеглена средна стойностПравила за вердиктаОтговорът на модела съдия се анализира в оценки по измерения и резултати от портите. Дали речникът е спазен, отчита моделът съдия.
Твърда порта · претеглена средна стойност
Правила за вердиктаИзпълнение · преценка: вердиктХодове · разход · квотаПовторен опит · разходиВсеки отчетен неуспех на твърда порта означава нула и неуспех; едва след това се прилагат претеглената средна стойност и праговете по измерения. Общият праг от 8.0 е стойност по подразбиране в конфигурацията, а не наблюдавано качество на превода.
Ходове · разход · квота
Повторен опит · разходиИзпълнение · преценка: passФинална транзакцияФинализиранеУспешният резултат се финализира като translated.
Финална транзакция
ФинализиранеДанни: краен записСъстояние · лог на извикваниятаСъстояние на преводаКандидатът, състоянието, оценката и ходовете се финализират, а напредъкът finalized и логът на състоянието се записват в една транзакция. Събитие за завършен превод се излъчва само при translated.
Повторни опити · лимити за разходи
Без успех следва нов ход; при лимит – човешки преглед; при квота или удостоверяване разходите спират и се чака оператор да продължи.
Твърда порта · претеглена средна стойност
Правила за вердиктаИзпълнение · преценка: вердиктХодове · разход · квотаПовторен опит · разходиВсеки отчетен неуспех на твърда порта означава нула и неуспех; едва след това се прилагат претеглената средна стойност и праговете по измерения. Общият праг от 8.0 е стойност по подразбиране в конфигурацията, а не наблюдавано качество на превода.
Ходове · разход · квота
Повторен опит · разходиИзпълнение · преценка: следващ ходГенериране · извикване на моделаХод на преводаПревод, който не мине, се генерира отново заедно с предишния превод и критиката. Дори неуспех на твърда порта може първо да се опита отново, вместо да отиде директно при човек.
Ходове · разход · квота
Повторен опит · разходиИзпълнение · преценка: лимит · прекратяванеЧовешки прегледКогато ходовете свършат или се достигне таванът на разходите, задачата се финализира като needs_review. Финализирано означава, че обработката е приключила, а не че човек я е одобрил.
Ходове · разход · квота
Повторен опит · разходиНеуспех · лимит: квота · удостоверяванеПроверка на идентификационните данниСигнал за квота или удостоверяване спира разходите и задава needs_credential. Няма автоматично превключване към друг акаунт или доставчик. Транспортните грешки без сигнал за спиране се връщат към повторните опити на BullMQ.
Проверка на идентификационните данниИзпълнение · преценка: ръчно продължаванеBullMQ · ID на задача
Опашка за задачиОператор, който е проверил идентификационните данни, рестартира изрично.
Възстановяване на блокирали задачи
Старите draft се разделят според причината: липса в опашката означава връщане в нея, изчерпани опити означават човешко решение.
Draft · напредък
Състояние на преводаНаблюдение · отчет: блокирал draftDraft, по-стари от 10 min · макс. 200Проверка staleЧетат се до 200 кандидата, които са в draft повече от 10 минути, започвайки от най-старите. Заявката не заключва, а обновяванията и логването се изпълняват като отделни команди, затова това не е описано като партида без състезания.
Draft, по-стари от 10 min · макс. 200
Проверка staleИзпълнение · преценка: под лимитаСравняване на състоянието на опашкатаПроверка на опашкатаПри по-малко опити от лимита (3) задачата се сравнява със състоянията на опашката active, waiting, delayed и prioritized. В кода клонът за изчерпани опити идва преди тази проверка на опашката.
Сравняване на състоянието на опашката
Проверка на опашкатаИзпълнение · преценка: връщане в опашкатаBullMQ · ID на задачаОпашка за задачиАко задачата не е в опашката, тя се поставя отново. API използва ID с наставка на заявката, докато проверката търси ID на сегмента и езика, затова не е описано, че покрива всяка заявка в ход.
Draft, по-стари от 10 min · макс. 200
Проверка staleИзпълнение · преценка: има резултатЧовешки прегледПри изчерпани и трите опита и наличен резултат от превода задачата отива в needs_review.
Draft, по-стари от 10 min · макс. 200
Проверка staleИзпълнение · преценка: няма резултатПроверка на идентификационните данниПри изчерпани и трите опита и без резултат задачата отива в needs_credential.
Всички връзки с еднаква дебелина. Изберете поток, за да се откроят само неговият път и номерираните стъпки.
- Плътна · посока на входа, резултатите и записите
- Прекъсната · изпълнение, преценка, заявка
- Дълга пунктирна · наблюдение и отчитане, отделно от преценката
- Къса прекъсната · неуспех, спиране, лимит
- Дебела черна линия · избраният поток; числата показват реда
- Кутия · граница на код или състояние, с името в заглавието
- Вътрешен етикет · компонент на тази граница
- Пунктирна кутия · извън тази граница
- Оранжев контур · където решава модел
- Генериране · разходи · финализиране
- Влизане · правила за вердикта · проверка
- Опашка · състояние · записи
- Регистриране · проверка на опашката
Начертано по непубличните записи за реализацията и разработката. Данни на клиенти и пътища в кода не са показани.
- Една проверка
- 26 май 2026 г., един цикъл на проверката в средата за разработка: 200 проверени, 106 смени на състоянието, 2 върнати в опашката. Смяната на състоянието не е успешен превод, а разпределението на 106-те по целеви състояния не е записано.
- Защо не точно веднъж
- Записите се правят без дубликати, но ако задача се изпълни отново след срив, извикванията на модела и разходите им могат да се повторят. Лимитът на паралелността е за процес, а не за целия клъстер.
- Обхват на вердикта
- Това, че средната стойност не може да покрие неуспех по речника, е правило за агрегиране на отчетените порти. То не доказва, че всеки забранен термин се открива или че качеството е на ниво носител на езика.