Mixer contract

Inputs

Input

Type

Source

liveBatch

TweetResult[]

API state + posts rehydrate

canonicalPool

TweetResult[]

tf_canonical_posts

seenPostIds

Set<string>

seen_items

churnSeed

number

Remix epoch + page salt (Home only)

Output

feedPosts — ordered list for the active tab after:

  1. mergeFeedWithUnseenCanonicalFirst (Home) or mergeFeedById (other pages)

  2. buildMixerFeedPostsBase — time window, Top/Latest/Media, topic prefs

Invariants

  • Dedupe by tweet id across live and canonical.

  • Unseen canonical precedes live on Home (unless include-seen).

  • No persisted mixerCache in v1 — order is reproducible given same seed and DB snapshot.

UI surfaces

  • Home: classic/stream TweetCard (not masonry tiles for main tabs).

  • Spaces/Broadcasts directories may use tile layout (ix-feed--masonry).