I am confused by your output as talos says 4 minutes, but I see many minutes used up on these talos jobs:
I would expect talos to have significantly more than 4 minutes- maybe 4 minutes is the average or max value.
To answer your questions, they are both hard.
For a 'default' job this is something that is scheduled by default. you could download the task-graph that is generated as part of the original decision task and parse that list and determine what was scheduled by default. That would be the ultimate source.
Determining a backfill might be similar in that there exists a decision task job called 'backfill' and that fills in jobs for many previous revisions. The key here is a job is added after the build is completed. Looking at taskcluster proper will give you more details.
For example here is a backfill:
this backfills android debug wr3:
if you look in treeherder the previous pushes do not have decision tasks, but they have extra jobs. Those jobs are owned by the original push author, not the person who initiated the retrigger/backfill.
If you dig in deeper and look at the taskcluster details:
you can see a dependency list and that dependency list will say the build it depends on as well as the action task job (backfill or retrigger). Now clicking on the backfill job, you can see who scheduled it:
in this case csabou did :)
I think the next logical question is how to get this information programatically. I am not sure if the taskcluster information is easy to access via re-dash, maybe there is additional information in treeherder tables indicatinga backfill or retrigger request, as it stands I am not that familiar with the table structures.
In the past I have done something similar with an active-data-recipe:
this is limited in the sense that it takes the dependent build and assumes we schedule jobs in a really short time window after the build finishes. While that is true most of the time, what if a build is scheduled as a result of a backfill? That recipe doesn't distinguish between retrigger and backfill.
If you find that there is information in taskcluster but not in re-dash or activedata, then please ask that the taskcluster data be added to activedata- we already ingest most of the taskcluster data, it is probably just some additional fields needed to ingest.