Actors of fetch and exercise nodes

I’m having trouble understanding the actors of fetch actions. The term “actor” is used throughout our documentation, but I couldn’t find a good explanation of what it is.

From the ledger model:

The required authorizers of an Exercise or a Fetch action are its actors.

From the introduction to Daml:

The required authorizers of a fetch action are somewhat dynamic and covered later.

From the language reference for fetch():

The submitting party must be an observer or signatory on the contract, otherwise fetch fails

I assume that the actions described in the ledger model correspond to the nodes of a transaction (as implemented in com.daml.lf.transaction).
What are the actors of Exercise and Fetch nodes? Are the actors of Exercise nodes the controllers of the corresponding choice? Do the actors of Fetch nodes depend on the Daml function that produced them (since the different lookup/fetch functions have different authorization rules)?

Let’s start by what happens during interpretation in Daml Engine:

Daml Engine has a set of authorizing parties at any point. For the root nodes those are the actAs parties in your command. Within the body of a choice, it’s the union of signatories & controllers. Given that there is no fetch command on the ledger API we’ll only call it from a choice body.

Next, we have the stakeholders of the contract you’re fetching.

The authorization check checks that the intersection of stakeholders & authorizing parties is non-empty.

So what are the actors? It’s exactly this intersection of stakeholders & authorizing parties.