I think the chances are that you do NOT want any code documentation from the programmers.
The reason you state that you think you might want documentation is :
"Can the new programmers do a good job of taking over when there's no report or documentation, etc"
So the documentation isn't for you to read, its not a manual for the product, It dosnt give you any benefit of itself.
If you don't get new programmers during the life span of your product. You will have paid your programmers to write documents that are never used.
In my opinion, your hypothetical new programmers will probably not read them either. Programmers tend not read code documentation for a variety of reasons and this is generally recognized with modern 'agile' programming methodologies.
So I say, Don't ask the programmers to document their code.
However! What you DO need to document are your requirements, and what tests you ran to ensure they were met.
Requirement 1: "when there is an error, make the button red"
you need these because the hypothetical new programmers will not know what the code is supposed to do.
Your current programmers understand the project, so when you tell them
Requirement 2: 'Make the button blue'
They remember your previous requirement and they will make the button blue when its not errored and red when it is.
The new programmers however, were not around when you asked for requirement 1. so they will make it blue all the time.
You will have to remember all the requirements and tell them:
Requirement 2 : 'make the button blue, unless it is errored in which case it should be
Its impossible to remember all the requirements for even small projects and whats worse the combination of requirements, ie that the red state overrides the blue state is never actually stated. That's where writing down your tests comes in, you will have tested the app worked after requirement 2 and written
"Tested normal page ok, tested error page ok"
This will tell the new developers that the error page is Supposed to have a red button, and its not a bug which needs fixing.
What you need to protect yourself from losing is that big picture of what your application is supposed to do. That's the thing that only exists in your developers heads at the moment and its really something only you can document.