Skip to content

fix(core): delete legacy V1 session rows when a session is removed - #50270

Closed
holny wants to merge 1 commit into
anomalyco:v2from
holny:fix-50260-legacy-rows
Closed

holny wants to merge 1 commit into
anomalyco:v2from
holny:fix-50260-legacy-rows

Conversation

@holny

@holny holny commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Issue for this PR

Closes #50260

Type of change

  • Bug fix

What does the PR do?

Session.remove publishes SessionEvent.Deleted, which the projector in packages/core/src/session/projector.ts uses to delete the session row from session_v2. However the V1→V2 migration path copies legacy rows into the V2 tables but never drops the legacy tables. When a session is removed, only the V2 row is deleted — the legacy rows (session, message, part, todo) remain orphaned.

The fix extends the SessionEvent.Deleted projection to also delete legacy rows when the legacy session table exists, probing sqlite_master at runtime so it is safe for fresh V2-only databases.

How did you verify your code works?

Added test/session-remove.test.ts creating legacy rows alongside a V2 session, calling Session.remove, and asserting all 4 legacy tables are empty. bun test test/session is 612 pass / 0 fail. bun run typecheck clean. bun run check 0 errors.

Screenshots / recordings

Not a UI change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

Databases migrated from V1 keep the legacy session/message/part/todo store alongside session_v2, but the Deleted projection only removed the V2 row, orphaning the legacy copy forever. Guard a legacy delete on a schema lookup so fresh and renamed-lineage databases skip it, and let the legacy foreign keys cascade the child rows.
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

@github-actions github-actions Bot added the needs:compliance This means the issue will auto-close after 2 hours. label Sep 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • PR description is missing required template sections. Please use the PR template.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

Feel free to open a new pull request that follows our guidelines.

@github-actions github-actions Bot removed the needs:compliance This means the issue will auto-close after 2 hours. label Sep 22, 2026
@github-actions github-actions Bot closed this Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant