#6192·opensre

Work-item Slack reminders accept undeliverable targets

Author: Devesh36Created Sep 11, 2026Updated Sep 11, 2026

Summary

Work-item reminder validation accepts Slack targets with an empty chat_id, even when no Slack webhook is configured.

This allows a reminder to be created successfully, but the scheduler later fails because there is no usable destination.

An explicit empty delivery_targets entry also prevents Slack default-channel resolution.

Reproduction

Create a Slack reminder without a chat ID or webhook:

bash
opensre work add \
  --title "Check deployment" \
  --remind-at "2026-09-12T09:00" \
  --channel-provider slack

The reminder is accepted. At execution time, Slack delivery fails because the target has no channel and no webhook destination.

Expected behavior

Slack should only be accepted without a chat_id when a webhook is actually configured.

If a Slack default channel is configured, the scheduler should resolve it before creating an explicit delivery target.

Affected files

  • tools/system/work_items/delivery.py
  • infrastructure/scheduling/scheduler/delivery_plan.py
  • infrastructure/scheduling/scheduler/delivery.py

Acceptance criteria

  • Empty Slack targets are rejected unless a webhook is configured.
  • Configured Slack default channels are resolved correctly.
  • Reminder creation reports an actionable validation error.
  • Add tests for webhook-only, default-channel, and unconfigured Slack cases.