Quick answer: Godot 4 shader's render_priority not affecting draw order when objects on different CanvasLayers? CanvasLayer ordering trumps render_priority - work within one CanvasLayer.
Two objects with render_priority 0 and 10; on different CanvasLayers; layer ordering wins.
Same CanvasLayer
Move both to one layer; render_priority decides order.
Or use CanvasLayer for global order
CanvasLayer 0 = ground; 10 = UI. Within each, render_priority.
Audit per object
Each object's CanvasLayer; render_priority. Document.
“Render order has multiple axes. Higher beats lower.”
Document the CanvasLayer / render_priority hierarchy at the project level. The bug class is silent until you notice the order.