pub fn plan_appearance(
bytes: &[u8],
request: &AppearanceRequest,
) -> Result<AppearancePlan, String>Expand description
schema must come from the host’s validated parser; nextExpressId is its
reserved allocator watermark, strictly greater than every effective-source id.
Images must already have a model-owned, collision-free relative filename.
Returned UVs describe an UNSPLIT canonical item; fragment consumers must remap
source corners or refuse a mismatched vertex count, never truncate UV arrays.