f0d0d758d2
asset-engine's seed_surface contract needs reproducibility.seed_field to name which CatalogField carries the seed so the UI can render a Roll button and the server can fill empty seeds before persistence. SAO's seed field is type=number, satisfying CatalogService._validate_seed_field. ace-step is intentionally not declared here — actual_seeds is type=json (a list) with an upstream reproducibility gap; the planned fix surfaces resolved seeds via response header, pending a separate contract.