01
Fix the bar before measuring
Every bar is declared with its rationale and a cited reference before the first gradient is computed, and never moved afterwards. The direction bar admits about 18 degrees, which a line search absorbs, and cautions down to 37, which it does not. Method
02
Measure the noise, then size the step
An iterative solver’s objective carries noise. The platform estimates that floor and sizes the finite-difference step to it, after Moré and Wild. A parameter whose whole effect sits below the floor is reported unresolved, not judged.
03
Probe two independent random directions
The projected gradient g·d is compared with a finite difference along two random directions. Equal ratios mean a scale error: the sign holds and the step still descends. Ratios that differ or flip sign mean an error as large as the gradient. No scaling repairs that.
04
Fit the Taylor remainder
If g is the true derivative, the remainder J(x+hd) − J(x) − h g·d shrinks with h2; if it is not, with h, whatever its size. The fitted order is read only over steps where the remainder stands at least three times above the noise floor, because the order of noise is not an order.
05
Label it, route it, keep the record
A passing check labels the gradient Direction-checked (usable for optimisation), never “verified”. A failing route is withheld and the router falls back to finite differences while 2n solves fit the budget, or refuses and names both costs. A failed check stays on the result, with its run id.