Summary
Automatically detect when prerequisite tasks finish and dispatch a transactional TASK_UNBLOCKED outbox notification to dependent task assignees and watchers, alerting them that work is ready to proceed.
Background & Context
Tech Tree DAGs and prerequisite dependencies are central to dgg-pm. However, when Task A is marked completed, contributors assigned to dependent Task B currently receive no notification that their blocker was resolved. They must periodically check the forum to discover when they can begin.
Proposed Capabilities
- Unblock Evaluation in
TaskService.update_status():
- When a task transitions to
TaskStatus.COMPLETED, query all immediate downstream dependent tasks.
- For each dependent task, check if all of its prerequisite dependencies are now in
TaskStatus.COMPLETED state.
- Transactional Event Generation:
- For each newly unblocked task, atomically enqueue an
EventType.TASK_UNBLOCKED outbox event with task metadata, assignee ID, and thread snowflake.
- Notification Delivery:
- In
DiscordNotifier, dispatch an alert via DM / thread ping:
"🎉 All prerequisite blockers for [INF-2] Frontend UI have completed! You are now clear to begin work."
- Includes a direct jump link button to open the Task Thread Workspace.
Acceptance Criteria
Summary
Automatically detect when prerequisite tasks finish and dispatch a transactional
TASK_UNBLOCKEDoutbox notification to dependent task assignees and watchers, alerting them that work is ready to proceed.Background & Context
Tech Tree DAGs and prerequisite dependencies are central to dgg-pm. However, when Task A is marked completed, contributors assigned to dependent Task B currently receive no notification that their blocker was resolved. They must periodically check the forum to discover when they can begin.
Proposed Capabilities
TaskService.update_status():TaskStatus.COMPLETED, query all immediate downstream dependent tasks.TaskStatus.COMPLETEDstate.EventType.TASK_UNBLOCKEDoutbox event with task metadata, assignee ID, and thread snowflake.DiscordNotifier, dispatch an alert via DM / thread ping:Acceptance Criteria
TASK_UNBLOCKEDevent enqueued only when 100% of prerequisites for a task are satisfied.DM,Channel,Both).