Developers
The feed generator
Feeds are records admins write. The feed generator turns each rule into a list of records, kept current as spaces change.
Feeds as records
us.off-the-clock.feed.generator (name, description) and us.off-the-clock.community.feed (configuration, sort) under one key in a pair's management space; the newest configuration among the pair's admins counts.
How it learns about content and membership
It syncs the management spaces itself and keeps its own projection of membership in memory; it never asks the AppView. It syncs each content space it serves. Deck: "feed-dataflow".
The document each rule sees
Deck: "feed-doc". Fields: collection, space, author.did, author.admin, record, labels, createdAt; posts: isReply, hasMedia, tags, mediaKind; bookmarks: host, tags.
Evaluation and timing
JSON Logic per record on arrival; rejects unknown operators; dry run through admin.evaluateFeed. Deck: "feed-rules" and "feed-timing".
Serving a feed
us.off-the-clock.feed.getFeedSkeleton: newest first, or upcoming events soonest first. otc-web hydrates the skeleton through the AppView. Deck: "feed-seq".