On a dop 8 query why would there be a exec_context_id = 9
The attachment is also a script file with represent a join results of system tables during the execution and the estimated query which was executed.
Branches are delimited by exchange (parallelism) operators. See my parallelism article for more information on branches and execution contexts.
In the plan shown, there are 8 threads running the operators between the Distribute Streams and Gather Streams exchanges. There is another thread (thread 0, a.k.a coordinator, always ecid 0) running the serial branch of the plan to the left of the Gather Streams. There is a final thread running the serial branch of the plan to the right of the Distribute Streams. 8 + 1 + 1 = 10 threads, and 10 execution contexts, as shown in your graphic.