
Cotton
Translation workflow
Genererade översättningar blir resultat som kan granskas.
Ett översättningsarbetsflöde för speldialog.
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
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.
Registrering → ingång
Köas efter commit till databasen; en worker låser raden, kontrollerar försöket och skapar draften.
Källa · målspråkData: källaKöa efter commit
API · jobbregistreringKällsegment och projektets målspråk lagras i databasen. Kunddata visas inte.
Köa efter commit
API · 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.
BullMQ · jobb-ID
JobbköKörning · bedömning: leverera jobbRadlås · kontroll av försökIngång till jobbBullMQ lämnar över jobbet asynkront till en worker.
Radlås · kontroll av försök
Ingång till jobbData: förloppsradDraft · förloppÖversättningstillståndInom 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.
Radlås · kontroll av försök
Ingång till jobbKörning · bedömning: försök tillåtetGenerera · modellanropÖversättningsturAntalet 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.
Workspace-ordlista
Ordlista · kontextData: ordlistaGenerera · modellanropÖversättningsturWorkspace-ordlistan och kontexten slås upp och skickas vidare till genereringen.
Workspace-ordlista
Ordlista · kontextData: samma ordlistaAnrop till bedömarmodell · parsningÖversättningsturBedömningen får samma begränsningar från ordlistan.
Generera · modellanrop
ÖversättningsturData: Tx1 · översättningRader för översättning · bedömningÖversättningstillståndModellen 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.
Anrop till bedömarmodell · parsning
ÖversättningsturData: Tx2 · bedömningRader för översättning · bedömningÖversättningstillståndBedö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.
Anrop till bedömarmodell · parsning
ÖversättningsturData: poäng · gatesHard gate · viktat medelvärdeDomsreglerBedömarmodellens svar parsas till poäng per dimension och gate-resultat. Om ordlistan följdes är det bedömarmodellen som rapporterar.
Hard gate · viktat medelvärde
DomsreglerKörning · bedömning: domTurer · kostnad · kvotOmförsök · utgifterVarje 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.
Turer · kostnad · kvot
Omförsök · utgifterKörning · bedömning: passSlutlig transaktionSlutförandeEn godkänd översättning slutförs som translated.
Slutlig transaktion
SlutförandeData: slutlig postTillstånd · anropsloggÖversättningstillståndKandidat, 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.
Hard gate · viktat medelvärde
DomsreglerKörning · bedömning: domTurer · kostnad · kvotOmförsök · utgifterVarje 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.
Turer · kostnad · kvot
Omförsök · utgifterKörning · bedömning: nästa turGenerera · modellanropÖversättningsturEn ö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.
Turer · kostnad · kvot
Omförsök · utgifterKörning · bedömning: gräns · avbrytMänsklig granskningNä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.
Turer · kostnad · kvot
Omförsök · utgifterFel · gräns: kvot · autentiseringKontroll av autentiseringsuppgifterEn 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.
Kontroll av autentiseringsuppgifterKörning · bedömning: manuell återupptagningBullMQ · jobb-ID
Jobbkö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.
Draft · förlopp
ÖversättningstillståndObservation · rapport: hängande draftDrafts över 10 min · högst 200Städning av hängande jobbUpp 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.
Drafts över 10 min · högst 200
Städning av hängande jobbKörning · bedömning: under gränsenJämför kötillståndKökontrollMed 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.
Jämför kötillstånd
Kö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.
Drafts över 10 min · högst 200
Städning av hängande jobbKörning · bedömning: resultat finnsMänsklig granskningMed alla 3 försök förbrukade och ett översättningsresultat tillgängligt går jobbet till needs_review.
Drafts över 10 min · högst 200
Städning av hängande jobbKörning · bedömning: inget resultatKontroll av autentiseringsuppgifterMed 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å.