Skip to content

v2.2.1 — output language judged by the JD's body text

Choose a tag to compare

@Da6ka Da6ka released this 17 Jul 09:38
bc9f738

Superseded by v2.2.2 — do not rely on the behavior described below.

This release made the JD's language decide the output language. That was the wrong call: a JD is source material, not a signal for how the user wants to be addressed, so pasting a Russian JD while writing in English produced a Russian report. v2.2.2 removes that branch — only the user's own messages set the output language.

What still holds from this release: section headings are named explicitly in the rule, and mixing languages mid-phrase is forbidden.

The original notes are kept below for history.


Corrects existing behavior; no new features.

Output language follows the JD's body text

A Russian JD came back with English section headings over Russian prose — in the worst cases mixed mid-phrase ("Part A — Boolean строки").

SKILL.md's "Output language" rule already said to match the JD's language, but it had two gaps: it listed persona, tables, and the Cowork block without naming headings, and it never said how to determine the JD's language.

Both closed:

  • Section headings are named explicitly, and mixed output is forbidden — a Russian run gets Russian headings, not English ones over Russian prose.
  • The JD is judged by its body prose, not its job title. Role titles are routinely English inside an otherwise non-English posting ("Lead Generation Manager" heading a Russian JD), as are tool and platform names (dbt, Snowflake, LinkedIn). None of those make it an English JD.

The Module 4 exception is unchanged: outreach still follows the candidate's likely language, with a one-line note when it differs from the rest of the run.

Demo: the turn-cap note follows the JD too

The hosted demo's turn-cap note was hardcoded English, so a Russian run ended on an English sentence. It is appended by the Worker once the agent is out of turns, so no model call can write it — the language is now decided in code from the JD's script, judged on the body's letters rather than the title.

Known limitation: this distinguishes Russian from English only, where the model-side rule covers every language. A Russian JD consisting almost entirely of English tool names would still get an English note; prose-bearing JDs do not trigger this in practice. It affects a cosmetic note on a rare path.

Verification

Live run against the deployed demo with a real 3470-character Russian JD:

run headings mixed-language headings
before the drift 11 RU / 3 EN none
with the drift 13 EN / 2 RU yes
v2.2.1 11 RU / 3 EN none

The three English headings that remain are the outreach variants, which should be English under the Module 4 exception — the rule is discriminating, not blanket-forcing.

Heading language was non-deterministic before this change, so a single run is good evidence rather than proof.

Full changelog: v2.2.0...v2.2.1