Skip to content

longTauGnssCoupling: wire coast-cap + taper into DisciplineScheduler#84

Closed
bobvan wants to merge 1 commit into
bravo/longtau-coast-capfrom
bravo/longtau-coast-cap-wiring
Closed

longTauGnssCoupling: wire coast-cap + taper into DisciplineScheduler#84
bobvan wants to merge 1 commit into
bravo/longtau-coast-capfrom
bravo/longtau-coast-cap-wiring

Conversation

@bobvan
Copy link
Copy Markdown
Owner

@bobvan bobvan commented May 29, 2026

Summary

Wires the PR #80 primitives into DisciplineScheduler.compute_adaptive_interval so 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 τ at max_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 p22 path.

All baseline paths now flow through a coast-cap + taper tail:

input effect
coast_tdev=(tdev_ref_ns, slope, tau_ref_s) (ctor) DO's characterized freerun TDEV → coast_cap_from_tdev. 1.17 ns TCXO → cap <1 s; 85 ps OCXO → ~138 s. 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 (#83).
distance_to_lock∈[0,1] (per-call) graded_interval taper — the continuous converging→tracking transition replacing the 1 if converging else interval latch + its 1→120 s cliff.

Default-off / behavior-preserving

Absent coast_tdev and the per-call args, compute_adaptive_interval is byte-identical to today (the quiet-DO branch still returns max_interval). The engine opts in by passing the char TDEV + the EKF closures.

Test plan

  • 9 new 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.
  • Engine wiring (next): pass coast_tdev from the DO char into the scheduler ctor; pass p22_at_tau (closure over DOFreqEst predict-only P) + distance_to_lock (√(P22)/σ_total) per epoch. Behind a flag.
  • closedLoopServoSim A/B (Charlie): on honest Q[3,3] (qFromCharPerActuator: derive Q[3,3] (sigma_do_freq) from char ADEV #83), confirm the tau~64–256 s hump drops and the >60 s coast no longer diverges.

Merge order: #83 (honest Q) + #80 (primitives) → this → engine wiring → sim A/B.

🤖 Generated with Claude Code

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>
@bobvan
Copy link
Copy Markdown
Owner Author

bobvan commented May 29, 2026

Superseded by #86 (squashed longTau stack). Scheduler wiring included there.

@bobvan bobvan closed this May 29, 2026
@bobvan bobvan deleted the bravo/longtau-coast-cap-wiring branch May 29, 2026 19:53
bobvan added a commit that referenced this pull request May 29, 2026
… + engine) (#86)

Squash of the reviewed #80/#84/#85 stack. coast-cap bounds the adaptive coast by the DO's stochastic wander (targets the tau~64-256s hump); --coast-cap default off. Main: APPROVE. p22 cap honest only on Q-from-char (#83).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant