[go: up one dir, main page]

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 to ops during 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