
Cotton
Translation workflow
Wygenerowane tłumaczenia zamienione w wyniki gotowe do przeglądu.
Przepływ tłumaczenia dialogów z gier.
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
Oceny, ponowienia i przegląd przez człowieka, każde na własnej granicy.
Generowanie i ocena dzielą glosariusz, a niespełnienia twardego kryterium zgłoszonego przez model oceniający nie może zrównoważyć średnia ocena. Pośrednie stany tłumaczenia i oceny są zapisywane, limity ponowień i kosztów są oddzielone od wyczerpanych poświadczeń, a zastałe zadania wracają do kolejki lub do przeglądu w zależności od przyczyny.
Ten projekt zawodowy łączy w jednym przepływie generowanie tłumaczeń, ocenę jakości zgłaszaną przez model, ponowienia i przegląd przez człowieka.
Od początku repozytorium do pracy potwierdzonej w okresie współpracy
Aplikacja webowa z ekranami edycji i zatwierdzania tłumaczeń, API i workerem zadań, działająca w środowisku deweloperskim.
Rejestracja → wejście
Kolejkowane po zatwierdzeniu w bazie danych; worker blokuje wiersz, sprawdza próbę i tworzy draft.
Źródło · języki doceloweDane: źródłoKolejkowanie po zatwierdzeniu
API · rejestracja zadańSegmenty źródłowe i docelowe języki projektu są zapisywane w bazie danych. Dane klienta nie są pokazywane.
Kolejkowanie po zatwierdzeniu
API · rejestracja zadańDane: po zatwierdzeniuBullMQ · ID zadaniaKolejka zadańPo zatwierdzeniu w bazie danych dla każdego aktywnego języka docelowego kolejkowane jest zadanie z ID określonym przez żądanie. Jeśli kolejkowanie się nie powiedzie, logowane jest tylko ostrzeżenie, a zatwierdzenie nie jest wycofywane (brak atomowego outboxa), dlatego istnieje skan zastałych.
BullMQ · ID zadania
Kolejka zadańUruchomienie · rozstrzygnięcie: dostarczenie zadaniaBlokada wiersza · sprawdzenie próbyWejście zadaniaBullMQ przekazuje zadanie workerowi asynchronicznie.
Blokada wiersza · sprawdzenie próby
Wejście zadaniaDane: wiersz postępuDraft · postępStan tłumaczeniaW transakcji blokowany jest wiersz postępu i tworzone jest robocze tłumaczenie. Automatyczne ponowienia zadań sfinalizowanych lub wstrzymanych z powodu poświadczeń są pomijane; żądania ręczne są obsługiwane osobno.
Blokada wiersza · sprawdzenie próby
Wejście zadaniaUruchomienie · rozstrzygnięcie: próba dozwolonaGenerowanie · wywołanie modeluTura tłumaczeniaLicznik prób rośnie o jeden w ramach limitu, po czym zaczyna się tura tłumaczenia.
Generowanie → ocena → finalizacja
Generowanie i ocena używają tego samego glosariusza; tłumaczenie i ocena są zapisywane osobno, a kod agreguje ocenę przed finalizacją.
Glosariusz przestrzeni roboczej
Glosariusz · kontekstDane: glosariuszGenerowanie · wywołanie modeluTura tłumaczeniaGlosariusz przestrzeni roboczej i kontekst są wyszukiwane i przekazywane do generowania.
Glosariusz przestrzeni roboczej
Glosariusz · kontekstDane: ten sam glosariuszWywołanie modelu oceniającego · parsowanieTura tłumaczeniaOcena otrzymuje te same ograniczenia glosariusza.
Generowanie · wywołanie modelu
Tura tłumaczeniaDane: Tx1 · tłumaczenieWiersze tłumaczeń · ocenStan tłumaczeniaModel jest wywoływany bezpośrednio lub przez pivot en-US, a wywołanie, zdarzenie i postęp są zapisywane w jednej transakcji. Jeśli zadanie zostanie uruchomione ponownie po awarii, wywołanie tłumaczące i jego koszt mogą się powtórzyć.
Wywołanie modelu oceniającego · parsowanie
Tura tłumaczeniaDane: Tx2 · ocenaWiersze tłumaczeń · ocenStan tłumaczeniaOceny sędziego i dowody są wstawiane raz na tłumaczenie i turę; duplikat odnajduje istniejący wiersz, a cytowania są zapisywane tylko przy pierwszym wstawieniu. To nie ta sama transakcja co tłumaczenie.
Wywołanie modelu oceniającego · parsowanie
Tura tłumaczeniaDane: oceny · kryteriaTwarde kryterium · średnia ważonaReguły werdyktuOdpowiedź modelu oceniającego jest parsowana na oceny dla poszczególnych wymiarów i wyniki kryteriów. To, czy glosariusz przeszedł, zgłasza model oceniający.
Twarde kryterium · średnia ważona
Reguły werdyktuUruchomienie · rozstrzygnięcie: werdyktTury · koszt · quotaPonowienia · wydatkiKażde zgłoszone niespełnienie twardego kryterium oznacza zero i porażkę; dopiero potem stosowane są średnia ważona i progi dla wymiarów. Ogólny próg 8.0 to wartość domyślna konfiguracji, a nie zaobserwowana jakość tłumaczenia.
Tury · koszt · quota
Ponowienia · wydatkiUruchomienie · rozstrzygnięcie: passTransakcja końcowaFinalizacjaZaliczenie jest finalizowane jako translated.
Transakcja końcowa
FinalizacjaDane: zapis końcowyStan · log wywołańStan tłumaczeniaKandydat, stan, ocena i tury są finalizowane, a postęp finalized i log stanu są zapisywane w jednej transakcji. Zdarzenie ukończenia tłumaczenia jest emitowane tylko dla translated.
Ponowienia · limity wydatków
Brak zaliczenia oznacza kolejną turę; limit oznacza przegląd przez człowieka; quota lub uwierzytelnienie wstrzymuje wydatki i czeka na wznowienie przez operatora.
Twarde kryterium · średnia ważona
Reguły werdyktuUruchomienie · rozstrzygnięcie: werdyktTury · koszt · quotaPonowienia · wydatkiKażde zgłoszone niespełnienie twardego kryterium oznacza zero i porażkę; dopiero potem stosowane są średnia ważona i progi dla wymiarów. Ogólny próg 8.0 to wartość domyślna konfiguracji, a nie zaobserwowana jakość tłumaczenia.
Tury · koszt · quota
Ponowienia · wydatkiUruchomienie · rozstrzygnięcie: kolejna turaGenerowanie · wywołanie modeluTura tłumaczeniaTłumaczenie, które nie przejdzie, jest generowane ponownie z poprzednim tłumaczeniem i uwagami krytycznymi. Nawet niespełnienie twardego kryterium może najpierw dostać ponowienie, zamiast od razu trafić do człowieka.
Tury · koszt · quota
Ponowienia · wydatkiUruchomienie · rozstrzygnięcie: limit · przerwaniePrzegląd przez człowiekaGdy wyczerpią się tury lub zostanie osiągnięty pułap kosztów, zadanie jest finalizowane jako needs_review. Sfinalizowane oznacza zakończenie przetwarzania, a nie zatwierdzenie przez człowieka.
Tury · koszt · quota
Ponowienia · wydatkiAwaria · limit: quota · uwierzytelnienieSprawdzenie poświadczeńSygnał quota lub uwierzytelnienia wstrzymuje wydatki i ustawia needs_credential. Nie ma automatycznego przełączenia na inne konto ani dostawcę. Błędy transportu bez sygnału wstrzymania wracają do ponowień BullMQ.
Sprawdzenie poświadczeńUruchomienie · rozstrzygnięcie: ręczne wznowienieBullMQ · ID zadania
Kolejka zadańOperator, który sprawdził poświadczenia, jawnie uruchamia ponownie.
Przywracanie zastałych zadań
Stare drafty są dzielone według przyczyny: brak w kolejce oznacza ponowne kolejkowanie, wykorzystane próby oznaczają decyzję człowieka.
Draft · postęp
Stan tłumaczeniaObserwacja · raport: zastały draftDrafty starsze niż 10 min · najwyżej 200Skan zastałychOdczytywanych jest najwyżej 200 kandydatów, którzy są draftami od ponad 10 minut, od najstarszych. Zapytanie nie zakłada blokady, a aktualizacje i logi działają jako osobne instrukcje, więc nie jest to opisywane jako partia wolna od wyścigów.
Drafty starsze niż 10 min · najwyżej 200
Skan zastałychUruchomienie · rozstrzygnięcie: poniżej limituPorównanie stanu kolejkiKontrola kolejkiGdy prób jest mniej niż limit (3), zadanie jest porównywane ze stanami kolejki active, waiting, delayed i prioritized. W kodzie gałąź wyczerpanych prób poprzedza tę kontrolę kolejki.
Porównanie stanu kolejki
Kontrola kolejkiUruchomienie · rozstrzygnięcie: ponowne kolejkowanieBullMQ · ID zadaniaKolejka zadańJeśli zadania nie ma w kolejce, jest kolejkowane ponownie. API używa ID z sufiksem żądania, a skan szuka ID segmentu i języka, więc nie jest to opisywane jako dopasowanie każdego trwającego żądania.
Drafty starsze niż 10 min · najwyżej 200
Skan zastałychUruchomienie · rozstrzygnięcie: wynik istniejePrzegląd przez człowiekaGdy wykorzystano wszystkie 3 próby i istnieje wynik tłumaczenia, zadanie trafia do needs_review.
Drafty starsze niż 10 min · najwyżej 200
Skan zastałychUruchomienie · rozstrzygnięcie: brak wynikuSprawdzenie poświadczeńGdy wykorzystano wszystkie 3 próby i nie ma wyniku, zadanie trafia do needs_credential.
Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.
- Linia ciągła · kierunek wejścia, wyników i zapisów
- Linia przerywana · uruchomienie, rozstrzygnięcie, żądanie
- Długie kropki · obserwacja i raportowanie, oddzielnie od rozstrzygnięcia
- Krótkie kreski · awaria, zatrzymanie, limit
- Gruba czarna linia · wybrany przepływ; liczby podają kolejność
- Ramka · granica kodu lub stanu, nazwana w nagłówku
- Wewnętrzny element · komponent tej granicy
- Kropkowana ramka · poza tą granicą
- Pomarańczowy obrys · miejsce, w którym decyduje model
- Generowanie · wydatki · finalizacja
- Wejście · reguły werdyktu · skan
- Kolejka · stan · zapisy
- Rejestracja · kontrola kolejki
Narysowano na podstawie niepublicznych zapisów implementacji i rozwoju. Dane klienta i ścieżki kodu nie są pokazane.
- Jeden skan
- May 26, 2026, jeden cykl skanu w środowisku deweloperskim: 200 sprawdzonych, 106 przejść stanu, 2 ponownie zakolejkowane. Przejście stanu nie jest udanym tłumaczeniem, a podział 106 według stanu docelowego nie został zapisany.
- Dlaczego nie dokładnie raz
- Zapisy powstają bez duplikatów, ale jeśli zadanie zostanie uruchomione ponownie po awarii, wywołania modelu i ich koszt mogą się powtórzyć. Limit współbieżności obowiązuje na proces, a nie w całym klastrze.
- Zakres werdyktu
- Niedopuszczenie, by średnia przykryła naruszenie glosariusza, to reguła agregacji zgłoszonych kryteriów. Nie dowodzi, że wykryty zostanie każdy zakazany termin ani że jakość jest na poziomie natywnym.