chore(beads): epic setup for ingestion, observability, notifications, content#6
Conversation
Summary of ChangesHello @jeremylongshore, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly expands the project's task management system by defining four major epics and numerous child tasks. The primary goal is to lay the groundwork for critical functionalities such as automated data ingestion, comprehensive system observability, real-time user notifications, and advanced content generation. This structured approach aims to streamline future development and ensure a clear roadmap for these key features. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Caution Review failedThe pull request is closed. 📝 WalkthroughWalkthroughUpdated backlog metadata: multiple issues reparented under a PERC-CONTENT epic, timestamps/dependencies adjusted, new router/file references added for ingestion routing, notification sub-tasks progressed (PR merged and deploy/test follow-ups added), and Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
The pull request effectively organizes the project's next steps into four distinct epics. The task breakdown is detailed and includes clear acceptance criteria. However, there are a few inconsistencies in the task definitions: a path mismatch for the ingestion trigger endpoint and a dependency inversion where the ingestion epic requires a storage task that is currently scheduled in a subsequent epic.
.beads/issues.jsonl
Outdated
| {"id":"perception-a27.2","title":"Add /trigger/ingestion endpoint to MCP Cloud Run service","description":"Add a new HTTP endpoint to the MCP FastAPI service that triggers batch ingestion of all 128 RSS feeds from rss_sources.yaml. Stores results to Firestore articles collection. File: perception_app/mcp_service/main.py and routers/rss.py. Acceptance: POST /trigger/ingestion fetches all feeds and stores articles to Firestore with deduplication.","status":"open","priority":1,"issue_type":"task","owner":"jeremylongshore@users.noreply.github.com","created_at":"2026-02-12T22:03:02.35294518-06:00","created_by":"jeremylongshore","updated_at":"2026-02-12T22:03:02.35294518-06:00","labels":["endpoint","ingestion","mcp"],"dependencies":[{"issue_id":"perception-a27.2","depends_on_id":"perception-a27","type":"parent-child","created_at":"2026-02-12T22:03:02.358220516-06:00","created_by":"jeremylongshore"},{"issue_id":"perception-a27.2","depends_on_id":"perception-a27.1","type":"blocks","created_at":"2026-02-12T22:03:27.991316054-06:00","created_by":"jeremylongshore"}]} | ||
| {"id":"perception-a27.3","title":"Create Cloud Scheduler job (daily 6am UTC)","description":"Create Cloud Scheduler job hitting /trigger/ingestion endpoint on MCP Cloud Run service daily at 6am UTC. Can be done via gcloud or Terraform (infra/terraform/). Acceptance: Cloud Scheduler job created, visible in console, and triggers ingestion on schedule.","status":"open","priority":1,"issue_type":"task","owner":"jeremylongshore@users.noreply.github.com","created_at":"2026-02-12T22:03:05.090451382-06:00","created_by":"jeremylongshore","updated_at":"2026-02-12T22:03:05.090451382-06:00","labels":["automation","scheduler","terraform"],"dependencies":[{"issue_id":"perception-a27.3","depends_on_id":"perception-a27","type":"parent-child","created_at":"2026-02-12T22:03:05.093076776-06:00","created_by":"jeremylongshore"},{"issue_id":"perception-a27.3","depends_on_id":"perception-a27.2","type":"blocks","created_at":"2026-02-12T22:03:28.06318916-06:00","created_by":"jeremylongshore"}]} |
There was a problem hiding this comment.
There is a path mismatch for the ingestion trigger endpoint. The description for perception-a27.2 specifies POST /trigger/ingestion, but suggests implementing it in routers/rss.py. Since main.py includes this router with a /mcp/tools prefix, the actual path would be /mcp/tools/trigger/ingestion. This inconsistency is carried over to the Cloud Scheduler task in perception-a27.3. Please align the paths to ensure the scheduler can successfully trigger the ingestion.
.beads/issues.jsonl
Outdated
| {"id":"perception-feb","title":"Deploy Agent Engine to Vertex AI","description":"Execute scripts/deploy_agent_engine.sh, capture Agent ID from gcloud alpha aiplatform agents list, verify ACTIVE state. Acceptance: Agent deployed and ID documented.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-29T01:11:22.22035554-06:00","updated_at":"2025-12-29T02:22:35.46913918-06:00","closed_at":"2025-12-29T02:22:35.46913918-06:00"} | ||
| {"id":"perception-l96","title":"Wire dashboard to Firestore articles","description":"Add article listing component connected to /articles collection. Show title, source, score, section. Acceptance: Articles browsable in UI.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-29T01:11:35.28812361-06:00","updated_at":"2025-12-29T01:11:35.28812361-06:00","dependencies":[{"issue_id":"perception-l96","depends_on_id":"perception-0am","type":"blocks","created_at":"2025-12-29T01:12:41.34910571-06:00","created_by":"daemon","metadata":"{}"}]} | ||
| {"id":"perception-pkm","title":"Implement MCP store_articles","description":"Real Firestore batch writes with URL-based deduplication. Acceptance: Articles stored via MCP endpoint.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-29T01:12:00.787504542-06:00","updated_at":"2025-12-29T01:12:00.787504542-06:00","dependencies":[{"issue_id":"perception-pkm","depends_on_id":"perception-0am","type":"blocks","created_at":"2025-12-29T01:12:50.052655851-06:00","created_by":"daemon","metadata":"{}"}]} | ||
| {"id":"perception-pkm","title":"Implement MCP store_articles","description":"Real Firestore batch writes with URL-based deduplication. Acceptance: Articles stored via MCP endpoint.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-29T01:12:00.787504542-06:00","updated_at":"2025-12-29T01:12:00.787504542-06:00","dependencies":[{"issue_id":"perception-pkm","depends_on_id":"perception-0am","type":"blocks","created_at":"2025-12-29T01:12:50.052655851-06:00","created_by":"daemon","metadata":"{}"},{"issue_id":"perception-pkm","depends_on_id":"perception-t9w","type":"parent-child","created_at":"2026-02-12T22:04:05.28601869-06:00","created_by":"jeremylongshore"}]} |
There was a problem hiding this comment.
perception-pkm (Implement MCP store_articles) has been reparented to the PERC-CONTENT epic (perception-t9w). However, the PERC-INGEST epic (perception-a27) contains task perception-a27.2, which requires storing articles to Firestore as part of its acceptance criteria. Since PERC-CONTENT depends on PERC-INGEST, this creates a logical gap where the ingestion pipeline cannot be fully verified until the content epic's storage task is completed. Consider moving perception-pkm to the PERC-INGEST epic.
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @.beads/issues.jsonl:
- Line 32: The issue: when adding dependencies to existing issue objects in
.beads/issues.jsonl the updated_at field was not refreshed; locate the JSON
entries with "id":"perception-pkm" and "id":"perception-t89" (and the other
affected entry noted around the second object at line 39) and update their
"updated_at" values to the current ISO-8601 timestamp consistent with existing
entries, ensuring you modify the same JSON objects that contain the
"dependencies" arrays so that recently-updated views reflect the change.
- Around line 19-23: The issue is that the description for issue id
"perception-a27" uses a relative age ("7+ days stale") which will become
outdated; update the "description" field in .beads/issues.jsonl for the
"perception-a27" record to use an explicit calendar date (e.g., "Last ingestion:
2026-02-06") and remove the relative phrasing, keeping the rest of the text
intact so the issue remains accurate over time.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @.beads/issues.jsonl:
- Line 35: Update the epic with id "perception-s9t" (title "PERC-NOTIFY: User
Signup Slack Notifications") so the description no longer states PR `#5` needs
merging; edit the "description" field in the JSON entry to reflect that PR `#5`
has been merged and the next steps are to deploy functions and test with a new
signup, and ensure labels/owner/status remain accurate (e.g., mark progress or
remove the outdated sentence).
… notifications, and content Set up structured task tracking with beads for identified issues: - PERC-INGEST (P1): Automated daily ingestion pipeline (4 tasks, chained deps) - PERC-OBSERVABILITY (P2): OpenTelemetry + Cloud Trace (3 tasks, chained) - PERC-NOTIFY (P2): User signup Slack notifications (3 tasks, chained) - PERC-CONTENT (P2): Brief & summary generation (3 tasks, cross-epic dep on INGEST) Reparented existing tasks (generate_brief, store_articles) under PERC-CONTENT epic. Installed updated git hooks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace "7+ days stale" with "Last ingestion: 2026-02-06" in PERC-INGEST epic - Bump updated_at on perception-pkm and perception-t89 after reparenting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fc7a248 to
627d6ee
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @.beads/issues.jsonl:
- Line 36: Update the JSON record for id "perception-s9t.1" by editing the
"description" field to past tense to reflect the closed state indicated by
"close_reason" (e.g., change "PR `#5` is created and pending merge" to "PR `#5` was
created and merged" or similar), and ensure any acceptance text also reflects
that PR `#5` has been merged rather than pending; locate the object by its id
"perception-s9t.1" and modify the "description" value accordingly.
- perception-s9t.1: update description to past tense (PR #5 was merged) - perception-s9t: clarify PR #5 already merged in epic description - perception-pkm, perception-t89: refresh updated_at timestamps - perception-a27.2: fix file path (routers/trigger.py not routers/rss.py) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Test plan
bd list --allshows 43 issues (28 existing + 15 new)bd blockedshows correct dependency chainsbd readysurfaces unblocked P1 tasks firstbd graph perception-a27shows 3-layer dependency tree🤖 Generated with Claude Code
Summary by CodeRabbit