Cap activities by the order the app displays them

Auditing the fixture against the real migrations (the method that found
the missing checkpoint column) turned up a second gap: the test schema
omitted `projection_thread_activities.sequence`, and the copy's per-thread
cap ordered on `created_at` alone.

The app reads these back ordered by `sequence` first, then `created_at`
(ProjectionSnapshotQuery). A burst of tool activity lands many rows on
one timestamp, so capping on the timestamp alone cuts arbitrarily among
them — demonstrated with four tied rows where "keep the newest two" kept
the two the timeline treats as oldest.

Ordered to match, falling back to the timestamp when the source predates
migration 008. Fixture gained the column, and the regression test fails
against the old ordering.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dc375f336dTheo Browne committed on 7/27/2026, 3:38:49 AMparenta37db1a
2 files changedLine totals unavailable