Skip to content

Move persistence to Postgres and messaging to durable Wolverine - #32

Merged
ChrisonSimtian merged 1 commit into
mainfrom
feat/postgres-wolverine
Jul 26, 2026
Merged

Move persistence to Postgres and messaging to durable Wolverine#32
ChrisonSimtian merged 1 commit into
mainfrom
feat/postgres-wolverine

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Contributor

The DR-009 data + messaging foundation — "5a" of increment #5. Agents (crawlers + downloader) are the follow-up (5b).

Persistence → Postgres

  • AppHost provisions Postgres via Aspire (AddPostgres + AddDatabase); the API references it and gets the connection string injected.
  • Infrastructure defaults to Npgsql — provider abstraction kept (postgres | sqlite | mssql, swap by config). EF Core bumped 10.0.3 → 10.0.4 (Npgsql 10.0.3's floor).
  • Regenerated the EF migration for Postgres (uuid / timestamp with time zone); dropped the old SQLite migration; design-time factory → Npgsql. API runs migrations at startup.

Messaging → durable Wolverine

  • Wolverine persists messages with Postgres + durable local queues — DR-009's Postgres-transport-default (RabbitMQ stays an opt-in swap).

Removed the dead TickerQ pipeline (~1030 LOC, verified unwired)

  • Deleted Jobs/* (minus the wired FileNamingService) + BackgroundServices/* — the old [TickerFunction] download/catalog pipeline, referenced by nothing (AddTickerQJobs was commented out) and superseded by DR-009. All TickerQ packages dropped.
  • Salvage: the ffmpeg/download logic is in git history + playground for the Downloader agent (5b).
  • No-op TickerQDownloadQueueNullDownloadQueue placeholder (real Wolverine download messaging lands with the Downloader agent).

Verified

Builds green; 62 tests pass (incl. the ArchUnitNET layering tests — the hexagon still holds). Runtime against a live Postgres is exercised when the Aspire fleet runs locally (Docker) — CI builds + tests, it doesn't spin the fleet.

Next (5b)

Create Presentation/Agents/{Ard,Zdf,Downloader} hosts (each WithReference(db) + Wolverine), then port the crawler logic into Application/Crawling slices.

DR-009 data + messaging foundation (the "5a" slice — agents come in 5b).

Persistence → Postgres:
- AppHost provisions Postgres via Aspire (AddPostgres + AddDatabase); the API
  references it and gets the connection string injected.
- Infrastructure defaults to the Npgsql provider (provider abstraction kept:
  postgres | sqlite | mssql swappable by config). EF Core bumped 10.0.3 → 10.0.4
  (Npgsql 10.0.3 floor). Regenerated the EF migration for Postgres (uuid/timestamptz);
  dropped the old SQLite migration. Design-time factory switched to Npgsql. The API
  runs migrations at startup.

Messaging → durable Wolverine:
- Wolverine persists messages with Postgres (durable local queues) — DR-009's
  Postgres-transport-default; RabbitMQ remains an opt-in swap.

Remove the dead TickerQ pipeline (~1030 LOC, verified unwired):
- Deleted Jobs/* (minus the wired FileNamingService) + BackgroundServices/* — the old
  TickerQ-attributed download/catalog pipeline, superseded by DR-009 (agents + Wolverine)
  and referenced by nothing. Dropped all TickerQ packages. Salvage the ffmpeg/download
  logic from git history for the Downloader agent (5b).
- The no-op TickerQDownloadQueue → NullDownloadQueue placeholder (real Wolverine
  download messaging lands with the Downloader agent).

Builds green; 62 tests pass (incl. the ArchUnitNET layering tests). Runtime against a
live Postgres is exercised when the Aspire fleet runs (not in CI, which builds + tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ChrisonSimtian
ChrisonSimtian merged commit bbe18ce into main Jul 26, 2026
1 check passed
@ChrisonSimtian
ChrisonSimtian deleted the feat/postgres-wolverine branch July 26, 2026 03:10
@ChrisonSimtian ChrisonSimtian added the enhancement New feature or request label Aug 2, 2026
@ChrisonSimtian ChrisonSimtian changed the title feat(5a): Postgres + durable Wolverine; remove dead TickerQ pipeline Move persistence to Postgres and messaging to durable Wolverine Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant