made-core 0.7.4

Domain core of MADE: entities, value objects, events, ports. No IO.
Documentation
use crate::entities::CeremonyInstance;
use crate::value_objects::{ChildGroupId, ChildSpawnCoordinates, ChildrenCompletedCondition};

impl CeremonyInstance {
    #[must_use]
    pub fn children_completed_guard_is_satisfied(
        &self,
        condition: &ChildrenCompletedCondition,
    ) -> bool {
        let Some(record) = self.step_record(condition.step_id()) else {
            return false;
        };
        let coordinates = ChildSpawnCoordinates::new(
            condition.step_id().clone(),
            self.current_state_visit,
            self.current_state_iteration,
            record.iteration(),
        );
        let group_id = ChildGroupId::derive(&self.id, &coordinates);
        self.child_groups.get(&group_id).is_some_and(|group| {
            group.plan().coordinates() == &coordinates
                && condition
                    .join()
                    .is_satisfied(group.completions().len(), group.plan().children().len())
        })
    }
}