I am a bit curious why digital terminology includes notions like bus, engine, throttle, starter,body,pipe,glitch,timing and drivers
sounds like they borrowed from transport industry. A bus cannot be driven by more than one driver. if there are two drivers or more then they should agree on a schedule instead of arguments or a fight. This is analogous to logic decisions...the poor compiler and the poor software engineer behind it cannot make the drive decisions for you because they don't have prior knowledge of the application.
The basic rule is that any node is driven through one single concurrent statement or one or more sequential statements in the same process. The multiple seq statements imply either a construct for decision making or an overwrite situation if there are no conditions.
Thus: data(7 downto 0) <= x"00";
data(7) <= '1';
is ok within a process to overwrite data(7) though you may get warning.
This is main difference from software mindset. The compiler has to decide at compile time what the logic is. It does not design a circuit to follow your seq statements literally...