Usměvavá postavička bavlny z původního loga Cotton, bez pozadí a nápisu
Zpět do sálu

Cotton

Translation workflow

Vygenerované překlady jako výsledky připravené k revizi.

Pracovní postup pro překlad dialogů ve hrách.

2026.05.06 — 2026.05.26

Pracovní projekt · zpracování, posuzování a cesta revize překladů

  • Webová aplikaceImplementováno · vývojové prostředí

Cotton vocabulary

Lens
Refinement Loop
Translation
Quality Estimation
Workflow
Job Control
Human Review
  1. prompt layers
  2. glossary
  3. generation
  4. revision
  1. judge
  2. hard gate
  3. score
  1. intake
  2. checkpoint
  3. spend control
  4. stale sweep
  1. approval
  2. correction
  3. 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

Skóre, opakování a lidská revize, každé na vlastní hranici.

Generování a hodnocení sdílejí glosář a nesplnění tvrdého kritéria nahlášené hodnoticím modelem nemůže vyrovnat průměrné skóre. Mezistavy překladu a hodnocení se zaznamenávají, limity opakování a nákladů jsou odděleny od vyčerpaných přihlašovacích údajů a uvízlé úlohy se vracejí do fronty nebo k revizi podle příčiny.

Tento pracovní projekt spojuje v jednom toku generování překladů, hodnocení kvality hlášené modelem, opakování a lidskou revizi.

Od založení repozitáře po práci potvrzenou během spolupráce

Webová aplikace s obrazovkami pro úpravu a schvalování překladů, API a workerem úloh, běžící ve vývojovém prostředí.

Mapa toku rozhodování · z neveřejných záznamů implementace
Cotton: hodnocení překladů · opakování · obnovaAPI zapíše do databáze zdrojový text a cílové jazyky a pak zařadí do fronty úlohu pro každý cílový jazyk. Worker uzamkne řádek, zkontroluje pokus, vytvoří draft a stav postupu, vygeneruje překlad s glosářem a zvlášť zavolá hodnoticí model se stejným glosářem. Překlad (Tx1) a hodnocení s doklady (Tx2) se zaznamenávají v samostatných transakcích. Kód agreguje hodnocení tak, aby nesplnění tvrdého kritéria nevyrovnal průměr: úspěch se finalizuje, neúspěch dostane další tah, limit tahů nebo nákladů ho pošle k lidské revizi a signál kvóty nebo autentizace zastaví výdaje a čeká na kontrolu přihlašovacích údajů. Kontrola uvízlých prochází nejvýše 200 draftů starších než 10 minut: draft se zbývajícími pokusy, který ve frontě chybí, se znovu zařadí a draft s vyčerpanými pokusy jde k revizi nebo kontrole přihlašovacích údajů podle toho, zda existuje výsledek.Zdroj · cílové jazykyUložené segmentyLidská revizeneeds_review · nikoli schváleníKontrola přihlašovacích údajůneeds_credentialAPI · registrace úlohZařazení do fronty po zápisuFronta úlohBullMQ · ID úlohyVstup úlohyZámek řádku · kontrola pokusuGlosář · kontextGlosář pracovního prostoruTah překladuGenerování · volání modeluVolání hodnoticího modelu · parsováníPravidla rozhodnutíTvrdé kritérium · vážený průměrOpakování · výdajeTahy · náklady · kvótaStav překladuDraft · postupŘádky překladů · hodnoceníStav · log voláníFinalizaceZávěrečná transakceKontrola frontyPorovnání stavu frontyKontrola uvízlýchDrafty starší než 10 min · nejvýše 200Vstup · frontaGenerování · hodnoceníStav · přijetíObnova · lidské rozhodnutí1zdroj2po zápisu3 doručení úlohy · BullMQ · ID úlohy → Zámek řádku · kontrola pokusu34řádek postupu5pokus povolen1glosář2 stejný glosář · Glosář pracovního prostoru → Volání hodnoticího modelu · parsování23Tx1 · překlad4Tx2 · hodnocení5 skóre · kritéria · Volání hodnoticího modelu · parsování → Tvrdé kritérium · vážený průměr56 rozhodnutí · Tvrdé kritérium · vážený průměr → Tahy · náklady · kvóta67pass8konečný záznam1 rozhodnutí · Tvrdé kritérium · vážený průměr → Tahy · náklady · kvóta12další tah3limit · přerušení4kvóta · autentizace5ruční obnovení1uvízlý draft2pod limitem3nové zařazení4 výsledek existuje · Drafty starší než 10 min · nejvýše 200 → Lidská revize45bez výsledku

Registrace → vstup

