The primary requirement is to allow test input and output to be changed, but it might also be necessary to change a time limit, or something else. There also needs to be a mechanism to invalidate previous marks and requeue the submissions to the marker. This could potentially be made smart in some ways (e.g. if the output data changed, solutions that crashed or exceeded time limit do not need remarking), but it may be safest just to redo them all.
IIRC, the client-server protocol currently has a mechanism to completely replace a problem, but I don't think it's ever been tested, and it won't trigger remarking.
I've added the command-line interface to this existing functionality. More functionality is still needed to handle re-marking.