Back to overview
Real Regression Detection
Each story follows a real MOOS-IvP change from an incomplete solution through a focused failure to the corrected upstream result.
No reconstructed edits
Three upstream PRs
Real revisions, commands, failures, and corrections
Three Real Failure Stories
The PROJ restoration comes first because it shows this repository improving another contributor's PR. The two contributor-authored fixes follow, including one mission-harness failure and one source-level configuration failure.
01
Unit tests · merged PR #106
Restoring PROJ broke safe geodesy copies
The restored PROJ backend converted coordinates correctly in the simple case, but copied geodesy objects crashed and successful conversions left their stored coordinates at zero.
- Incomplete solution
- The implementation owned raw PROJ handles, freed them in the destructor, and relied on compiler-generated copy operations. A copy therefore shared the same handles, while repeated conversions returned good output arguments but left the object's getters stale.
- Result
- Test caught it
Read the full example
02
Mission harness · open PR #109
A two-second failure lasted four seconds
The behavior accepted a two-second burn duration and appeared to honor it, but the helm remained blocked for roughly four seconds because the completion callback could trigger the burn twice.
- Incomplete solution
- The initial implementation measured elapsed wall time inside onCompleteState() and returned after the requested duration. It had no one-shot guard, so a two-second configuration could burn twice and produce a four-second operational gap.
- Result
- Test caught it
Read the full example
03
Unit test · merged PR #110
A valid viewer setting was silently ignored
The viewer advertised refresh_mode and already knew how to apply it internally, but startup configuration never connected the setting to the existing GUI setter.
- Incomplete solution
- Most of the feature was already present, so manual inspection at either end looked reassuring: the option was advertised and the runtime consumers were implemented. With no startup branch calling setRadioCastAttrib(), however, a valid configuration line was rejected and had no effect.
- Result
- Test caught it
Read the full example