Karakter kapas tersenyum dari logo Cotton asli, dengan latar dan tulisan dihapus
Kembali ke ruang pamer

Cotton

Translation workflow

Mengubah terjemahan yang dihasilkan menjadi hasil yang dapat ditinjau.

Alur kerja terjemahan untuk dialog gim.

2026.05.06 — 2026.05.26

Proyek kerja · jalur pemrosesan, penilaian, dan tinjauan terjemahan

  • Aplikasi webDiimplementasikan · pengembangan

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

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.

Peta alur penilaian · dari catatan implementasi privat
Penilaian terjemahan · percobaan ulang · pemulihan CottonAPI meng-commit teks sumber dan locale target ke basis data, lalu memasukkan satu job per locale target ke antrean. Worker mengunci baris, memeriksa percobaan, membuat draft dan status progres, menghasilkan terjemahan dengan glosarium, dan memanggil model penilai secara terpisah dengan glosarium yang sama. Terjemahan (Tx1) dan penilaian beserta buktinya (Tx2) dicatat dalam transaksi terpisah. Kode mengagregasi penilaian agar kegagalan hard gate tidak ditutupi rata-rata: yang lolos difinalisasi, yang gagal mendapat giliran lagi, batas giliran atau biaya mengirimnya ke tinjauan manusia, dan sinyal quota atau autentikasi menghentikan pengeluaran dan menunggu pemeriksaan kredensial. Penyapuan macet melihat hingga 200 draft yang lebih lama dari 10 menit: yang masih punya sisa percobaan tetapi hilang dari antrean dimasukkan ulang, dan yang percobaannya habis menuju tinjauan atau pemeriksaan kredensial bergantung pada ada tidaknya hasil.Sumber · locale targetSegmen tersimpanTinjauan manusianeeds_review · bukan persetujuanPemeriksaan kredensialneeds_credentialAPI · pendaftaran jobMasuk antrean setelah commitAntrean jobBullMQ · ID jobMasuk jobKunci baris · pemeriksaan percobaanGlosarium · konteksGlosarium workspaceGiliran terjemahanHasilkan · panggilan modelPanggilan model penilai · parseAturan putusanHard gate · rata-rata berbobotPercobaan ulang · pengeluaranGiliran · biaya · quotaStatus terjemahanDraft · progresBaris terjemahan · penilaianStatus · log panggilanFinalisasiTransaksi akhirPemeriksaan antreanBandingkan status antreanPenyapuan macetDraft lebih dari 10 menit · maks 200Input · antreanPembuatan · penilaianStatus · penerimaanPemulihan · keputusan manusia1sumber2 setelah commit · Masuk antrean setelah commit → BullMQ · ID job23kirim job4baris progres5percobaan diizinkan1glosarium2 glosarium sama · Glosarium workspace → Panggilan model penilai · parse23Tx1 · terjemahan4Tx2 · penilaian5 skor · gate · Panggilan model penilai · parse → Hard gate · rata-rata berbobot56putusan7pass8catatan akhir1putusan2giliran berikutnya3batas · batal4quota · autentikasi5pelanjutan manual1draft macet2 di bawah batas · Draft lebih dari 10 menit · maks 200 → Bandingkan status antrean23masuk ulang antrean4ada hasil5tanpa hasil

Pendaftaran → masuk

