Chain conditional command blocks are not working as intended.
Say you have command block A with the command "testfor @p" - This command should always succeed.
Command block A is pointing into command block B which is a chain and always on command block with the command "say x".
If command block B is unconditional and you activate block A, "[@] x" will appear in the chat, meaning both command blocks have executed.
However, if you set block B to conditional and activate block A again, B does not always trigger.
After some testing, I have discovered that if block B is conditional and block A has executed successfully, block B should always trigger, but actually, block B only triggers when block A and block B are pointing in the same direction.
Conditional command blocks check the command block behind them, not the previous one in the chain.