Struct GrowthReplay
pub struct GrowthReplay { /* private fields */ }Expand description
The growth rule replayed from the seed.
Derived by replay, never stored, and advanced incrementally per two cache
rules (evaluate every decision point in an interval; roll back and
re-advance when a gap fills below the watermark). Pure over the finished
prefix it has consumed: advancing twice over the same view is a no-op, and a
cold replay of the same trials produces the identical state (warm == cold,
unconditionally).
Implementations§
§impl GrowthReplay
impl GrowthReplay
pub fn new(policy: &SpacePolicy, directions: &[Direction]) -> Self
pub fn new(policy: &SpacePolicy, directions: &[Direction]) -> Self
A replay at the seed: nothing consumed, nothing grown.
pub fn live(&self, name: &str) -> Option<&Distribution>
pub fn live(&self, name: &str) -> Option<&Distribution>
The live distribution for name, if the policy declares it.
pub fn braked(&self, name: &str, side: Side) -> Option<GrowthReason>
pub fn braked(&self, name: &str, side: Side) -> Option<GrowthReason>
The brake that froze side of name, if any — atune doctor’s
GrowthStopped source, and BoundaryPressure’s suppression test.
pub fn decisions(&self) -> &[GrowthDecision]
pub fn decisions(&self) -> &[GrowthDecision]
Every decision taken so far, oldest first.
pub fn covers(&self, policy: &SpacePolicy) -> bool
pub fn covers(&self, policy: &SpacePolicy) -> bool
true when this replay was built over exactly policy’s parameter
set — the staleness test for a cached replay whose policy has since
gained a define-by-run registration.
pub fn advance(&mut self, view: &StudyView)
pub fn advance(&mut self, view: &StudyView)
Advances over every finished trial the view holds that this replay
has not consumed, evaluating the rule at each decision point in
order (cache rule 1). A finished trial arriving below the
watermark — a filled gap, a resumed Paused trial — resets the
replay to the seed and re-consumes everything (cache rule 2), which
is what makes warm == cold unconditional. Not rare: with several
workers, trials finish out of number order, and each that lands
below the watermark resets (N59, open).
Incremental: the gap test compares the view’s finished count through
the watermark with the consumed count in O(log n), and only
the trials numbered above the watermark are visited, so an advance
costs the new and still-running trials above the watermark rather than
a rescan of the whole view.
Trait Implementations§
§impl Clone for GrowthReplay
impl Clone for GrowthReplay
§fn clone(&self) -> GrowthReplay
fn clone(&self) -> GrowthReplay
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more