This sounds like a case for the hidden collection approach to reporting and design. So what do I mean by a 'hidden collection', well we're all used to having collections like Notes, Attachments and Assingments that are visible to analysts and provide the useful ongoing information on the process we're working with. The hidden collection is one that helps us with querying and reporting.
What I suggest you do is create a new object that will become a collection on Incident. By doing that, you enable it to become an action in a process design. More specifically an automatic action in a process design. When you create that object, make sure you build a series of attributes that relate to the various values that you have talked about in your question. Having built a window for it, place it as an automatic action in the process at the required transitions between statuses and use calculations and value types to populate all the data you need. Don't expose this as part of the tree or tabs on the Incident window as you don't need anyone to know about it. What you now have a a single table that will collect every instance where the process has gone from Triage to In Progress with all of the data you need. Now just write the queries and reports on that table and you should be pretty much there.
Many thanks as usual Andy