Skip to content

feat: respect blocked tags in briefing requests#3629

Merged
davidercruz merged 6 commits into
mainfrom
eng-810-respect-blocked-tags-in-briefing-prompt-and-switch-to-gemini
Feb 25, 2026
Merged

feat: respect blocked tags in briefing requests#3629
davidercruz merged 6 commits into
mainfrom
eng-810-respect-blocked-tags-in-briefing-prompt-and-switch-to-gemini

Conversation

@davidercruz
Copy link
Copy Markdown
Contributor

@davidercruz davidercruz commented Feb 25, 2026

Summary

  • fetch blocked keyword preferences for briefing generation alongside allowed tags
  • include blocked tags in the briefing request payload sent to daily-feed
  • update briefing worker tests to assert blocked tags are propagated in outbound briefing calls

Key decisions

  • kept compatibility with current schema package versions by attaching blockedTags via a typed compatibility helper until generated schema clients expose the new field directly
  • preserved existing briefing event assertions where stable, while focusing new assertions on the HTTP request payload that drives downstream behavior

Linear issue: https://linear.app/dailydev/issue/ENG-810/respect-blocked-tags-in-briefing-prompt-and-switch-to-gemini-3

Closes ENG-810


Created by Huginn 🐦‍⬛

@pulumi
Copy link
Copy Markdown

pulumi Bot commented Feb 25, 2026

🍹 The Update (preview) for dailydotdev/api/prod (at e4e2f54) was successful.

✨ Neo Explanation

This is a standard production deployment rolling out a new application version across all 7 services and 32 cron jobs, with fresh database and ClickHouse migration jobs created for the new build and the old migration jobs cleaned up.

Root Cause Analysis

A new version of the application has been built and is being deployed to production. All workloads are being updated to roll out the new container image, replacing the previous build across every deployment and cron job.

Dependency Chain

The new application version cascades uniformly across the entire platform:

  • 7 Deployments (API, background workers, WebSocket server, private API, Temporal, personalized digest, worker jobs) are all being updated to pull the new container image.
  • 32 CronJobs are updated in-place to reference the new image version for their next scheduled runs.
  • 2 one-time migration Jobs (database and ClickHouse) tied to the previous build are being deleted, and 2 new equivalent migration jobs for the new build are being created — this is the standard pattern for running schema migrations on each deploy.

Risk analysis

No stateful resources (databases, storage buckets, persistent volumes) are being replaced or deleted. The migration jobs are ephemeral by design and follow the expected create/delete pattern per release. Deployments will perform rolling updates, so no downtime is expected.

Resource Changes

    Name                                                       Type                           Operation
