I am not sure that contextForm.pl is badly coded. It would be good to figure out what exactly was changed with the contextForm.pl example that is not being properly reverted by scaffold.pl when it executes the answer evaluator. The approach that I gave really just skirts the issue by saving the current context.
For contextOrdering.pl and the problem you attached, when scaffold.pl executes the answer evaluator the cmp_equal method of contextOrdering.pl is called. However, the second time it is executed when the answer is actually being graded, that method is not called. The state of the answer has changed so that its type no longer matches a context::Ordering::Value::Ordering, and it goes to some other value objects cmp_equal method. I am not sure where yet.