longTauGnssCoupling: wire coast-cap + taper into DisciplineScheduler#84
Closed
bobvan wants to merge 1 commit into
Closed
longTauGnssCoupling: wire coast-cap + taper into DisciplineScheduler#84bobvan wants to merge 1 commit into
bobvan wants to merge 1 commit into
Conversation
Integrates the PR #80 primitives into compute_adaptive_interval so the coast interval is bounded by the DO's STOCHASTIC wander, not just the deterministic drift budget tau=sqrt(2*T/D). Kills the tau~64-256s hump where a quiet DO (D~0) pinned tau at max_interval=120s and coasted blind. All baseline paths now flow through a coast-cap + taper tail: - coast_tdev=(tdev_ref_ns, slope, tau_ref_s) constructor arg: the DO's characterized freerun TDEV power law -> coast_cap_from_tdev. A 1.17ns TCXO caps to <1s (must correct every epoch); an 85ps OCXO caps to ~138s (may coast). slope<=0 -> +inf -> no cap. - p22_at_tau closure (per-call): EKF predict-only P[2,2] growth -> coast_cap_from_p22. Honest only with Q-from-char (qFromCharPerActuator, PR #83) -- that's the runtime prerequisite. - distance_to_lock in [0,1] (per-call): graded_interval taper, the continuous converging->tracking transition replacing the binary "1 if converging else interval" latch + its 1->120s cliff. DEFAULT-OFF / behavior-preserving: absent coast_tdev and per-call args, compute_adaptive_interval is byte-identical to the drift-budget-only path (the quiet-DO branch still returns max_interval). The engine opts in by passing the char TDEV + the EKF closures; that engine wiring + closedLoopServoSim A/B is the next step. 9 new SchedulerCoastCapIntegrationTest cases (TCXO collapse, OCXO no-bite, slope<=0 no-cap, k_sigma tighten, p22 shorten, taper endpoints, compose-tightest-wins, inactive-when-not-adaptive). 1417 pass. Stacked on PR #80 (the primitives); runtime-depends on PR #83 (honest Q[3,3]) for the p22 path. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 29, 2026
Owner
Author
|
Superseded by #86 (squashed longTau stack). Scheduler wiring included there. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wires the PR #80 primitives into
DisciplineScheduler.compute_adaptive_intervalso the coast interval is bounded by the DO's stochastic wander, not just the deterministic drift budgetτ=√(2·T/D). This is the fix for the tau~64–256 s hump: a quiet DO (D≈0) pinned τ atmax_interval=120 s and coasted blind while its random-walk wander accumulated.Stacked on #80 (the primitives). Runtime-depends on #83 (honest Q[3,3]) for the
p22path.All baseline paths now flow through a coast-cap + taper tail:
coast_tdev=(tdev_ref_ns, slope, tau_ref_s)(ctor)coast_cap_from_tdev. 1.17 ns TCXO → cap <1 s; 85 ps OCXO → ~138 s. slope≤0 → +inf → no cap.p22_at_tauclosure (per-call)coast_cap_from_p22. Honest only with Q-from-char (#83).distance_to_lock∈[0,1] (per-call)graded_intervaltaper — the continuous converging→tracking transition replacing the1 if converging else intervallatch + its 1→120 s cliff.Default-off / behavior-preserving
Absent
coast_tdevand the per-call args,compute_adaptive_intervalis byte-identical to today (the quiet-DO branch still returnsmax_interval). The engine opts in by passing the char TDEV + the EKF closures.Test plan
SchedulerCoastCapIntegrationTest(TCXO collapse, OCXO no-bite, slope≤0 no-cap, k_sigma tighten, p22 shorten, taper endpoints, compose-tightest-wins, inactive-when-not-adaptive). Existing scheduler tests unchanged. Full suite 1417 passed.coast_tdevfrom the DO char into the scheduler ctor; passp22_at_tau(closure over DOFreqEst predict-only P) +distance_to_lock(√(P22)/σ_total) per epoch. Behind a flag.Merge order: #83 (honest Q) + #80 (primitives) → this → engine wiring → sim A/B.
🤖 Generated with Claude Code