[FIX] Shape before translating, and record what actually landed - #111
Merged
Conversation
Prompt shaping arrived from a branch that predates translation, so the two transforms ended up in an order nobody chose: recognise, translate, write history, shape, insert. Shaping now runs first. A prompt carries its own language and its one-shot example in that language, so handing it a translation asks it to work in a language it was not written for, and a translator given cleaned-up words has less to get wrong. History moves last, still before insertion so a failed paste cannot lose the words (ADR-0007). Written where it was, the delivered line held a translation nobody received, because shaping had not run yet. The spoken half is unchanged. The quit grace covered a translation and not a shaping pass, so a finish could outlast it by the ten seconds shaping is allowed and take the words with it, history included. Same mistake as 0.7.0's, one step further out: it now names every bounded step a finish can be inside.
jhampton
added a commit
to Swagatar-LLC/Talkify
that referenced
this pull request
Sep 3, 2026
The shaping work those notes described has now landed upstream (tornikegomareli#68, tornikegomareli#111, tornikegomareli#113, tornikegomareli#114) along with the insertion-clock fix (tornikegomareli#115), so keeping it in fork-unreleased.md would republish upstream release notes as if they were fork-only changes. The file accumulates again as fork work lands; empty is the correct resting state, and swagatar-release.sh already falls back to the build disclaimer when it is. Co-Authored-By: Vorno <agents-noreply@swagatar.co>
jhampton
added a commit
to Swagatar-LLC/Talkify
that referenced
this pull request
Sep 3, 2026
The shaping work those notes described landed upstream in tornikegomareli#68, tornikegomareli#111 and tornikegomareli#114, and the insertion-clock fix in tornikegomareli#115, so shipping them from the fork would republish upstream's release notes as fork-only changes. The file accumulates again as fork work lands; empty is its resting state, and swagatar-release.sh falls back to the build disclaimer when it is.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-ups to #68, found while reviewing it. All three come from the same cause: prompt shaping arrived from a branch that predates translation, so the two transforms ended up in an order nobody chose.
Shaping now runs before translation. A prompt carries its own language and its one-shot example in that language, so handing it a translation asks it to work in a language it was not written for. A translator handed cleaned-up words also has less to get wrong.
The history write moves last, still ahead of insertion so a failed paste cannot lose the words. Where it was, the delivered line recorded a translation nobody received, because shaping had not run yet. The spoken half is unchanged.
And
finishGracecovered a translation but not a shaping pass, so a finish could outlast the quit hold by shaping's ten seconds and take the words with it, history included. That is the same mistake I made in 0.7.0 one step further out, so it now names every bounded step a finish can be inside.Both new tests fail against the previous order.