Proto: prevent placeholder apply_mode fields provided by run_operation from actually being used
The run_operation RPC defined in proto_alpha/lib_plugin/RPC.ml needs to construct an apply_mode in order to call apply_operation. The Partial_construction mode makes the most sense and requires the least information. But this mode still requires the predecessor_level, predecessor_round, and grand_parent_round, to which the RPC doesn't have access (they usually come from the predecessor_fitness that is given as an argument to functions like Main.begin_construction). So the RPC provides placeholder values of the right type. This works because in Apply, these values are only used when applying preendorsement and endorsement operations, and these consensus operations are not supported by the run_operation RPC.
It would be cleaner to enforce in the code that these placeholder values cannot be used. Otherwise, they might be used in the future when applying operations that are supported by run_operation, potentially leading to a confusing failure of run_operation.
A solution might be to add an RPC mode that does not contain any predecessor information (and fails if called on a consensus operation). This may be considered too intrusive in the protocol code though.