Leende bomullsfigur från den ursprungliga Cotton-logotypen, med bakgrund och text borttagna
Tillbaka till salen

Cotton

Translation workflow

Genererade översättningar blir resultat som kan granskas.

Ett översättningsarbetsflöde för speldialog.

2026.05.06 — 2026.05.26

Arbetsprojekt · översättningsbearbetning, bedömning och granskningsväg

  • WebbappImplementerad · utveckling

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

Poäng, omförsök och mänsklig granskning, var och en vid sin egen gräns.

Generering och bedömning delar ordlistan, och ett hard gate-fel som bedömarmodellen rapporterar kan inte vägas upp av medelpoängen. Mellanliggande tillstånd för översättning och bedömning registreras, gränser för omförsök och kostnad hålls isär från förbrukade autentiseringsuppgifter, och hängande jobb återgår till kön eller till granskning beroende på orsaken.

Detta arbetsprojekt kopplar samman generering av översättningar, kvalitetsbedömning som rapporteras av en modell, omförsök och mänsklig granskning i ett flöde.

Från repositoryts start till det arbete som bekräftats under uppdraget

En webbapp med skärmar för redigering och godkännande av översättningar, ett API och en jobb-worker, som körs i utvecklingsmiljön.

Karta över bedömningsflödet · utifrån privata implementationsloggar
Cotton: bedömning av översättningar · omförsök · återställningAPI:et committar källtexten och målspråken till databasen och köar sedan ett jobb per målspråk. En worker låser raden, kontrollerar försöket, skapar draft- och förloppstillståndet, genererar en översättning med ordlistan och anropar separat en bedömarmodell med samma ordlista. Översättningen (Tx1) och bedömningen med dess belägg (Tx2) registreras i separata transaktioner. Koden aggregerar bedömningen så att ett hard gate-fel inte vägs upp av medelvärdet: en godkänd översättning slutförs, en underkänd får en tur till, gränsen för turer eller kostnad skickar den till mänsklig granskning, och en kvot- eller autentiseringssignal stoppar utgifterna och väntar på en kontroll av autentiseringsuppgifter. En städning av hängande jobb går igenom upp till 200 drafts äldre än 10 minuter: en med försök kvar som saknas i kön köas om, och en med förbrukade försök går till granskning eller kontroll av autentiseringsuppgifter beroende på om ett resultat finns.Källa · målspråkLagrade segmentMänsklig granskningneeds_review · inte godkännandeKontroll av autentiseringsuppgifterneeds_credentialAPI · jobbregistreringKöa efter commitJobbköBullMQ · jobb-IDIngång till jobbRadlås · kontroll av försökOrdlista · kontextWorkspace-ordlistaÖversättningsturGenerera · modellanropAnrop till bedömarmodell · parsningDomsreglerHard gate · viktat medelvärdeOmförsök · utgifterTurer · kostnad · kvotÖversättningstillståndDraft · förloppRader för översättning · bedömningTillstånd · anropsloggSlutförandeSlutlig transaktionKökontrollJämför kötillståndStädning av hängande jobbDrafts över 10 min · högst 200Indata · köGenerering · bedömningTillstånd · godtagandeÅterställning · mänskligt beslut1källa2 efter commit · Köa efter commit → BullMQ · jobb-ID23 leverera jobb · BullMQ · jobb-ID → Radlås · kontroll av försök34förloppsrad5försök tillåtet1ordlista2 samma ordlista · Workspace-ordlista → Anrop till bedömarmodell · parsning23Tx1 · översättning4Tx2 · bedömning5 poäng · gates · Anrop till bedömarmodell · parsning → Hard gate · viktat medelvärde56dom7pass8slutlig post1dom2nästa tur3gräns · avbryt4kvot · autentisering5manuell återupptagning1hängande draft2 under gränsen · Drafts över 10 min · högst 200 → Jämför kötillstånd23köa om4 resultat finns · Drafts över 10 min · högst 200 → Mänsklig granskning45inget resultat

Registrering → ingång

