OK, here is a revised sketch:

Below is the list of settings that control what is visible. These are settings passed around within the code to control rendering. They don't necessarily map directly onto user-interface settings.
The way it will work is based on the settings the teacher has set up for the quiz (as an example - questions can appear elsewhere) it creates a question_display_options object with the appropriate settings.
Then the interaction model gets to adjust the settings, depending on the state the question is currently in. For example, if the student has not yet submitted an answer, the interaction model will turn off all the feedback options, or after the student has submitted their final answer, the interaction model will ensure the question only appears in read-only mode.
correctness (hidden / visible) whether the student gets told whether their answer was (in/partially)correct in the status summary under the question number, or instead are told something vague like 'Finished'.
marks (hidden / max only / actual mark and max / actual mark and max with explanation ) whether the student can see the number of marks available, and how many marks they got, and how much detail of the marking to display.
marks d.p. (0 .. 7) how many decimal places marks are displayed to.
flags (hidden / visible / visible and editable) this is the feature that lets students bookmark or flag a question in an attempt for later reference.
read only Whether the question just shows the response was already entered, or whether it gives controls to the user enter/change their response.
specific feedback (hidden / visible) feedback that relates to the particular response the student entered.
general feedback (hidden / visible) whether the general feedback (same for all students) is visible.
correct response (hidden / visible) whether the automatically generated message or other indication of the correct answer is visible.
manual comment (hidden / visible / visible and editable) whether the comment manually added by the teacher is visible and editable by the current user.
response history (hidden / visible) whether the list of steps the student went through to answer the question is displayed.