Skip to main content
A translation that is reflected on rather than shipped from one call. One model translates the article with the glossary open; a model from another family reads the translation the way an editor would and sends it back with what to change, not a score; the translator then writes down how every glossary term was rendered and where the glossary and natural French pulled apart. The person who knows the readers decides the nuance and says publish.
In that directory, create package.json with "type": "module", put the brief and the sample inputs from examples/use-cases/other/ beside it, then run the copied file.

The file

Every event of the run prints as one line as it happens, the usage lines included, and the outcome prints last as JSON. The run stops at nuance with the translation in fr/article.md and the terms note in fr/terms.md. A no goes back to translate with the editor’s note as the finding.

What a run printed

The output below is from one real run of this file, with the two command line tools signed in on the machine. The run stops at the person, which is what every example here does before anything is sent or filed.

The team’s shape

Where a stage’s gate names a file, the package checks the file after the job. Where it names an exit code, the command decides. Where it names a reviewer, the reviewer’s decision decides. Where it names a person, the run pauses until the person answers. A model’s own report of its work never passes a stage.

Gotchas

  • The glossary wins, and the note says where it cost. The brief holds the translator to the glossary even where another word reads better, and asks for each such place in fr/terms.md, so the person decides with the trade-off in front of them.
  • The reviewer reflects, it does not score. Its findings are sentences about what to change; the translator runs again with them until the reviewer accepts or the retries run out.
  • The source and the glossary are workspace files the brief names. Both are in the brief’s front matter, so every seat knows they exist and the translating seat cannot write them.

Source

The file is examples/use-cases/other/translate-reflect.ts; its proof, brief and sample inputs sit beside it. The runtime package page lists every input.