~   vpc-native-update-tag-recommendations-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-sync-subscription-with-cio-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-update-tags-str-cron                            kubernetes:batch/v1:CronJob    update
~   vpc-native-update-achievement-rarity-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-personalized-digest-deployment                  kubernetes:apps/v1:Deployment  update
~   vpc-native-clean-zombie-opportunities-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-update-trending-cron                            kubernetes:batch/v1:CronJob    update
~   vpc-native-worker-job-deployment                           kubernetes:apps/v1:Deployment  update
~   vpc-native-generic-referral-reminder-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-squad-posts-analytics-refresh-cron              kubernetes:batch/v1:CronJob    update
~   vpc-native-check-analytics-report-cron                     kubernetes:batch/v1:CronJob    update
~   vpc-native-post-analytics-clickhouse-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-daily-digest-cron                               kubernetes:batch/v1:CronJob    update
~   vpc-native-calculate-top-readers-cron                      kubernetes:batch/v1:CronJob    update
+   vpc-native-api-db-migration-e92f374c                       kubernetes:batch/v1:Job        create
~   vpc-native-user-profile-analytics-clickhouse-cron          kubernetes:batch/v1:CronJob    update
~   vpc-native-private-deployment                              kubernetes:apps/v1:Deployment  update
~   vpc-native-clean-gifted-plus-cron                          kubernetes:batch/v1:CronJob    update
+   vpc-native-api-clickhouse-migration-e92f374c               kubernetes:batch/v1:Job        create
~   vpc-native-generate-search-invites-cron                    kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-zombie-user-companies-cron                kubernetes:batch/v1:CronJob    update
~   vpc-native-update-current-streak-cron                      kubernetes:batch/v1:CronJob    update
~   vpc-native-user-profile-updated-sync-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-expire-super-agent-trial-cron                   kubernetes:batch/v1:CronJob    update
-   vpc-native-api-db-migration-f38d9946                       kubernetes:batch/v1:Job        delete
~   vpc-native-update-highlighted-views-cron                   kubernetes:batch/v1:CronJob    update
~   vpc-native-update-views-cron                               kubernetes:batch/v1:CronJob    update
~   vpc-native-post-analytics-history-day-clickhouse-cron      kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-zombie-users-cron                         kubernetes:batch/v1:CronJob    update
~   vpc-native-update-source-tag-view-cron                     kubernetes:batch/v1:CronJob    update
~   vpc-native-user-posts-analytics-refresh-cron               kubernetes:batch/v1:CronJob    update
~   vpc-native-ws-deployment                                   kubernetes:apps/v1:Deployment  update
-   vpc-native-api-clickhouse-migration-f38d9946               kubernetes:batch/v1:Job        delete
~   vpc-native-clean-stale-user-transactions-cron              kubernetes:batch/v1:CronJob    update
~   vpc-native-deployment                                      kubernetes:apps/v1:Deployment  update
~   vpc-native-user-profile-analytics-history-clickhouse-cron  kubernetes:batch/v1:CronJob    update
~   vpc-native-update-source-public-threshold-cron             kubernetes:batch/v1:CronJob    update
~   vpc-native-temporal-deployment                             kubernetes:apps/v1:Deployment  update
~   vpc-native-hourly-notification-cron                        kubernetes:batch/v1:CronJob    update
~   vpc-native-bg-deployment                                   kubernetes:apps/v1:Deployment  update
~   vpc-native-personalized-digest-cron                        kubernetes:batch/v1:CronJob    update
... and 4 other changes

@davidercruz davidercruz requested review from capJavert and rebelchris and removed request for capJavert February 25, 2026 11:07
Copy link
Copy Markdown
Contributor

@rebelchris rebelchris left a comment

Choose a reason for hiding this comment

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

Not blocking, maybe just check with Ante as well.

Comment thread src/common/brief.ts Outdated
}),
});

type UserBriefingRequestWithBlockedTags = UserBriefingRequest & {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We also got one without blockedTags?
Else it can just become in the base one i think.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this should be updated in schema yes

Comment thread src/common/brief.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
expect.anything(),
'api.v1.brief-ready',
{
payload: new UserBriefingRequest({
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

we don't want to change this, this purposly checks schema is valid

Comment thread src/common/brief.ts Outdated
}),
});

type UserBriefingRequestWithBlockedTags = UserBriefingRequest & {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this should be updated in schema yes

Comment thread src/common/brief.ts
davidercruz and others added 3 commits February 25, 2026 14:12
…test assertions

Remove workaround type and setter now that @dailydotdev/schema@0.2.73
includes blockedTags on UserBriefingRequest. Revert test assertions to
strict schema validation per review feedback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The fixture body text uses a Unicode RIGHT SINGLE QUOTATION MARK
(U+2019) in "OpenAI's" which is preserved through BriefingSection
serialization. The assertion must use the same character.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@davidercruz davidercruz merged commit c7a7426 into main Feb 25, 2026
9 checks passed
@davidercruz davidercruz deleted the eng-810-respect-blocked-tags-in-briefing-prompt-and-switch-to-gemini branch February 25, 2026 16:10
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.

3 participants