Repository navigation
Capture native session titles and durable name revisions - #2817
Conversation
The title database budget now counts the WAL and the logical snapshot the select reads, inside one read transaction, so a small main file with a large committed WAL is refused. The metadata part identity includes the UTC content day, so a session continuing onto a new day carries its current name there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
R2 at Checks: full client suite 8,979 pass / 0 fail / 3 skipped, title tests 8/8, typecheck, both backfill fixture smokes, independent privacy/window/entry-budget controls, snapshot race probes, LLP-number and diff/style checks passed. R1 evidence carries for unchanged paths. CPU/memory: metadata checks remain per scan, with bounded logical reads and output; the day hash adds constant work per title update. Bounded result materialization still costs memory, and the byte cap is not a wall-clock deadline. No new CPU/memory concern found. Server-suite gate: not triggered. No CLI command, product telemetry contract, MCP codec/schema or kernel-type change. Wire-contract cross-check remains valid: MEDIUM reflects the collector and durable metadata path. Release order remains server #1611 live, then hypscope #452 published, then collector enqueue after release confirmation. This review does not verify those deployment prerequisites. Finding dispositions (FLOW.md):
Wire-contract cross-check at final heads: the client writes a Release ordering met: server #1611 live on c2951fa3, hypscope #452 published (Publish run 40013401476). Enqueueing after this comment. 🤖 Generated with Claude Code |
Merge and deployment order
Keep the collector release behind both consumer deployments: older consumers would count the new
session_metadataparts as conversation content.Native generated names and user renames are currently absent from recorded sessions. Capture them in
attributes.sessionfor Claude Code/Desktop, local Codex CLI/Desktop, OpenCode, and Codex cloud/ChatGPT Work. Title revisions use deduplicated metadata parts so a late title or idle rename can update session lists without rewriting or duplicating conversation content.Codex reads both its name index and read-only native SQLite
threads.name: some Desktop-generated names exist only in the database. Metadata parts do not carry system prompts/tools/model context or become conversation predecessors. Reads and retained indexes are bounded, with no per-message filesystem lookup or new runtime dependency.Backfill also recovers existing native names, subject to the existing provider/import window and recording controls. This does not enable disabled history imports or widen automatic import bounds. Companion server PR #1611 and dashboard PR #452 consume the metadata in daily summaries and session links; deploy consumers before producers.
Validation: full client suite passed (8,972 passed, 7 skipped), typecheck passed, focused title/projector/writer regressions passed, and
npm run smoke -- backfill_claude_fixtureplusnpm run smoke -- backfill_codex_fixturepassed through durable cache writes and SQL, including late generation and rename-back.CPU and memory review: bounded metadata inputs/maps, unchanged-rollout skips include native name revisions, title text is stored once per metadata update, and no additional unbounded growth was found.
Related: HYP-107. Follow-ups: HYP-289: Pi names, HYP-290: OpenClaw names. LLP 0556 documents the wire contract and collector audit.
Additional local validation (2026-10-23): replayed 212 projected rows from one existing native Claude session (2026-08-07) and one native Codex session (2026-10-19) into an isolated local server and dashboard. Verified both original names, idle renames, and rename-back in the browser after reloading. The actual raw and summary list queries agreed at all three revisions; message/part/model counts and activity times stayed unchanged. Unchanged-source scans emitted zero rows. Native sources stayed read-only; rename tests used temporary copies. Benign history anchors allowed the sparse test dataset to page back to the older Claude sample.