I'm not seeing any information in the database to indicate that a task was completed because of a timeout.
My thought is to utilize Escalations inside the dialog component, and set the timeout value for the timeout action to something that will likely never be reached, so that escalations handle the timeouts instead.
So we can move the "Set Status" component that is being used on the exit path illustrated here:
and create an escalation item, and place that status update component in that model instead (see below).
When a timeout occurs, the flow leaves the dialog component and loops back around, closing out the active task and creating a new one.
When an escalation occurs, the task remains the same. This way, you can still do anything you want for the "escalation" (such as notifying a technician of a task expiration) but the timed out tasks you don't want to show up in the report will not be there at all. For example, here I am updating the process status to indicate that it has timed out. This will occur when the escalation time passes, but no new task is created, because the flow never leaves the dialog component.
So for practical instructions, since you're using 7.1, you should be able to (supportably) edit the SD.IncidentManagement project and copy whatever you want to occur from the "timed out" path into an escalation model instead, and set the "Timeout Time Span" to whatever threshold you think is best. During the amount of time I spent considering this answer, no caveats or risks occurred to me, but that's not to say that there won't be side effects to making this change.
Maybe someone else has a more elegant solution, but that's what I have for now. Let me know if you need more info.
-andrew