The translation editor was the only caller of `saveTranslationChunk`, and it
stopped calling it when it started proposing. What is left behind is dead: the
method on `MantraRepository`, its no-op for previews, its implementation in
`DatabaseMantraRepository`, and `MantraDao.saveTranslation` underneath them.
Deleting it rather than leaving it is the point. Two ways to create a
translation chunk, one of which bypasses the quorum, is one too many -- the next
screen wanting one would find it and take it, and the group would end up with a
translation in its name that nobody signed.
The rule it enforced does not go with it. Keeping one translation per source
chunk moved to `ChatMessage.applyInnerEvent`, where the row is now made, in the
commit before this one -- and covers more there than it ever did here, since the
group's other members were always able to leave a duplicate behind.
`MarmotInnerEventDao.deleteByPayloadEventId` loses its only production caller
here and stays. It is a DAO query rather than a private helper, the invariant
behind it is still true and still tested -- a submission's id is the envelope's,
so a superseded payload cannot be un-queued by its own id -- and `MantraDao`'s
remaining `addDialect` and `addArtifactVersion` are in the same position:
reachable now only from `MantraDaoJvmTest`, and a decision about the whole
submit-to-group path rather than about this screen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>