would you please check if it is acceptable to put the inherited values directly into the CommonMarginBlock? It might have been cleaner to always get the value via the parent FO but I think in this case it helps simplifying the code in TraitSetter and BlockLayoutManager.
It looks wrong, it feels wrong, but I'm not at all sure if it is wrong.
But I would be tempted to drop the use of space-[start,end] traits and instead let the renderers use [start,end]-indent traits and the reference rectangle to calculate the start position of the content rectangle.
Alternatively calculate space-[start,end] based on the [start,end]-indent traits on the parent area rather then the parent fo.