pub fn prepare_facet_constraints(
authoring: &[InterlaceModule],
guests: &[InterlaceModule],
exclusions: &[FieldExclusion],
) -> Result<InterlaceModule, PreparationError>Expand description
Compose authoring and guest policies into one canonical operand.
Present selection and exposure facets of every input intersect; absent facets add no local constraint. Directional veto rules union. Each distinct module’s helpers are isolated, including dependencies under negation, cardinality, and TopK. Guest record facts and admission order resolve through the authoring inputs’ exposure view. Exclusions subtract records from every present selection and exposure facet and from that view. This produces one ordinary operand, not another exchange-plan input. Each class is order-insensitive and deduplicated; a module in both classes contributes once to each. Empty authoring input and helper-only programs are policy errors. Veto-only policies are valid. Preparation failures retain their typed category.