
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
分數、重試與人工審核,各守其邊界。
生成與判定共用術語表,評判模型回報的硬性關卡失敗無法以平均分數抵銷。翻譯與判定的中間狀態都會記錄,重試與成本上限和認證資訊耗盡分開處理,停滯作業則依原因回到佇列或審核。
這個工作專案把翻譯生成、模型回報的品質判定、重試與人工審核串成一個流程。
從儲存庫建立到參與期間確認的工作
由翻譯編輯與核准畫面、API 及作業 worker 組成的網頁應用程式,在開發環境中執行。
登記 → 進入
資料庫提交後排入佇列;worker 鎖定該列、檢查嘗試並建立 draft。
原文 · 目標語系資料: 原文提交後排入佇列
API · 作業登記原文句段與專案的目標語系儲存在資料庫中。不顯示客戶資料。
提交後排入佇列
API · 作業登記資料: 提交後BullMQ · 作業 ID作業佇列資料庫提交完成後,為每個啟用的目標語系排入一個 ID 以請求為範圍的作業。排入失敗時只記錄警告,提交不會回復(沒有原子性 outbox),這正是停滯清查存在的原因。
BullMQ · 作業 ID
作業佇列執行 · 判定: 傳遞作業列鎖定 · 嘗試檢查作業進入BullMQ 以非同步方式將作業交給 worker。
列鎖定 · 嘗試檢查
作業進入資料: 進度列draft · 進度翻譯狀態在交易中鎖定進度列並建立 draft 翻譯。已確定或因認證而暫停的作業,其自動重試會略過;手動請求另行處理。
列鎖定 · 嘗試檢查
作業進入執行 · 判定: 允許嘗試生成 · 模型呼叫翻譯回合嘗試次數在上限內加一,接著開始翻譯回合。
生成 → 判定 → 確定
生成與判定使用相同的術語表;翻譯與判定分開記錄,程式碼彙總判定後才確定。
工作區術語表
術語表 · 上下文資料: 術語表生成 · 模型呼叫翻譯回合查詢工作區術語表與上下文,並傳給生成。
工作區術語表
術語表 · 上下文資料: 相同術語表評判模型呼叫 · 解析翻譯回合判定也取得相同的術語表限制。
生成 · 模型呼叫
翻譯回合資料: Tx1 · 翻譯翻譯 · 判定列翻譯狀態直接或經由 en-US 中介呼叫模型,並將呼叫、事件與進度寫入同一個交易。若作業在當機後重新執行,翻譯呼叫及其成本可能重複。
評判模型呼叫 · 解析
翻譯回合資料: Tx2 · 判定翻譯 · 判定列翻譯狀態評判分數與依據,每個翻譯與回合只插入一次;重複時找出既有的列,引用只在首次插入時寫入。與翻譯不在同一個交易中。
評判模型呼叫 · 解析
翻譯回合資料: 分數 · 關卡硬性關卡 · 加權平均判定規則評判模型的回答被解析為各維度分數與關卡結果。術語表是否通過,是評判模型回報的結果。
硬性關卡 · 加權平均
判定規則執行 · 判定: 判定回合 · 成本 · 配額重試 · 支出只要回報任何硬性關卡失敗,即為零分且失敗;只有在此之後才套用加權平均與各維度門檻值。整體門檻值 8.0 是設定預設值,不是觀測到的翻譯品質。
回合 · 成本 · 配額
重試 · 支出執行 · 判定: pass確定交易結果確定通過即確定為 translated。
確定交易
結果確定資料: 確定記錄狀態 · 呼叫日誌翻譯狀態候選、狀態、分數與回合確定後,進度 finalized 與狀態日誌寫入同一個交易。只有 translated 時才發出翻譯完成事件。
重試 · 支出上限
未通過就再一回合;達到上限即人工審核;配額或身分驗證則停止支出,等待維運人員恢復。
硬性關卡 · 加權平均
判定規則執行 · 判定: 判定回合 · 成本 · 配額重試 · 支出只要回報任何硬性關卡失敗,即為零分且失敗;只有在此之後才套用加權平均與各維度門檻值。整體門檻值 8.0 是設定預設值,不是觀測到的翻譯品質。
回合 · 成本 · 配額
重試 · 支出執行 · 判定: 下一回合生成 · 模型呼叫翻譯回合未通過的翻譯會帶著前一版翻譯與評語重新生成。即使是硬性關卡失敗,也可以先重試,而不是直接交給人。
回合 · 成本 · 配額
重試 · 支出執行 · 判定: 上限 · 終止人工審核回合用盡或達到成本上限時,作業確定為 needs_review。finalized 代表處理已結束,不代表有人核准。
回合 · 成本 · 配額
重試 · 支出失敗 · 上限: 配額 · 身分驗證認證檢查配額或身分驗證訊號會停止支出並設為 needs_credential。不會自動切換到其他帳號或供應商。沒有中止訊號的傳輸錯誤,回到 BullMQ 重試。
認證檢查執行 · 判定: 手動恢復BullMQ · 作業 ID
作業佇列已檢查認證資訊的維運人員明確地重新啟動。
停滯作業復原
舊的 draft 依原因分開:不在佇列中即重新排入,嘗試用盡即交由人決定。
draft · 進度
翻譯狀態觀測 · 回報: 停滯 draft超過 10 分鐘的 draft · 最多 200停滯清查讀取已為 draft 超過 10 分鐘的候選,最多 200 個,由舊到新。查詢不加鎖,更新與記錄以不同的陳述式執行,因此不描述為無競爭條件的批次。
超過 10 分鐘的 draft · 最多 200
停滯清查執行 · 判定: 低於上限比對佇列狀態佇列檢查嘗試次數少於上限(3)時,將作業與 active、waiting、delayed、prioritized 佇列狀態比對。程式碼中,嘗試用盡的分支在此佇列檢查之前。
比對佇列狀態
佇列檢查執行 · 判定: 重新排入BullMQ · 作業 ID作業佇列作業不在佇列中時,會再次排入。API 使用帶請求後綴的 ID,清查則以句段與語系 ID 尋找,因此不描述為能對上每個進行中的請求。
超過 10 分鐘的 draft · 最多 200
停滯清查執行 · 判定: 有結果人工審核3 次嘗試已用盡且有翻譯結果時,作業送往 needs_review。
超過 10 分鐘的 draft · 最多 200
停滯清查執行 · 判定: 無結果認證檢查3 次嘗試已用盡且沒有結果時,作業送往 needs_credential。
所有連線以相同粗細顯示。選擇一個流程,即只突顯其路徑,並標出步驟編號。
- 實線 · 輸入、結果與記錄的流向
- 虛線 · 執行、判定、請求
- 長點劃線 · 觀測與回報,與判定分開
- 短虛線 · 失敗、停止、上限
- 粗黑線 · 所選流程;數字表示順序
- 方框 · 程式碼或狀態邊界,名稱在標題列
- 內層小框 · 該邊界的元件
- 虛線框 · 該邊界之外
- 橘色外框 · 模型做出判斷之處
- 生成 · 支出 · 確定
- 進入 · 判定規則 · 清查
- 佇列 · 狀態 · 記錄
- 登記 · 佇列檢查
依據非公開的實作與開發記錄繪製。不顯示客戶資料與程式碼路徑。
- 一次清查
- 2026年5月26日,開發環境的一次清查週期:檢查 200 個,狀態轉換 106 個,重新排入 2 個。狀態轉換不等於翻譯成功,106 個依目的狀態的分布未記錄。
- 為何不是恰好一次
- 記錄寫入時不會重複,但作業在當機後重新執行時,模型呼叫及其成本可能重複。並行上限以行程為單位,不是整個叢集。
- 判定的範圍
- 不讓平均分數掩蓋術語表失敗,是針對回報關卡的彙總規則。它不能證明每個禁用詞都會被找出,也不能證明品質達母語水準。