Zařazeno do fronty po zápisu do databáze; worker uzamkne řádek, zkontroluje pokus a vytvoří draft.

  1. Zdroj · cílové jazykyÚdaje: zdrojZařazení do fronty po zápisuAPI · registrace úloh

    Zdrojové segmenty a cílové jazyky projektu se ukládají do databáze. Data zákazníka se nezobrazují.

  2. Zařazení do fronty po zápisuAPI · registrace úlohÚdaje: po zápisuBullMQ · ID úlohyFronta úloh

    Po zápisu do databáze se pro každý aktivní cílový jazyk zařadí úloha s ID určeným požadavkem. Pokud zařazení selže, zaloguje se jen varování a zápis se nevrací (bez atomického outboxu), proto existuje kontrola uvízlých.

  3. BullMQ · ID úlohyFronta úlohSpuštění · rozhodnutí: doručení úlohyZámek řádku · kontrola pokusuVstup úlohy

    BullMQ předá úlohu workeru asynchronně.

  4. Zámek řádku · kontrola pokusuVstup úlohyÚdaje: řádek postupuDraft · postupStav překladu

    V transakci se uzamkne řádek postupu a vytvoří se rozpracovaný překlad. Automatická opakování finalizovaných úloh nebo úloh pozastavených kvůli přihlašovacím údajům se přeskakují; ruční požadavky se zpracovávají zvlášť.

  5. Zámek řádku · kontrola pokusuVstup úlohySpuštění · rozhodnutí: pokus povolenGenerování · volání modeluTah překladu

    Počet pokusů se v rámci limitu zvýší o jeden a pak začne tah překladu.

Generování → hodnocení → finalizace

Generování i hodnocení používají stejný glosář; překlad a hodnocení se zaznamenávají zvlášť a kód hodnocení před finalizací agreguje.

  1. Glosář pracovního prostoruGlosář · kontextÚdaje: glosářGenerování · volání modeluTah překladu

    Glosář pracovního prostoru a kontext se vyhledají a předají generování.

  2. Glosář pracovního prostoruGlosář · kontextÚdaje: stejný glosářVolání hodnoticího modelu · parsováníTah překladu

    Hodnocení dostává stejná omezení glosáře.

  3. Generování · volání modeluTah překladuÚdaje: Tx1 · překladŘádky překladů · hodnoceníStav překladu

    Model se volá přímo nebo přes pivot en-US a volání, událost i postup se zapíší v jedné transakci. Pokud se úloha po pádu spustí znovu, překladové volání i jeho náklady se mohou opakovat.

  4. Volání hodnoticího modelu · parsováníTah překladuÚdaje: Tx2 · hodnoceníŘádky překladů · hodnoceníStav překladu

    Skóre soudce a doklady se vkládají jednou na překlad a tah; duplicita najde existující řádek a citace se zapisují jen při prvním vložení. Nejde o stejnou transakci jako u překladu.

  5. Volání hodnoticího modelu · parsováníTah překladuÚdaje: skóre · kritériaTvrdé kritérium · vážený průměrPravidla rozhodnutí

    Odpověď hodnoticího modelu se parsuje na skóre podle dimenzí a výsledky kritérií. Zda glosář prošel, hlásí hodnoticí model.

  6. Tvrdé kritérium · vážený průměrPravidla rozhodnutíSpuštění · rozhodnutí: rozhodnutíTahy · náklady · kvótaOpakování · výdaje

    Jakékoli nahlášené nesplnění tvrdého kritéria znamená nulu a neúspěch; teprve pak se uplatní vážený průměr a prahy dimenzí. Celkový práh 8.0 je výchozí hodnota konfigurace, nikoli pozorovaná kvalita překladu.

  7. Tahy · náklady · kvótaOpakování · výdajeSpuštění · rozhodnutí: passZávěrečná transakceFinalizace

    Úspěch se finalizuje jako translated.

  8. Závěrečná transakceFinalizaceÚdaje: konečný záznamStav · log voláníStav překladu

    Kandidát, stav, skóre a tahy se finalizují a postup finalized a log stavu se zapíší v jedné transakci. Událost dokončení překladu se vyšle jen pro translated.

Opakování · limity výdajů

