pub fn build_decision_surface_output(
surface: &DecisionSurface,
) -> DecisionSurfaceOutputExpand description
Project a DecisionSurface into the separable, action-bearing envelope.
Invariant (the trust mechanism, enforced here in debug builds): every decision
the deterministic layer surfaces MUST carry a signal_id it emitted, so the
separable envelope can never leak an unanchored decision. A category outside
the SOLID-3 is structurally impossible (ALL_CATEGORIES is the full set).