pub fn resolve<R: CommandRunner + ?Sized>( specs: &Value, base: &[String], runner: &R, random: impl Fn() -> f64, ) -> Result<(Vec<String>, Value), String>