You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added: CoverageMeter, progress_efficiency, classify_regime, and OperatingRegime in metricchrono-core — a per-tier streaming coverage
read-out (greedy maximal epsilon-packing of the visited image, holding
representatives only) complementary to the per-step tick throughput.
Coverage is invariant under revisits and detects sub-threshold relocation
(creep) that per-step thresholding is silent on by design; jointly with
throughput it classifies windows into quiescent / progress / churn / creep.
Performance: CoverageMeter stores pooled representatives (a sample
admitted at several tiers is cloned once and indexed per tier), memoizes
each representative's distance across tiers within one observation, scans
newest-first so locality-heavy streams short-circuit early (2.3x on the
2-D walk benchmark, benches/coverage_throughput.rs), and exposes the
allocation-free observe_into. representatives() now returns an
iterator over pooled entries and accessors no longer require T: Clone.
Added: full binding parity for coverage. C ABI: opaque MCCoverageMeter
(mc_coverage_meter_new/observe/counts/unique_representatives/tier_count/ free) over fixed-dimension double states with the existing metric ids,
plus mc_progress_efficiency, mc_classify_regime, and the MCRegime
enum, declared in both copies of metricchrono.h and exercised by the C
header smoke test. Python: CoverageMeter, OperatingRegime, classify_regime, progress_efficiency over the C ABI. JavaScript:
pure-JS CoverageMeter (pooled storage, per-observe distance memo,
newest-first scan, NaN-rejects semantics identical to Rust), OperatingRegime, classifyRegime, progressEfficiency, with TypeScript
declarations and tests.
Added: custom distance callbacks for the C-ABI coverage meter. mc_coverage_meter_new_with_callback takes an MCDistanceFn
(double (*)(const double *a, const double *b, size_t dim, void *user_data)),
so embedders can audit coverage under domain metrics without round-tripping
states; returning NaN rejects admission (the safe failure mode). The Python CoverageMeter accepts any Python callable as its metric (exceptions in the
callable are converted to NaN rather than unwinding into the C ABI); the
JavaScript binding already accepted arbitrary metric functions.