Smiling cotton character from the original Cotton logo, with the background and lettering removed
Back to the hall

Cotton

Translation workflow

Turning generated translations into reviewable results.

A translation workflow for game dialogue.

2026.05.06 — 2026.05.26

Work project · translation processing, judgment and review path

  • Web appImplemented · development

A race review found, stalled jobs returned by reason

One case whose policy and commit name Claude for implementation and Codex for review, and one that made stalled jobs diagnosable.

Full legend

How to read · one grammar for every case

  • Columns are who acted; top to bottom is time
  • Solid: a recorded handoff or next step
  • Heavy lapis ↩: a finding that sent work back
  • Dashed: not a recorded execution (a written rule, advice without authority, an unverified boundary)
  • Rectangle: an action
  • Rounded: an observed state or finding
  • Folded corner: an artifact or evidence
  • Hatched column: parts of the product under development (not the agents used to build it)

Case 1 / 2 · A change that halts on quota exhaustion was fixed in the same PR, including the race review found

May 19, 2026

A change that halts on quota exhaustion was fixed in the same PR, including the race review found

  1. PersonPerson

    ActionStop spending on quota exhaustion · no automatic fallback

    • handoffImplementation constraint→ Implement checkpoint · halt · manual resume (Claude)
  2. Coding agentClaude

    ActionImplement checkpoint · halt · manual resume

    • handoffSame-PR review→ Finding: race · duplicate state transitions (Codex)
  3. Review · verificationCodex

    Observation · findingFinding: race · duplicate state transitions

  4. ArtifactsSame PR

    ArtifactIn the same PR: row lock · unique score key · atomic transition

    • handoff→ Local fixture · DB integration check records (Same PR)
  5. ArtifactsSame PR

    ArtifactLocal fixture · DB integration check records

    • not a recorded executionScope checked→ No new CI or production deployment results collected (Same PR)
  6. ArtifactsSame PR

    Rule · unverifiedNo new CI or production deployment results collected

Context
The condition a person set was to stop spending when quota runs out, with no automatic fallback. Claude implemented checkpoint, halt and manual resume, and a Codex review run through the project MCP found a race and duplication in the state transitions.
Outcome
Entry and resume transitions run inside a lock, judge scores carry a unique key against duplicates, and the transaction boundary was set. This does not mean every race was removed.
Limit
The commit states 140 checks and the later integration CHANGELOG states 160, so they are not merged into one run count. Under the policy, Codex review is an optional local step, so this does not mean every past PR went through it.
Sources and remaining limits
  • The policy records the order: Claude implements, Codex reviews locally through the project MCP, the review is attached to the PR, and disagreements are investigated together with Claude’s review agent. Automatic Codex review in CI had been deferred.
  • Development checks use fixtures and mocks, and real model calls need their own scope. Review findings are folded into the same PR and squash-merged feature → main.

May 26, 2026

Stalled jobs were made diagnosable and returned by reason

  1. Under developmentTranslation worker · queue

    Observation · findingJobs left in draft · attempts exhausted

    • handoffObserved values→ Match failedReason · exit codes · draft state (Developer)
  2. PersonDeveloper

    ActionMatch failedReason · exit codes · draft state

    • handoff→ Cause: inherited NODE_OPTIONS collide in subprocesses (Developer)
  3. PersonDeveloper

    Observation · findingCause: inherited NODE_OPTIONS collide in subprocesses

  4. Work sessionCode changes

    ActionStrip NODE_OPTIONS · per-process concurrency cap

    • handoff→ Queue state: waiting · active · failed · stale (Code changes)
  5. Work sessionCode changes

    ActionQueue state: waiting · active · failed · stale

    • handoff→ Stale sweep: missing from queue vs attempts used, branched on whether a result exists (Code changes)
  6. Work sessionCode changes

    ActionStale sweep: missing from queue vs attempts used, branched on whether a result exists

    • handoffOne cycle→ Dev sweep: 200 candidates → 106 moved · 2 re-queued · 0 errors (Artifacts)
  7. ArtifactsArtifacts

    ArtifactDev sweep: 200 candidates → 106 moved · 2 re-queued · 0 errors

    • not a recorded executionLimit of interpretation→ The 106 are not successful translations (Artifacts)
  8. ArtifactsArtifacts

    Rule · unverifiedThe 106 are not successful translations

Context
Matching BullMQ’s failedReason, subprocess exit codes and jobs left in draft found that inherited NODE_OPTIONS collided in subprocesses. After that, the same situation was made visible as queue state.
Outcome
Stalled jobs are split into those missing from the queue and those that used up their attempts; the latter move, with a reason, to needs_review or needs_credential depending on whether a result exists. Human review stays in place.
Limit
The concurrency cap is per process. Original run logs were not available in the reviewed material; latency figures are omitted because the requested models and effort were not recorded. Build and release code alone is not evidence of public deployment.
Sources and remaining limits
  • The CHANGELOG records a proposal for parallel adapter branches, but it is not turned into a record of actual parallel execution.
  • The rest of the 200 is not broken down in this record.