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

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

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

Visibility: public

Requested revision: a240e2e2450679a6055ce4912f820a66fe7bb424

Requested commit: a240e2e2450679a6055ce4912f820a66fe7bb424

Commit: a240e2e2450679a6055ce4912f820a66fe7bb424

Tree: ce801535dd899677164b37bbae5cc1116b5945af

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

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

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