Skip to content

feat(news): ingest query-based RSS items and article-count snapshots - #40

Merged
CrisSTEM merged 6 commits into
mainfrom
feat/30-github-owner-aggregation
Apr 16, 2026
Merged

feat(news): ingest query-based RSS items and article-count snapshots #40
CrisSTEM merged 6 commits into
mainfrom
feat/30-github-owner-aggregation

Conversation

@CrisSTEM

Copy link
Copy Markdown
Owner

Summary

Implement query-based news RSS ingestion for v0.3.0 using the documented Google News RSS search provider. Successful runs now persist normalized news_article content items and one news.article_count metric snapshot per binding, with deterministic rerun dedupe.

Linked issue(s)

Milestone fit

This PR delivers the news_rss portion of the v0.3.0 ingestion milestone. It adds the first broad content stream for reviewer demos while keeping scheduler, API, dashboard, multi-provider selection, and enrichment work explicitly deferred.

What changed

  • added a news_rss fetcher for query-scoped bindings using the documented Google News RSS search endpoint
  • normalized accepted feed items into content_items as news_article
  • persisted one news.article_count snapshot per successful binding execution
  • added deterministic rerun-dedupe coverage and runtime tests without live network access
  • clarified the v0.3.0 provider/runtime notes in docs/configuration.md

Out of scope

  • multi-provider news selection
  • candidate-competitor discovery, sentiment, or enrichment
  • API feed endpoints or dashboard read models

Validation

Mark what you actually ran:

  • python3 ./scripts/trim-whitespace.py --check
  • go vet ./...
  • go test ./...
  • make ci
  • Manual CLI verification was performed if runtime behavior changed

Documentation impact

  • No docs update needed
  • README.md
  • SPEC.md
  • docs/
  • repository governance docs (AGENTS.md, CONTRIBUTING.md)
  • CHANGELOG.md
  • release notes

Reviewer focus

  • internal/fetch/news.go for provider request/parse/normalize behavior
  • internal/storage/ingestion.go for atomic metric/content persistence
  • internal/fetch/news_test.go for rerun dedupe and malformed RSS handling

Auditability checklist

  • Branch name follows project convention
  • PR scope matches the linked issue and milestone
  • Commits were pushed progressively, not as one final dump
  • Relevant tests were added or updated for behavior changes
  • No secrets or sensitive credentials were introduced
  • Deferred follow-up work is documented explicitly
  • Unimplemented work is not implied as completed

Notes for merge

Preferred merge method:

  • Issue PRs: Rebase and merge
  • Release aggregation PRs: Merge commit
  • Use Squash and merge only when the branch became noisy and preserving intermediate commits no longer adds value

Implement the v0.3.0 news_rss fetcher against the documented Google News RSS search provider.

Successful runs now normalize accepted feed entries into news_article content
items and persist one news.article_count metric snapshot per binding.

A small storage batch helper keeps the metric and content writes atomic for
news ingestion.
Add deterministic news_rss tests with httptest fixtures.

The suite covers successful parsing, max_items handling, rerun-safe content
dedupe, malformed RSS failures, and the runtime path with the default registry
updated for news_rss support.
Document the v0.3.0 provider/runtime behavior for query-based news bindings.

The configuration docs now make the Google News RSS /rss/search execution path,
news_article normalization, and news.article_count snapshot semantics explicit.
@CrisSTEM
CrisSTEM merged commit 6a017fa into main Apr 16, 2026
1 check passed
@CrisSTEM
CrisSTEM deleted the feat/30-github-owner-aggregation branch April 16, 2026 13:45
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.

feat(news): ingest query-based news RSS items and article-count snapshots

1 participant