//! The pure planner that drives a bounded multi-round cold start.
//!
//! A [`ColdStartPlanner`] performs no IO: the driver performs every fetch and
//! call and hands the planner only a [`StateView`] and the round's
//! [`ColdStartResults`]. The planner decides the next plan (or stops).
use crateColdStartPlan;
use crateColdStartResults;
use crateStateView;
/// The planner's decision after a round completes.
/// Drives a bounded multi-round cold start.
///
/// The driver calls [`initial_plan`](Self::initial_plan) once, executes it, then
/// repeatedly calls [`on_results`](Self::on_results) with the round's results and
/// the post-injection [`StateView`]; a returned [`ColdStartStep::Continue`] is run
/// as the next round and [`ColdStartStep::Done`] ends the run. The loop is bounded
/// by [`ColdStartConfig::max_rounds`](crate::cold_start::ColdStartConfig::max_rounds).
///
/// Implementations perform **no IO** — the trait hands them only borrowed,
/// read-only state, so all fetching is the driver's responsibility.