# feat\(orchestration\): port thread title regeneration to the v2 runtime · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/4b52c6271255a5e5fd803b618cffa9990252d4f9)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 4b52c6271255a5e5fd803b618cffa9990252d4f9

Requested commit: 4b52c6271255a5e5fd803b618cffa9990252d4f9

Commit: 4b52c6271255a5e5fd803b618cffa9990252d4f9

Tree: bf34c76d216d4a35070bcfc12b31aa698c296976

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
feat(orchestration): port thread title regeneration to the v2 runtime

Follow-ups from the main merge:

- Migration numbering: main's 035_ProjectionThreadTitleRegeneration is
  released and keeps its id; this branch's unreleased v2 migrations shift
  to 036-044 instead (a released migration can never be renumbered).
- thread.metadata.update accepts regenerateTitle: true arms an in-flight
  titleRegeneration marker on the thread payload (requestId + startedAt),
  a landing title or explicit false clears it. The marker projects onto
  thread shells and through the client-runtime shell model, so the
  sidebar's Regenerating state works unchanged.
- New ThreadTitleRegenerationService worker reacts to armed markers on
  the live domain-event stream (so ws, MCP, and mobile dispatches all
  behave the same): builds a newest-first conversation digest from the
  v2 projection (8k-char budget, retained attachments — ported from the
  v1 reactor), generates via TextGeneration, and lands the title with a
  follow-up metadata update. Failures clear the marker and log.
- The server advertises threadTitleRegeneration again, and the client
  updateThreadMetadata dispatches regenerateTitle-only updates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

```

## Parents

- [fe8b2ed9b65591bde6939644a02711564705f20f](https://git.cafe/pingdotgg/t3code/commit/fe8b2ed9b65591bde6939644a02711564705f20f?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/4b52c6271255a5e5fd803b618cffa9990252d4f9?format=markdown)
