The translator never actively returns exit code 30. The reason for the way this is currently documented is that the driver replaces all "unexpected" translator errors/crashes by exit code 30.
Before we had actual error checking in the translator, PDDL errors would crash the translator (assertion failures or other uncaught exceptions), and this caused an error code of 30. So exit code 30 was never intended to signal bad PDDL, but rather it signals crashes, and bad PDDL caused crashes. Now that we say the translator is responsible for checking the PDDL input, such crashes are considered bugs, and hence the documentation of this exit code should be changed.
In a perhaps similar vein, the meaning of TRANSLATE_INPUT_ERROR was changed from "usage error" to "usage error or invalid PDDL" accidentally. The new error checking code used the "usage error" exit code for wrong PDDL input and was merged without much review, so we didn't notice this. We then changed the documentation to "usage error or invalid PDDL" much later when we realized that this exit code is now also used in these scenarios.
|