When an article crosses about ten thousand characters, we stop translating it in one pass. We cut it into chunks of roughly five thousand characters, always at paragraph boundaries, and work through them one at a time. Anyone looking at that design sees the obvious improvement immediately: the chunks are independent inputs, so translate them in parallel and finish in a fifth of the time.
We don’t, and the reason is that the chunks are not independent. They only look that way from outside the text.
Decisions accumulate as the article unfolds
A glossary covers the vocabulary we knew about in advance. Our domain is Reformed theological writing, and the core terms are pinned before we start: “justification” is always “виправдання”, “sanctification” is always “освячення”, “covenant” is always “завіт”. Those mappings are fixed, and a parallel translator working on chunk four would get them right without any context.
But most of the decisions in a real translation are not in the glossary, because they could not have been. An author introduces a phrase of their own, “the quiet ordinary means”, and uses it nine times across the article as a refrain. The first occurrence forces a choice among three defensible Ukrainian renderings. Whichever we pick, occurrences two through nine must match, or the refrain stops being a refrain. The author sets up a metaphor about anchors in chunk one and returns to it in chunk five, and the return only lands if the vocabulary of the setup is still in place. Even the register of address, whether the prose speaks formally or leans close to the reader, gets calibrated in the opening paragraphs and then has to hold for the rest of the piece.
None of that state exists before translation begins, so no amount of upfront preparation can hand it to a parallel worker. It is produced by the act of translating chunk one, and chunk two consumes it. That is a sequential dependency wearing the costume of a batch job.
We tried to imagine the parallel version honestly. Each worker translates its chunk well, in isolation. The seams are where it dies: the refrain rendered three different ways, the metaphor’s return missing its setup, the register drifting between chunks. Every individual chunk passes review. The article fails. The defects live in the relationships between chunks, exactly the places that per-chunk review never looks.
Where the cut lands matters as much as the order
The other half of the discipline is that we cut at paragraph boundaries, never inside them, even when that makes chunk sizes uneven.
A paragraph is the smallest unit that carries its own argumentative context. Cut inside one and the second half arrives as an orphan: a “this” with no antecedent, a “therefore” with no premise. Ukrainian makes the problem sharper than English does. It is an inflected language, so a pronoun’s gender has to agree with a noun that may now be sitting on the other side of the cut, and word order carries emphasis that only reads correctly when the surrounding sentences are present. Translating half a paragraph is not half the work of translating a paragraph. It is a different and worse task.
There is a simple test we hold ourselves to: the chunk boundaries must be invisible in the output. A reader of the finished Ukrainian article should have no way to reconstruct where the cuts fell. When we review our own work, a detectable seam counts as a defect even if both sides of it are individually fine.
The glossary is a contract because the words carry doctrine
It would be fair to ask why we tolerate all this care for what is, structurally, a formatting pipeline. The answer is that in theological translation, terminology drift is not a style problem.
Take one example. “Justification” and “sanctification” name two different things in Reformed theology: the first is a declared status, the second is a lifelong process. Whole confessional documents turn on not blending them. Ukrainian has words available that sit near both concepts, and a translator choosing freely, chunk by chunk, could drift from “виправдання” toward a neighbor like “оправдання” or blur either term toward the vocabulary of moral improvement. Each local choice would be defensible. The sum would be an article that quietly teaches something its author does not believe.
That is why the glossary functions as a contract rather than a suggestion. The doctrinally loaded words are decided once, before any article, and the sequential order protects everything the glossary cannot enumerate in advance. The two mechanisms cover each other’s blind spots: the contract handles the terms we can foresee, the ordering handles the decisions that only emerge from the text itself.
We suspect this pattern is more general than translation. Any task that gets split for tractability, long document analysis, large refactors, multi-part reports, has some state that accumulates across the parts, and the split makes that state easy to forget because each part looks whole on its own. The speed of parallelism is real, but it is paid for out of exactly that state. Sometimes the price is fine. In our corner of the work, where a drifted word can shift a doctrine, we keep choosing the slow order and letting the chunks wait their turn.