Personal digest: a private, DM'd feed roundup - #21
Merged
Conversation
…seen-collision docs, registry table)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a second, privately-curated digest — a feed roundup DM'd to the owner only (or an optional
configured channel), separate feed list and schedule from the existing public digest. Reuses
Digest's existing RSS/feedparser mechanism and shares its LLM budget rather than being a new brain.
Tracks
ROADMAP.mditem 1 (roadmap and design spec added in this same branch — the roadmap doc isnew, cross-linked from a new companion repo,
community-discord,which holds non-code server/community planning notes).
Built via
Full brainstorming → design spec → implementation plan → subagent-driven-development pipeline:
6 tasks (storage, config, job function, curation tools, scheduling, docs), each implemented and
reviewed independently (one fix round on Task 3 — missing test coverage for a delivery-failure
path), then a final whole-branch review that caught two real bugs no task-level review could see:
chat (the whole point of the curation tools) would never actually get scheduled.
personal_feedsand the publicfeedslist share the same dedup table — a URL in both listswould only ever be delivered by whichever job runs first each day, silently.
Both fixed (loop now self-gates like Giga Brain's interval check does; the dedup collision is
documented as a known caveat rather than re-architected, given the effort/value tradeoff), plus two
smaller doc gaps (a missing boot-time channel-reachability entry, four tools missing from the
security-posture registry table). Re-reviewed clean.
Details
personal_feedstable (mirrorsfeeds), no migration needed.PERSONAL_DIGEST_FEEDS,PERSONAL_DIGEST_CHANNEL_ID(unset = DM the owner, samefallback shape as
GIGABRAIN_CHANNEL_ID),PERSONAL_DIGEST_HOUR.run_personal_digest_job— same fetch/dedupe/summarize as the public digest, DM-or-channeldelivery mirroring Giga Brain's periodic check-in.
list_personal_feeds,suggest_personal_feeds,add_personal_feed,remove_personal_feed) — no admin.py changesneeded, tools auto-register.
_personal_digest_loop, self-gating, with ops-channel failure alerting.275 tests passing, ruff clean.
🤖 Generated with subagent-driven-development