wwstage capped defers at 16 and SILENTLY DROPPED the 17th; cstage capped at 32. Align the cap at 32 and make exceeding it a loud compile error in BOTH stages — the silent 16-vs-32 split was the bug (a defer that never runs is a leaked resource). Both stages move in one commit: one cap contract.