
Cotton
Translation workflow
Mengubah terjemahan yang dihasilkan menjadi hasil yang dapat ditinjau.
Alur kerja terjemahan untuk dialog gim.
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
Skor, percobaan ulang, dan tinjauan manusia, masing-masing di batasnya sendiri.
Pembuatan dan penilaian berbagi glosarium, dan kegagalan hard gate yang dilaporkan model penilai tidak dapat ditutupi oleh skor rata-rata. Status antara terjemahan dan penilaian dicatat, batas percobaan ulang dan biaya dipisahkan dari kredensial yang habis, dan job macet kembali ke antrean atau ke tinjauan sesuai penyebabnya.
Proyek kerja ini menghubungkan pembuatan terjemahan, penilaian kualitas yang dilaporkan model, percobaan ulang, dan tinjauan manusia dalam satu alur.
Dari awal repositori hingga pekerjaan yang dikonfirmasi selama keterlibatan
Aplikasi web berisi layar penyuntingan dan persetujuan terjemahan, API, dan worker job, berjalan di lingkungan pengembangan.
Pendaftaran → masuk
Masuk antrean setelah commit basis data; worker mengunci baris, memeriksa percobaan, dan membuat draft.
Sumber · locale targetData: sumberMasuk antrean setelah commit
API · pendaftaran jobSegmen sumber dan locale target proyek disimpan di basis data. Data pelanggan tidak ditampilkan.
Masuk antrean setelah commit
API · pendaftaran jobData: setelah commitBullMQ · ID jobAntrean jobSetelah commit basis data, job dengan ID bercakupan permintaan dimasukkan ke antrean untuk setiap locale target yang aktif. Bila gagal masuk antrean, hanya peringatan yang dicatat dan commit tidak dibatalkan (tanpa outbox atomik), itulah sebabnya penyapuan macet ada.
BullMQ · ID job
Antrean jobEksekusi · penilaian: kirim jobKunci baris · pemeriksaan percobaanMasuk jobBullMQ menyerahkan job ke worker secara asinkron.
Kunci baris · pemeriksaan percobaan
Masuk jobData: baris progresDraft · progresStatus terjemahanDi dalam transaksi, baris progres dikunci dan terjemahan draft dibuat. Percobaan ulang otomatis untuk job yang sudah difinalisasi atau dijeda karena kredensial dilewati; permintaan manual ditangani terpisah.
Kunci baris · pemeriksaan percobaan
Masuk jobEksekusi · penilaian: percobaan diizinkanHasilkan · panggilan modelGiliran terjemahanJumlah percobaan bertambah satu dalam batasnya, lalu giliran terjemahan dimulai.
Hasilkan → nilai → finalisasi
Pembuatan dan penilaian memakai glosarium yang sama; terjemahan dan penilaian dicatat terpisah, dan kode mengagregasi penilaian sebelum finalisasi.
Glosarium workspace
Glosarium · konteksData: glosariumHasilkan · panggilan modelGiliran terjemahanGlosarium dan konteks workspace dicari lalu diteruskan ke pembuatan terjemahan.
Glosarium workspace
Glosarium · konteksData: glosarium samaPanggilan model penilai · parseGiliran terjemahanPenilaian mendapat batasan glosarium yang sama.
Hasilkan · panggilan model
Giliran terjemahanData: Tx1 · terjemahanBaris terjemahan · penilaianStatus terjemahanModel dipanggil langsung atau melalui pivot en-US, dan panggilan, event, serta progres ditulis dalam satu transaksi. Bila job berjalan lagi setelah crash, panggilan terjemahan dan biayanya dapat berulang.
Panggilan model penilai · parse
Giliran terjemahanData: Tx2 · penilaianBaris terjemahan · penilaianStatus terjemahanSkor dan bukti penilai disisipkan sekali per terjemahan dan giliran; duplikat menemukan baris yang ada, dan kutipan hanya ditulis pada penyisipan pertama. Bukan transaksi yang sama dengan terjemahan.
Panggilan model penilai · parse
Giliran terjemahanData: skor · gateHard gate · rata-rata berbobotAturan putusanJawaban model penilai di-parse menjadi skor per dimensi dan hasil gate. Lolos tidaknya glosarium adalah hal yang dilaporkan model penilai.
Hard gate · rata-rata berbobot
Aturan putusanEksekusi · penilaian: putusanGiliran · biaya · quotaPercobaan ulang · pengeluaranSetiap kegagalan hard gate yang dilaporkan berarti nol dan gagal; baru setelah itu rata-rata berbobot dan ambang per dimensi diterapkan. Ambang keseluruhan 8.0 adalah nilai bawaan konfigurasi, bukan kualitas terjemahan yang teramati.
Giliran · biaya · quota
Percobaan ulang · pengeluaranEksekusi · penilaian: passTransaksi akhirFinalisasiYang lolos difinalisasi sebagai translated.
Transaksi akhir
FinalisasiData: catatan akhirStatus · log panggilanStatus terjemahanKandidat, status, skor, dan giliran difinalisasi, dan progress finalized serta log status ditulis dalam satu transaksi. Event terjemahan-selesai hanya dipancarkan untuk translated.
Percobaan ulang · batas pengeluaran
Tidak lolos berarti giliran lagi; batas berarti tinjauan manusia; quota atau autentikasi menghentikan pengeluaran dan menunggu operator melanjutkan.
Hard gate · rata-rata berbobot
Aturan putusanEksekusi · penilaian: putusanGiliran · biaya · quotaPercobaan ulang · pengeluaranSetiap kegagalan hard gate yang dilaporkan berarti nol dan gagal; baru setelah itu rata-rata berbobot dan ambang per dimensi diterapkan. Ambang keseluruhan 8.0 adalah nilai bawaan konfigurasi, bukan kualitas terjemahan yang teramati.
Giliran · biaya · quota
Percobaan ulang · pengeluaranEksekusi · penilaian: giliran berikutnyaHasilkan · panggilan modelGiliran terjemahanTerjemahan yang tidak lolos dibuat lagi bersama terjemahan dan kritik sebelumnya. Bahkan kegagalan hard gate dapat dicoba ulang lebih dahulu alih-alih langsung ke manusia.
Giliran · biaya · quota
Percobaan ulang · pengeluaranEksekusi · penilaian: batas · batalTinjauan manusiaBila giliran habis atau plafon biaya tercapai, job difinalisasi sebagai needs_review. Finalized berarti pemrosesan berakhir, bukan bahwa seseorang menyetujuinya.
Giliran · biaya · quota
Percobaan ulang · pengeluaranKegagalan · batas: quota · autentikasiPemeriksaan kredensialSinyal quota atau autentikasi menghentikan pengeluaran dan menetapkan needs_credential. Tidak ada peralihan otomatis ke akun atau penyedia lain. Kesalahan transport tanpa sinyal henti kembali ke percobaan ulang BullMQ.
Pemeriksaan kredensialEksekusi · penilaian: pelanjutan manualBullMQ · ID job
Antrean jobOperator yang telah memeriksa kredensial memulai ulang secara eksplisit.
Pemulihan job macet
Draft lama dipisahkan menurut alasan: hilang dari antrean berarti dimasukkan ulang, percobaan habis berarti keputusan manusia.
Draft · progres
Status terjemahanObservasi · laporan: draft macetDraft lebih dari 10 menit · maks 200Penyapuan macetHingga 200 kandidat yang menjadi draft lebih dari 10 menit dibaca, yang terlama lebih dulu. Kueri tidak mengunci dan pembaruan serta log berjalan sebagai pernyataan terpisah, sehingga ini tidak digambarkan sebagai batch tanpa race.
Draft lebih dari 10 menit · maks 200
Penyapuan macetEksekusi · penilaian: di bawah batasBandingkan status antreanPemeriksaan antreanDengan percobaan lebih sedikit dari batas (3), job dibandingkan dengan status antrean active, waiting, delayed, dan prioritized. Di dalam kode, cabang percobaan-habis datang sebelum pemeriksaan antrean ini.
Bandingkan status antrean
Pemeriksaan antreanEksekusi · penilaian: masuk ulang antreanBullMQ · ID jobAntrean jobBila job tidak ada di antrean, job dimasukkan lagi. API memakai ID dengan akhiran permintaan sementara penyapuan mencari ID segmen dan locale, sehingga ini tidak digambarkan cocok dengan setiap permintaan yang sedang berjalan.
Draft lebih dari 10 menit · maks 200
Penyapuan macetEksekusi · penilaian: ada hasilTinjauan manusiaDengan ketiga percobaan terpakai dan ada hasil terjemahan, job menuju needs_review.
Draft lebih dari 10 menit · maks 200
Penyapuan macetEksekusi · penilaian: tanpa hasilPemeriksaan kredensialDengan ketiga percobaan terpakai dan tanpa hasil, job menuju needs_credential.
Setiap koneksi dengan bobot yang sama. Pilih alur untuk menyorot hanya jalurnya, dengan langkah bernomor.
- Garis utuh · arah input, hasil, dan catatan
- Garis putus · eksekusi, penilaian, permintaan
- Titik panjang · observasi dan pelaporan, terpisah dari penilaian
- Strip pendek · kegagalan, berhenti, batas
- Garis hitam tebal · alur yang dipilih; angka menunjukkan urutan
- Kotak · batas kode atau status, namanya di bagian kepala
- Chip dalam · komponen dari batas itu
- Kotak bertitik · di luar batas itu
- Garis tepi oranye · tempat model memutuskan
- Pembuatan · pengeluaran · finalisasi
- Masuk · aturan putusan · penyapuan
- Antrean · status · catatan
- Pendaftaran · pemeriksaan antrean
Digambar dari catatan implementasi dan pengembangan privat. Data pelanggan dan path kode tidak ditampilkan.
- Satu penyapuan
- May 26, 2026, satu siklus penyapuan lingkungan pengembangan: 200 diperiksa, 106 transisi status, 2 dimasukkan ulang. Transisi status bukan terjemahan yang berhasil, dan pembagian 106 menurut status tujuan tidak tercatat.
- Mengapa bukan exactly once
- Catatan ditulis tanpa duplikat, tetapi bila job berjalan lagi setelah crash, panggilan model dan biayanya dapat berulang. Batas konkurensi berlaku per proses, bukan untuk seluruh klaster.
- Cakupan putusan
- Mencegah rata-rata menutupi kegagalan glosarium adalah aturan agregasi atas gate yang dilaporkan. Ini tidak membuktikan bahwa setiap istilah terlarang ditemukan atau bahwa kualitasnya setara penutur asli.