fix: a re-plan drops the holes it invalidated and restarts the tick they are addressed by
rebuild_locked() replaced the store, so produced() restarted at 0 while the producer's tick_ kept counting: a hole's slot and tick addressing then described a buffer that was gone, forget_holes_before() could not retire it, and a backfill's amend fell outside the ring -- repairing nothing while the hole was still marked repaired, which is the band reporting the opposite of the truth. A re-plan generation is the signal rather than the stride/channel-count guard, which a reconnect with an identical CONFIG leaves unchanged. slot_base_ is left alone: it is relative mode's clock origin and must not walk backwards when the user retypes the window. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
176ef1df9f
commit
8320988d96
4 files changed
+41
No files matched your search
@@ -127,6 +127,10 @@ class Acquisition {
|
||||
/// Warn-once latch for a loss past the reservation cap. A member, not a function-local
|
||||
/// `static`, matching the latch Task 2 added for the same reason.
|
||||
bool warned_outage_ = false;
|
||||
/// The re-plan generation this object last reacted to. The buffer is re-planned whenever the
|
||||
/// model rebuilds it, and the state tied to the old store (`tick_` and the accumulators) is
|
||||
/// reset when this falls behind `ScopeModel::plan_generation()`.
|
||||
unsigned seen_plan_generation_ = 0;
|
||||
std::vector<double> stamps_;
|
||||
std::vector<double> abs_stamps_;
|
||||
/// The decimation filter's state: a running sum per channel (and one for the shared
|
||||
|
||||
Reference in new issue
Block a user