Masuk antrean setelah commit basis data; worker mengunci baris, memeriksa percobaan, dan membuat draft.

  1. Sumber · locale targetData: sumberMasuk antrean setelah commitAPI · pendaftaran job

    Segmen sumber dan locale target proyek disimpan di basis data. Data pelanggan tidak ditampilkan.

  2. Masuk antrean setelah commitAPI · pendaftaran jobData: setelah commitBullMQ · ID jobAntrean job

    Setelah 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.

  3. BullMQ · ID jobAntrean jobEksekusi · penilaian: kirim jobKunci baris · pemeriksaan percobaanMasuk job

    BullMQ menyerahkan job ke worker secara asinkron.

  4. Kunci baris · pemeriksaan percobaanMasuk jobData: baris progresDraft · progresStatus terjemahan

    Di 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.

  5. Kunci baris · pemeriksaan percobaanMasuk jobEksekusi · penilaian: percobaan diizinkanHasilkan · panggilan modelGiliran terjemahan

    Jumlah 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.

  1. Glosarium workspaceGlosarium · konteksData: glosariumHasilkan · panggilan modelGiliran terjemahan

    Glosarium dan konteks workspace dicari lalu diteruskan ke pembuatan terjemahan.

  2. Glosarium workspaceGlosarium · konteksData: glosarium samaPanggilan model penilai · parseGiliran terjemahan

    Penilaian mendapat batasan glosarium yang sama.

  3. Hasilkan · panggilan modelGiliran terjemahanData: Tx1 · terjemahanBaris terjemahan · penilaianStatus terjemahan

    Model 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.

  4. Panggilan model penilai · parseGiliran terjemahanData: Tx2 · penilaianBaris terjemahan · penilaianStatus terjemahan

    Skor 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.

  5. Panggilan model penilai · parseGiliran terjemahanData: skor · gateHard gate · rata-rata berbobotAturan putusan

    Jawaban model penilai di-parse menjadi skor per dimensi dan hasil gate. Lolos tidaknya glosarium adalah hal yang dilaporkan model penilai.

  6. Hard gate · rata-rata berbobotAturan putusanEksekusi · penilaian: putusanGiliran · biaya · quotaPercobaan ulang · pengeluaran

    Setiap 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.

  7. Giliran · biaya · quotaPercobaan ulang · pengeluaranEksekusi · penilaian: passTransaksi akhirFinalisasi

    Yang lolos difinalisasi sebagai translated.

  8. Transaksi akhirFinalisasiData: catatan akhirStatus · log panggilanStatus terjemahan

    Kandidat, 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.

  1. Hard gate · rata-rata berbobotAturan putusanEksekusi · penilaian: putusanGiliran · biaya · quotaPercobaan ulang · pengeluaran

    Setiap 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.

  2. Giliran · biaya · quotaPercobaan ulang · pengeluaranEksekusi · penilaian: giliran berikutnyaHasilkan · panggilan modelGiliran terjemahan

    Terjemahan yang tidak lolos dibuat lagi bersama terjemahan dan kritik sebelumnya. Bahkan kegagalan hard gate dapat dicoba ulang lebih dahulu alih-alih langsung ke manusia.

  3. Giliran · biaya · quotaPercobaan ulang · pengeluaranEksekusi · penilaian: batas · batalTinjauan manusia

    Bila giliran habis atau plafon biaya tercapai, job difinalisasi sebagai needs_review. Finalized berarti pemrosesan berakhir, bukan bahwa seseorang menyetujuinya.

  4. Giliran · biaya · quotaPercobaan ulang · pengeluaranKegagalan · batas: quota · autentikasiPemeriksaan kredensial

    Sinyal 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.

  5. Pemeriksaan kredensialEksekusi · penilaian: pelanjutan manualBullMQ · ID jobAntrean job

    Operator 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.

  1. Draft · progresStatus terjemahanObservasi · laporan: draft macetDraft lebih dari 10 menit · maks 200Penyapuan macet

    Hingga 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.

  2. Draft lebih dari 10 menit · maks 200Penyapuan macetEksekusi · penilaian: di bawah batasBandingkan status antreanPemeriksaan antrean

    Dengan 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.

  3. Bandingkan status antreanPemeriksaan antreanEksekusi · penilaian: masuk ulang antreanBullMQ · ID jobAntrean job

    Bila 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.

  4. Draft lebih dari 10 menit · maks 200Penyapuan macetEksekusi · penilaian: ada hasilTinjauan manusia

    Dengan ketiga percobaan terpakai dan ada hasil terjemahan, job menuju needs_review.

  5. Draft lebih dari 10 menit · maks 200Penyapuan macetEksekusi · penilaian: tanpa hasilPemeriksaan kredensial

    Dengan 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.