Add async worker and feature flag for stale todo resolution
Goal
Add async processing capability and feature flag infrastructure. Still no user-facing changes.
Related to #20637 (closed)
Depends on: Phase 1a (link after creation)
Implementation Details
1. Sidekiq Worker
Location: app/workers/merge_requests/resolve_stale_todos_worker.rb
- Idempotent (safe to retry)
- Low urgency (doesn't block user actions)
- Graceful error handling for missing records
2. Feature Flag
Location: config/feature_flags/development/auto_resolve_stale_mr_todos.yml
- Type:
development(will change toopsduring rollout) - Scope: Project-level (allows per-project enablement)
- Default:
false(disabled by default)
Test Coverage Required
Location: spec/workers/merge_requests/resolve_stale_todos_worker_spec.rb
-
Successfully calls TodoService method -
Passes correct parameters to service -
Handles missing merge request gracefully (no error) -
Handles missing user gracefully (no error) -
Is idempotent (can run multiple times safely) -
Has correct worker attributes (urgency, category, etc.)
Files to Create
-
app/workers/merge_requests/resolve_stale_todos_worker.rb -
spec/workers/merge_requests/resolve_stale_todos_worker_spec.rb -
config/feature_flags/development/auto_resolve_stale_mr_todos.yml
Acceptance Criteria
-
Worker successfully calls TodoService method from Phase 1a -
Worker handles missing records gracefully -
Worker is idempotent -
Feature flag is registered correctly -
100% test coverage for worker -
All CI jobs pass
Estimated Effort: 2 days