Köas efter commit till databasen; en worker låser raden, kontrollerar försöket och skapar draften.

  1. Källa · målspråkData: källaKöa efter commitAPI · jobbregistrering

    Källsegment och projektets målspråk lagras i databasen. Kunddata visas inte.

  2. Köa efter commitAPI · jobbregistreringData: efter commitBullMQ · jobb-IDJobbkö

    Efter commit till databasen köas ett jobb per aktivt målspråk med ett ID som bestäms per begäran. Om köandet misslyckas loggas bara en varning och commiten rullas inte tillbaka (ingen atomär outbox); därför finns städningen av hängande jobb.

  3. BullMQ · jobb-IDJobbköKörning · bedömning: leverera jobbRadlås · kontroll av försökIngång till jobb

    BullMQ lämnar över jobbet asynkront till en worker.

  4. Radlås · kontroll av försökIngång till jobbData: förloppsradDraft · förloppÖversättningstillstånd

    Inom en transaktion låses förloppsraden och en draft-översättning skapas. Automatiska omförsök för jobb som redan slutförts eller pausats på grund av autentiseringsuppgifter hoppas över; manuella förfrågningar hanteras separat.

  5. Radlås · kontroll av försökIngång till jobbKörning · bedömning: försök tillåtetGenerera · modellanropÖversättningstur

    Antalet försök ökas med ett inom gränsen, och sedan startar översättningsturen.

Generera → bedöm → slutför

Generering och bedömning använder samma ordlista; översättningen och bedömningen registreras var för sig, och koden aggregerar bedömningen före slutförandet.

  1. Workspace-ordlistaOrdlista · kontextData: ordlistaGenerera · modellanropÖversättningstur

    Workspace-ordlistan och kontexten slås upp och skickas vidare till genereringen.

  2. Workspace-ordlistaOrdlista · kontextData: samma ordlistaAnrop till bedömarmodell · parsningÖversättningstur

    Bedömningen får samma begränsningar från ordlistan.

  3. Generera · modellanropÖversättningsturData: Tx1 · översättningRader för översättning · bedömningÖversättningstillstånd

    Modellen anropas direkt eller via en en-US-pivot, och anrop, händelse och förlopp skrivs i en transaktion. Om jobbet körs igen efter en krasch kan översättningsanropet och dess kostnad upprepas.

  4. Anrop till bedömarmodell · parsningÖversättningsturData: Tx2 · bedömningRader för översättning · bedömningÖversättningstillstånd

    Bedömarens poäng och belägg infogas en gång per översättning och tur; en dubblett hittar den befintliga raden, och citat skrivs bara vid den första infogningen. Inte samma transaktion som översättningen.

  5. Anrop till bedömarmodell · parsningÖversättningsturData: poäng · gatesHard gate · viktat medelvärdeDomsregler

    Bedömarmodellens svar parsas till poäng per dimension och gate-resultat. Om ordlistan följdes är det bedömarmodellen som rapporterar.

  6. Hard gate · viktat medelvärdeDomsreglerKörning · bedömning: domTurer · kostnad · kvotOmförsök · utgifter

    Varje rapporterat hard gate-fel innebär noll och underkänt; först därefter tillämpas det viktade medelvärdet och tröskelvärdena per dimension. Den samlade tröskeln 8.0 är ett standardvärde i konfigurationen, inte en observerad översättningskvalitet.

  7. Turer · kostnad · kvotOmförsök · utgifterKörning · bedömning: passSlutlig transaktionSlutförande

    En godkänd översättning slutförs som translated.

  8. Slutlig transaktionSlutförandeData: slutlig postTillstånd · anropsloggÖversättningstillstånd

    Kandidat, tillstånd, poäng och turer slutförs, och förloppet finalized samt tillståndsloggen skrivs i en transaktion. En händelse om slutförd översättning skickas bara för translated.

Omförsök · utgiftsgränser