Neúspěch znamená další tah; limit znamená lidskou revizi; kvóta nebo autentizace zastaví výdaje a čeká na obnovení operátorem.

  1. Tvrdé kritérium · vážený průměrPravidla rozhodnutíSpuštění · rozhodnutí: rozhodnutíTahy · náklady · kvótaOpakování · výdaje

    Jakékoli nahlášené nesplnění tvrdého kritéria znamená nulu a neúspěch; teprve pak se uplatní vážený průměr a prahy dimenzí. Celkový práh 8.0 je výchozí hodnota konfigurace, nikoli pozorovaná kvalita překladu.

  2. Tahy · náklady · kvótaOpakování · výdajeSpuštění · rozhodnutí: další tahGenerování · volání modeluTah překladu

    Překlad, který neprojde, se vygeneruje znovu s předchozím překladem a kritikou. I nesplnění tvrdého kritéria může dostat nejprve opakování, místo aby šlo rovnou k člověku.

  3. Tahy · náklady · kvótaOpakování · výdajeSpuštění · rozhodnutí: limit · přerušeníLidská revize

    Když dojdou tahy nebo je dosažen strop nákladů, úloha se finalizuje jako needs_review. Finalizováno znamená, že zpracování skončilo, ne že ho člověk schválil.

  4. Tahy · náklady · kvótaOpakování · výdajeSelhání · limit: kvóta · autentizaceKontrola přihlašovacích údajů

    Signál kvóty nebo autentizace zastaví výdaje a nastaví needs_credential. Automatické přepnutí na jiný účet nebo poskytovatele neexistuje. Chyby přenosu bez signálu zastavení se vracejí k opakování v BullMQ.

  5. Kontrola přihlašovacích údajůSpuštění · rozhodnutí: ruční obnoveníBullMQ · ID úlohyFronta úloh

    Operátor, který zkontroloval přihlašovací údaje, výslovně spustí práci znovu.

Obnova uvízlých úloh

Staré drafty se dělí podle příčiny: chybějící ve frontě se znovu zařadí, vyčerpané pokusy vedou k lidskému rozhodnutí.

  1. Draft · postupStav překladuPozorování · zpráva: uvízlý draftDrafty starší než 10 min · nejvýše 200Kontrola uvízlých

    Čte se nejvýše 200 kandidátů, kteří jsou drafty déle než 10 minut, od nejstarších. Dotaz nezamyká a aktualizace a logy běží jako samostatné příkazy, proto se nepopisuje jako dávka bez souběhů.

  2. Drafty starší než 10 min · nejvýše 200Kontrola uvízlýchSpuštění · rozhodnutí: pod limitemPorovnání stavu frontyKontrola fronty

    Při menším počtu pokusů než limit (3) se úloha porovná se stavy fronty active, waiting, delayed a prioritized. V kódu předchází větev vyčerpaných pokusů této kontrole fronty.

  3. Porovnání stavu frontyKontrola frontySpuštění · rozhodnutí: nové zařazeníBullMQ · ID úlohyFronta úloh

    Pokud úloha ve frontě není, zařadí se znovu. API používá ID s příponou požadavku, zatímco kontrola hledá ID segmentu a jazyka, proto se nepopisuje jako shoda s každým probíhajícím požadavkem.

  4. Drafty starší než 10 min · nejvýše 200Kontrola uvízlýchSpuštění · rozhodnutí: výsledek existujeLidská revize

    Když jsou vyčerpány všechny 3 pokusy a výsledek překladu existuje, úloha jde do needs_review.

  5. Drafty starší než 10 min · nejvýše 200Kontrola uvízlýchSpuštění · rozhodnutí: bez výsledkuKontrola přihlašovacích údajů

    Když jsou vyčerpány všechny 3 pokusy a výsledek neexistuje, úloha jde do needs_credential.

Každé spojení se stejnou váhou. Výběr toku zvýrazní jen jeho cestu s očíslovanými kroky.

  • Plná čára · směr vstupu, výsledků a záznamů
  • Přerušovaná čára · spuštění, rozhodnutí, požadavek
  • Dlouhé tečky · pozorování a vykazování, odděleně od rozhodnutí
  • Krátké čárky · selhání, zastavení, limit
  • Silná černá čára · zvolený tok; čísla udávají pořadí
  • Rámeček · hranice kódu nebo stavu, pojmenovaná v záhlaví
  • Vnitřní štítek · komponenta této hranice
  • Tečkovaný rámeček · mimo tuto hranici
  • Oranžový obrys · místo, kde rozhoduje model
  • Generování · výdaje · finalizace
  • Vstup · pravidla rozhodnutí · kontrola
  • Fronta · stav · záznamy
  • Registrace · kontrola fronty

Nakresleno podle neveřejných záznamů implementace a vývoje. Data zákazníka a cesty kódu se nezobrazují.

Jedna kontrola
May 26, 2026, jeden cyklus kontroly ve vývojovém prostředí: 200 prověřeno, 106 přechodů stavu, 2 znovu ve frontě. Přechod stavu není úspěšným překladem a rozdělení 106 podle cílového stavu není zaznamenáno.
Proč ne právě jednou
Záznamy vznikají bez duplicit, ale pokud se úloha po pádu spustí znovu, volání modelu i jejich náklady se mohou opakovat. Limit souběžnosti platí na proces, ne pro celý cluster.
Rozsah rozhodnutí
To, že průměr nepřekryje porušení glosáře, je pravidlo agregace nahlášených kritérií. Nedokazuje, že bude nalezen každý zakázaný výraz ani že kvalita odpovídá rodilému mluvčímu.