Signals vs Asynchronous Activity Completion

TLDR; I would use signals for 3, 4, and 6.

While you could technically use the async activity completion for these, signals are a better fit. The reason is that initiating an operation can fail and should be retried and this requires timeouts and retry policy just for that operation. The reply from the user is usually can take much longer and has its own timeouts.

Another reason for using signals for manual interactions is that such interactions frequently have multiple states. For example, a task can be available, assigned, timed out, completed, etc. In this case modeling external events that happen to it through signal is the only way to track its state transitions.