Files
mantra-kmp/composeApp
Kgothatso Ngako 3fade6c849 feat: propose a long artifact's translation in more sessions, not none at all
An artifact of more than MAX_CHAPTERS_PER_TRANSLATION chapters could not be
translated. The form refused, said so in red, and left nothing to be done about
it -- the chapters are already signed, and unlike a chapter's paragraphs there
is nothing the person reading that message can split. It was a cap on how long a
book may be, wearing a cap on a batch as a disguise.

The same answer the chapter side already gives: propose more than once. The
translation and as many chapters as fit go in the first session, and the rest
follow in sessions of their own, naming the translation the first is about to
sign. The admins answer once per session, and the form counts them before the
tap rather than colouring a refusal.

MAX_CHAPTERS_PER_TRANSLATION stays, meaning what it now measures -- how many
chapters ride in the translation's own session, the batch minus the place the
translation itself takes. It is a cap on a session rather than on the work.

The cost is the one every second session in this design carries, and is
documented where it is paid: if the translation fails to reach a quorum while
these succeed, they are valid signatures over rows naming a translation nobody
has, which fail a foreign key on the way in and are logged rather than applied.
The catch-up on the translation is what fills that in afterwards.

**Tests.** TranslationBatchProposalJvmTest now covers the split: an artifact
three chapters past the cap proposes a full first session and a second of three,
every chapter of the work covered exactly once across both, in order, each
naming the translation as the group will author it. The refusal test stays and
keeps its point -- one session is still refused a chapter too many, because a
batch that quietly dropped its last chapters would sign a translation the group
believes covers the whole work while the end of it can never be translated. What
changed is who prevents it: the screen splits rather than checks, and the manager
still refuses independently.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-06 12:05:35 +02:00
..