pub async fn query_substrate(
substrate: &dyn SubstrateProvider,
lens: &Lens,
collective_id: CollectiveId,
) -> Result<(Vec<Experience>, Vec<Activity>)>Expand description
Query the substrate for perception candidates.
If lens.purpose_embedding is set, uses semantic search via search_similar.
Otherwise falls back to get_recent with domain post-filtering.