Skip to content

chore!: prepare release with ingestion hardening and dependency updates - #142

Merged
KyleTryon merged 2 commits into
mainfrom
chore/release-preparation
Sep 20, 2026
Merged

KyleTryon merged 2 commits into
mainfrom
chore/release-preparation

Conversation

@KyleTryon

@KyleTryon KyleTryon commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Description

Failing feeds repeatedly occupied the oldest-successful-fetch batch, starving healthy feeds. Schedule by attempts, run batches each minute, and apply refresh intervals per source. Add atomic fetch leases, ownership checks, bounded responses, accurate storage failures, retry backoff, and persistent ingestion-health reporting.

Prepare the next release with dependency upgrades, security fixes, UI improvements, shared helpers, and a migration/release runbook.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Refactoring
  • Performance improvement
  • Test update
  • Build/CI update

Changes Made

  • Fix starvation and concurrent/partial ingestion; expose last successful fetch, failures, and retry timing in feed cards. Emit Sentry errors for sustained failures or growing backlogs.
  • Replace shifting article cursors with publication-time/ID keyset pagination; preserve loaded articles during pagination failures and add accessible retry/loading states.
  • Harden authentication rate limits, session revocation, outbound feed requests, error responses, and telemetry redaction.
  • Consolidate article filters/counts, feed metadata parsing, public feed handling, response-size enforcement, query options, and cron schedules.
  • Upgrade workspace dependencies and CI/Docker tooling; retain documented TypeScript/Node type compatibility constraints. Pin Actions and ensure manual Docker publication builds the requested tag.

Migration and release

Follow docs/release-checklist.md. Apply all pending migrations before the updated API:

  1. 0012_overrated_toxin.sql: persistent authentication rate limits.
  2. 0013_feed_fetch_attempts.sql: attempt timestamp/index, backfilled from successful fetch time.
  3. 0014_feed_reliability.sql: feed-health state, leases, retries, and failure details.

Cloudflare workflows migrate before API deployment and deploy the frontend after the API. Node startup migrates automatically. Rehearse preserved-data upgrades separately: the staging workflow wipes its database.

Breaking: Node 24+ and pnpm 12.4.2; object article cursors replace numeric cursors; feeds must use public destinations and responses must fit within 5 MiB. Node proxy headers require explicit trusted-proxy configuration. Deploy matching API/frontend versions; existing tabs may need a reload.

Back up production before migration. Keep additive schema changes during ordinary application rollback. Publishing the GitHub app release triggers production deployment and Docker publication; this PR does not deploy production.

Testing

  • Tested locally, including desktop/mobile browser smoke checks
  • Added/updated regression tests
  • pnpm test: 1,585 passed across 108 files; five existing skips
  • pnpm pre-check: lint, formatting, strict types, and production builds in a clean tracked-source copy after a frozen install and Tricorder build
  • Worker deployment dry-run
  • Disposable SQLite startup/migration check and migration regression tests
  • Dependency audit: zero reported vulnerabilities
  • git diff --check

Documentation

  • Review/dependency report and deployment guide updated
  • Release checklist includes backup, upgrade rehearsal, deployment order, feed recovery checks, and rollback

Checklist

  • Self-review and repository validation completed locally
  • Regression tests cover ingestion concurrency, retries, pagination, response limits, and unchanged-feed recovery without false stalled-ingestion alerts
  • GitHub CI and Docker build/smoke validation pass on commit 2498efa
  • Preserved-data staging rehearsal and production D1 access/migration-state verification
  • Post-deployment verification of the originally reported missing articles and feed backlog recovery

Production database access was unavailable during review. No production migrations or deployments were performed. Articles already removed from upstream feeds cannot be recovered by the scheduling fix alone.

Fix feed starvation, fence concurrent fetches, expose feed health, and use stable article cursors. Harden authentication and outbound requests, improve article UI behavior, and consolidate shared logic.

Include migrations 0012 through 0014 and a release runbook covering backups, rollout, verification, and rollback.

BREAKING CHANGE: require Node.js 24 and pnpm 12.4.2, replace numeric article cursors, and enforce public feed destinations and a 5 MiB response limit. Apply migrations before deploying matching API and frontend versions.
@KyleTryon
KyleTryon marked this pull request as ready for review September 20, 2026 01:55
@KyleTryon
KyleTryon merged commit e0e4cc5 into main Sep 20, 2026
31 of 32 checks passed
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