I have logged a bug for this.
the real problem, is that the checkbox value is not used for the validated entries comparison.
the original code you posted:
<input type="checkbox" name="page_locked" id="page_locked" value="1" class="formCheckboxField_Standard" <?php if (!(strcmp((isset($_GET["invalid"])?ValidatedField("sitepagesinsert","page_locked"):""),""))) {echo "checked=\"checked\"";} ?> tabindex="30">
should actually be:
<input type="checkbox" name="page_locked" id="page_locked" value="1" class="formCheckboxField_Standard" <?php if (!(strcmp((isset($_GET["invalid"])?ValidatedField("sitepagesinsert","page_locked"):""),"1"))) {echo "checked=\"checked\"";} ?> tabindex="30">
I marked the change in red.
the $_GET["invalid"] code you reference is supposed to be there, it is used to create a ternary expression that is used mostly on the update page.
it is used so that the update page can show the recordset value for the initial value on page load, and show the validated entry value if validation fails.