Skip to content

chore(beads): epic setup for ingestion, observability, notifications, content#6

Merged
jeremylongshore merged 5 commits intomainfrom
chore/beads-epic-setup
Feb 13, 2026
Merged

chore(beads): epic setup for ingestion, observability, notifications, content#6
jeremylongshore merged 5 commits intomainfrom
chore/beads-epic-setup

Conversation

@jeremylongshore
Copy link
Collaborator

@jeremylongshore jeremylongshore commented Feb 13, 2026

Summary

  • Creates 4 beads epics with 13 child tasks to track identified issues from debugging session
  • PERC-INGEST (P1): Automated daily ingestion pipeline — Cloud Scheduler API, trigger endpoint, scheduler job, MCP_BASE_URL config
  • PERC-OBSERVABILITY (P2): OpenTelemetry + Cloud Trace monitoring
  • PERC-NOTIFY (P2): User signup Slack notifications (PR feat: Slack notification on new user signup #5 merge → deploy → test)
  • PERC-CONTENT (P2): Brief & summary generation, blocked on ingestion epic
  • Reparented existing tasks (generate_brief, store_articles) under PERC-CONTENT
  • Installed updated beads git hooks

Test plan

  • bd list --all shows 43 issues (28 existing + 15 new)
  • bd blocked shows correct dependency chains
  • bd ready surfaces unblocked P1 tasks first
  • bd graph perception-a27 shows 3-layer dependency tree
  • Verify JSONL imports cleanly on fresh clone

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Reorganized backlog into content-centric epics; reparented multiple items and clarified cross-issue dependencies and timestamps.
    • Updated ingestion and notification backlog items to reflect merged PR, new deployment and testing steps, and explicit last-ingestion dates.
    • Added/adjusted backlog entries for routing and runtime configuration (including MCP_BASE_URL) and aligned related task statuses.

@gemini-code-assist
Copy link

Summary of Changes

Hello @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

  • New Epics and Tasks: Four new epics (PERC-INGEST, PERC-OBSERVABILITY, PERC-NOTIFY, PERC-CONTENT) and thirteen associated child tasks were created to track significant development areas.
  • Automated Ingestion Pipeline: A priority 1 epic (PERC-INGEST) was defined to establish an automated daily ingestion pipeline, including Cloud Scheduler API enablement, a trigger endpoint, a scheduler job, and MCP_BASE_URL configuration.
  • Observability Setup: A priority 2 epic (PERC-OBSERVABILITY) was added to integrate OpenTelemetry and Cloud Trace for monitoring, with tasks to uncomment and configure instrumentation, add an exporter, and verify traces.
  • User Notifications: A priority 2 epic (PERC-NOTIFY) was introduced for user signup Slack notifications, outlining steps to merge a related PR, deploy Cloud Functions, and test the notification system.
  • Content Generation: A priority 2 epic (PERC-CONTENT) was created for brief and summary generation, which is dependent on the ingestion epic. Existing tasks for brief generation and article storage were reparented under this epic.
  • Task Reparenting: Existing tasks 'Implement MCP store_articles' (perception-pkm) and 'Implement MCP generate_brief' (perception-t89) were reparented under the new PERC-CONTENT epic (perception-t9w).
Changelog
  • .beads/issues.jsonl
    • Added new epic 'PERC-OBSERVABILITY: OpenTelemetry + Monitoring' (perception-80v) with three child tasks.
    • Added new epic 'PERC-INGEST: Automated Daily Ingestion Pipeline' (perception-a27) with four child tasks.
    • Added new epic 'PERC-NOTIFY: User Signup Slack Notifications' (perception-s9t) with three child tasks.
    • Added new epic 'PERC-CONTENT: Brief & Summary Generation' (perception-t9w) with one child task.
    • Reparented task 'Implement MCP store_articles' (perception-pkm) under 'PERC-CONTENT' (perception-t9w).
    • Reparented task 'Implement MCP generate_brief' (perception-t89) under 'PERC-CONTENT' (perception-t9w).
  • .beads/last-touched
    • Updated the last touched issue ID from 'perception-8c0' to 'perception-a27'.
Activity
  • The PR description outlines a test plan including verifying issue counts, dependency chains, priority surfacing, and graph visualization using bd commands.
  • The PERC-NOTIFY epic explicitly mentions a pending merge of PR feat: Slack notification on new user signup #5, deployment of functions, and testing with new signups as part of its completion.
  • The PR author confirmed the installation of updated beads git hooks.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link

coderabbitai bot commented Feb 13, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

Updated 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 .beads/last-touched updated to perception-s9t.

Changes

Cohort / File(s) Summary
Backlog / Issues
​.beads/issues.jsonl
Reparented several issues under PERC-CONTENT (perception-pkm, perception-t89, perception-t9w), updated statuses/timestamps/dependencies, added/annotated ingestion routing files (perception_app/mcp_service/routers/trigger.py, perception_app/mcp_service/main.py) and clarified last-ingestion dates and required MCP configuration.
Notifications / S9T flow
​.beads/issues.jsonl
Marked PR merge for perception-s9t (commit referenced), closed perception-s9t.1, added follow-ups perception-s9t.2 (deploy Cloud Functions) and perception-s9t.3 (test Slack dashboard signup).
Last-touched metadata
​.beads/last-touched
Changed sole value from perception-s9t.1 to perception-s9t to reflect the most recently touched backlog item.
Other backlog items
​.beads/issues.jsonl
Minor timestamp alignments and preserved signatures for other items (e.g., perception-a27.1/.2/.3/.4, perception-97b, perception-80v*, perception-q34, etc.); dependencies reorganized but no public API signature changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐇 I hopped through tickets, nudged a chore,

Reparented tasks and tuned a timestamp more,
A router noted, an env var named,
PR merged — next deploys framed,
Nose twitch — the backlog hops ashore.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: creating epic structure for ingestion, observability, notifications, and content tracking in the beads system.
Description check ✅ Passed The description covers what the PR does (creates 4 epics with 13 tasks), why (track issues from debugging), and includes a detailed test plan with verification steps completed and pending.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/beads-epic-setup

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment on lines +21 to +22
{"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"}]}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

{"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"}]}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

jeremylongshore and others added 4 commits February 13, 2026 08:06
… 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>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@jeremylongshore jeremylongshore merged commit 59a7795 into main Feb 13, 2026
8 of 9 checks passed
@jeremylongshore jeremylongshore deleted the chore/beads-epic-setup branch February 13, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant