faction 0.3.3

A no_std + alloc, protocol-independent cluster readiness state machine for startup coordination and readiness quorum tracking.
Documentation
// Copyright 2025 Umberto Gotti <umberto.gotti@umbertogotti.dev>
// Licensed under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0

use alloc::vec::Vec;

use crate::cluster_view::ClusterView;
use crate::command::Command;
use crate::transition::Transition;

pub trait Observer {
    fn observe(&mut self, command: Command, transition: Transition);

    fn observe_query(&mut self, command: Command, cluster_view: ClusterView);

    fn observe_rejection(
        &mut self,
        command: Command,
        cluster_view: ClusterView,
        admissible: Vec<Command>,
    );
}