The bottleneck is retained end-to-end transaction contexts, not link transport capacity. A link credit cannot safely create storage for an untracked transaction.
Common trap: Giving a generic fix without identifying the boundary and unmet obligation in this example.
Separating message roles supports concurrent request, response, data and snoop traffic. Correct progress also depends on protocol dependencies, flow control, buffering and network service. Channel separation is not a deadlock proof, and the protocol does not impose a universal core-count limit on a competing design.
Common trap: Treating CHI as 'AXI with snoops'.