flag == 0 means the optimizer converged. It does not mean an orbit was determined, and on short arcs those differ badly: 37% of converged short-arc fits come back physically impossible, 56% at three days (#485).
The information needed to tell them apart is already computed and returned. On the failing cases the one-sigma velocity exceeds the velocity itself. Every downstream consumer has ended up writing its own screen — the full-catalogue run had to drop 37,735 rows on a covariance test after they passed flag == 0.
The deeper issue is that reduced chi-square is the quality gate, and it is best exactly when the arc is least informative, so it cannot detect this class of failure.
Suggested: orbitfit should surface a verdict about determinacy alongside the state — at minimum a flag value for "converged but under-determined", derived from the covariance it already has. Then flag == 0 can mean what callers assume it means.
Related: #485 reports this as a bug; this is the contract question underneath it.
flag == 0means the optimizer converged. It does not mean an orbit was determined, and on short arcs those differ badly: 37% of converged short-arc fits come back physically impossible, 56% at three days (#485).The information needed to tell them apart is already computed and returned. On the failing cases the one-sigma velocity exceeds the velocity itself. Every downstream consumer has ended up writing its own screen — the full-catalogue run had to drop 37,735 rows on a covariance test after they passed
flag == 0.The deeper issue is that reduced chi-square is the quality gate, and it is best exactly when the arc is least informative, so it cannot detect this class of failure.
Suggested:
orbitfitshould surface a verdict about determinacy alongside the state — at minimum a flag value for "converged but under-determined", derived from the covariance it already has. Thenflag == 0can mean what callers assume it means.Related: #485 reports this as a bug; this is the contract question underneath it.