Skip to content

fix(server): preserve manual thread titles during generation - #843

Merged
rynfar merged 24 commits into
pylonfrom
feat/thread-title-intent-20260924
Sep 26, 2026
Merged

rynfar merged 24 commits into
pylonfrom
feat/thread-title-intent-20260924

Conversation

@rynfar

@rynfar rynfar commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

A delayed first-turn title or provider metadata update can overwrite a manual rename, including when the user renames a thread back to the same text. Persist a command-versioned title intent and accept automatic title completions only while the expected title and version still match. Archive/reopen, deletion, a newer title, and explicit regeneration invalidate stale completions. Imported history remains conservative; older event payloads still decode.

This is a partial adaptation of upstream 7cafe52bb8f1a4f26e9a8504c53ceae5cb32548a. It keeps Pylon's existing title-generation call count. The upstream automatic post-turn refinement would add another model call and remains a separate product/cost decision; provider-link refactors 08abda9dcf6fee89561f861004efb48bad665df2 and a62e7d670c67bf221a5699b5a988367781fead74 are outside this fix.

Depends on #815 at refreshed head 360f814b9161e6af0a9e4ed64e80f445755f52b2, merged into this branch. Merged Relay recovery owns migration 063, #815 owns migration 064, and this PR adds migration 065. For focused title-only review, compare the #815 prerequisite head with this PR head.

Validation: 169 focused contract/server tests, 153 ingestion/snapshot/decider tests, and final 15 targeted title tests passed; contracts, client-runtime, and server typechecks passed. Pinned Effect diagnostics checked 1035 server files with zero diagnostics. Scoped lint/format and diff checks passed. Independent read-only review passed. No live provider or browser session was exercised.

The independently useful part of upstream a62e7d670c67bf221a5699b5a988367781fead74 is adapted here: title-generation and recovery warnings now log only a failure category and reason count, rather than a formatted cause that can include provider CLI output. Its provider link-decoding changes still depend on the separate 08abda9d lookup feature.

Refreshed head 82795d32bcdabcfe7a1d999826f16f31171d07e3: merged the updated #815 prerequisite and current pylon cleanly. Eight focused test files passed (352 tests); server, contracts, and client-runtime typechecks, scoped lint, diff check, and frozen offline install passed. Final-head CI is pending.

CI follow-up: the merged #815 prerequisite exposed three repository-wide lint errors in existing reactor tests; this branch changes those four dispatch calls to the harness-owned Effect runtime. Focused approval/user-input tests, scoped lint and format passed.

@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
pylon-marketing Ready Ready Preview Sep 26, 2026 6:55am UTC

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 24, 2026
@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

Deployment failed for project pylon-marketing with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/pylon-code?upgradeToPro=build-rate-limit

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.9 KiB 14.0 KiB +79 B (+0.6%) 15.1 KiB ✅
Codex Thread snapshot wire 7.2 KiB 7.3 KiB +52 B (+0.7%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.7 KiB 6.7 KiB +27 B (+0.4%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 9 9 0 (0.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB +46 B (+0.3%) 15.1 KiB ✅
Claude Thread snapshot wire 7.2 KiB 7.3 KiB +48 B (+0.7%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.8 KiB 6.8 KiB −2 B (−0.0%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB −44 B (−0.1%) 66.4 KiB ✅
Claude Live turn messages 10 9 −1 (−10.0%) 21 ✅

Baseline: afd6c11 · PR result: 82795d3 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.7 KiB
  • Claude decoded thread snapshot: 116.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@rynfar
rynfar merged commit ab547a5 into pylon Sep 26, 2026
20 checks passed
@rynfar
rynfar deleted the feat/thread-title-intent-20260924 branch September 26, 2026 07:03

This branch was successfully deployed

1 active deployment
Preview — 82795d32 Deployed Sep 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant