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

Method

Problem, failure, correction

  1. Start with the real problem an upstream PR tried to solve.
  2. Show the plausible but incomplete implementation.
  3. Capture the focused test or harness failure that exposed the gap.
  4. Trace the corrected implementation and its upstream status.