namespace LLib.Movement.Unstuck; public sealed record StallDetectorOptions { public float GroundDistanceThreshold { get; init; } = 0.3f; public long GroundWindowMs { get; init; } = 500L; public float ProgressImprovementThreshold { get; init; } = 1f; public long ProgressWindowMs { get; init; } = 2000L; public long ContinuityGapMs { get; init; } = 250L; public long CooldownMs { get; init; } = 500L; }