async fn check_package(
        &self,
        repo: &Option<Mutex<Repository>>,
        package_name: &PackageName,
        package_info: &PackageInfo,
        tag_rules: &Option<ProcessedRulesMap>,
        global_implicit_dependencies: &HashMap<String, Spanned<()>>,
        result: &mut BoundariesResult,
    ) -> Result<(), Error> {
        let implicit_dependencies = self.get_implicit_dependencies(package_name);
        self.check_package_files(
            repo,
            package_name,
            package_info,
            implicit_dependencies,
            global_implicit_dependencies,
            result,
        )
        .await?;

        if let Ok(turbo_json) = self.turbo_json_loader().load(package_name) {
            result.diagnostics.extend(self.check_package_tags(
                PackageNode::Workspace(package_name.clone()),
                &package_info.package_json,
                turbo_json.tags.as_ref(),
                tag_rules.as_ref(),
            )?);
        }

        result.packages_checked += 1;

        Ok(())
    }
Either returns a list of errors and number of files checked or a single,
fatal error
crates/turborepo-lib/src/boundaries/mod.rs