Underkänt betyder en tur till, en gräns betyder mänsklig granskning, och kvot eller autentisering stoppar utgifterna och väntar på att en operatör återupptar.

  1. Hard gate · viktat medelvärdeDomsreglerKörning · bedömning: domTurer · kostnad · kvotOmförsök · utgifter

    Varje rapporterat hard gate-fel innebär noll och underkänt; först därefter tillämpas det viktade medelvärdet och tröskelvärdena per dimension. Den samlade tröskeln 8.0 är ett standardvärde i konfigurationen, inte en observerad översättningskvalitet.

  2. Turer · kostnad · kvotOmförsök · utgifterKörning · bedömning: nästa turGenerera · modellanropÖversättningstur

    En översättning som inte godkänns genereras igen med den föregående översättningen och kritiken. Även ett hard gate-fel kan först prövas igen i stället för att gå direkt till en människa.

  3. Turer · kostnad · kvotOmförsök · utgifterKörning · bedömning: gräns · avbrytMänsklig granskning

    När turerna tar slut eller kostnadstaket nås slutförs jobbet som needs_review. Tillståndet finalized betyder att bearbetningen avslutades, inte att en människa godkände det.

  4. Turer · kostnad · kvotOmförsök · utgifterFel · gräns: kvot · autentiseringKontroll av autentiseringsuppgifter

    En kvot- eller autentiseringssignal stoppar utgifterna och sätter needs_credential. Inget automatiskt byte till ett annat konto eller en annan leverantör sker. Transportfel utan stoppsignal går tillbaka till omförsök i BullMQ.

  5. Kontroll av autentiseringsuppgifterKörning · bedömning: manuell återupptagningBullMQ · jobb-IDJobbkö

    En operatör som har kontrollerat autentiseringsuppgifterna startar om uttryckligen.

Återställning av hängande jobb

Gamla drafts delas upp efter orsak: saknas de i kön köas de om; är försöken förbrukade går de till ett mänskligt beslut.

  1. Draft · förloppÖversättningstillståndObservation · rapport: hängande draftDrafts över 10 min · högst 200Städning av hängande jobb

    Upp till 200 kandidater som har varit drafts i över 10 minuter läses, äldst först. Frågan tar inget lås och uppdateringar och loggar körs som separata satser, så detta beskrivs inte som en batch fri från race conditions.

  2. Drafts över 10 min · högst 200Städning av hängande jobbKörning · bedömning: under gränsenJämför kötillståndKökontroll

    Med färre försök än gränsen (3) jämförs jobbet med kötillstånden active, waiting, delayed och prioritized. I koden kommer grenen för förbrukade försök före denna kökontroll.

  3. Jämför kötillståndKökontrollKörning · bedömning: köa omBullMQ · jobb-IDJobbkö

    Om jobbet inte finns i kön köas det om. API:et använder ID:n med ett förfrågningssuffix medan städningen söker efter segment- och språk-ID, så den beskrivs inte som att den träffar varje pågående förfrågan.

  4. Drafts över 10 min · högst 200Städning av hängande jobbKörning · bedömning: resultat finnsMänsklig granskning

    Med alla 3 försök förbrukade och ett översättningsresultat tillgängligt går jobbet till needs_review.

  5. Drafts över 10 min · högst 200Städning av hängande jobbKörning · bedömning: inget resultatKontroll av autentiseringsuppgifter

    Med alla 3 försök förbrukade och inget resultat går jobbet till needs_credential.

Alla kopplingar med samma tjocklek. Välj ett flöde för att bara markera dess väg, med numrerade steg.

  • Heldragen · riktning för indata, resultat och loggar
  • Streckad · körning, bedömning, begäran
  • Långa prickar · observation och rapportering, skilt från bedömning
  • Korta streck · fel, stopp, gräns
  • Kraftig svart linje · det valda flödet; siffrorna anger ordningen
  • Ruta · kod- eller tillståndsgräns, namngiven i rubriken
  • Inre chip · en komponent inom gränsen
  • Prickad ruta · utanför gränsen
  • Orange kontur · där en modell fattar beslut
  • Generering · utgifter · slutförande
  • Ingång · domsregler · städning
  • Kö · tillstånd · loggar
  • Registrering · kökontroll

Ritad utifrån privata implementations- och utvecklingsloggar. Kunddata och kodsökvägar visas inte.

En städning
26 maj 2026, en städcykel i utvecklingsmiljön: 200 kontrollerade, 106 tillståndsövergångar, 2 köade om. En tillståndsövergång är ingen lyckad översättning, och fördelningen av de 106 per måltillstånd är inte registrerad.
Varför inte exakt en gång
Poster skrivs utan dubbletter, men om ett jobb körs igen efter en krasch kan modellanrop och deras kostnader upprepas. Gränsen för samtidighet gäller per process, inte för hela klustret.
Domens räckvidd
Att ett medelvärde inte kan dölja ett ordlistefel är en aggregeringsregel över rapporterade gates. Det bevisar inte att alla förbjudna termer hittas eller att kvaliteten håller modersmålsnivå.