Module Checkpoints¶
Page Maps¶
graph LR
family["Python Programming"]
program["Python Object-Oriented Programming"]
section["Guides"]
page["Module Checkpoints"]
capstone["Capstone evidence"]
family --> program --> section --> page
page -.applies in.-> capstone
flowchart LR
module["Finish one module"] --> claim["State what you can now explain"]
claim --> surface["Inspect one proving surface"]
surface --> gap["Name what still feels weak"]
gap --> next["Decide whether to move on or reread"]
Use this page at the end of a module.
The goal is not to feel "generally familiar." The goal is to test whether one real design ability has been earned.
If you cannot name the ability, point to the capstone surface that proves it, and say what pressure the next module adds, the checkpoint is not done yet.
Checkpoints by module¶
| Module | You should now be able to... | Prove it first by... | Do not move on if... |
|---|---|---|---|
| 01 Object Semantics | explain when identity matters more than equality, when aliasing becomes dangerous, and when a type’s representation is part of its contract | opening model.py, rules.txt, and lifecycle tests |
"object" still means only "instance of a class" to you |
| 02 Design Roles and Layering | justify whether behavior belongs in a value, entity, policy, adapter, service, or plain function | comparing application.py, model.py, and the architecture guide |
your role choices still sound like taste instead of reasons |
| 03 State and Typestate | describe which states are legal, who guards transitions, and how the API makes bad states harder to construct | checking lifecycle tests and inspection outputs | you still accept invalid transitional objects as normal |
| 04 Aggregates and Collaboration | name the aggregate root and defend why other objects should not own the same invariant | reviewing projections, read models, and architecture surfaces | you still confuse authoritative state with useful derived state |
| 05 Resources and Evolution | explain who owns retries, cleanup, recovery, and extension cost | inspecting runtime.py, repository.py, and unit-of-work tests |
failure handling still feels like random plumbing around the model |
| 06 Persistence and Schema Evolution | explain how persistence adapts to the domain instead of flattening it | inspecting repository boundaries and verification artifacts | you still think storage shape and domain shape should be identical |
| 07 Time and Concurrency | explain where clocks, queues, async tasks, or threads enter the design without stealing ownership from the model | checking runtime tests and walkthrough artifacts | concurrency still feels like permission to blur boundaries |
| 08 Testing and Verification | choose the right proof depth for a claim instead of defaulting to the heaviest route | mapping one claim to one test file and one saved bundle | you still call any passing test "enough evidence" |
| 09 Public APIs and Governance | name what is public, what is internal, and where extension is allowed | reviewing the application surface, extension guide, and proof routes | your extension story depends on reaching into internals casually |
| 10 Operational Review | explain which boundaries are hottest, most observable, and most exposed to trust or failure pressure | using the full proof route and review worksheet | production pressure still sounds separate from object ownership |
The plain-language exit test¶
Before moving on, say the module lesson in one sentence without using the module title.
Good example:
This module taught me where legal lifecycle transitions must be enforced and why downstream views are not allowed to decide them.
Weak example:
This module was about typestate and validation.
If the plain-language sentence is weak, the module is not done yet.
What to do when the checkpoint fails¶
| If the failure is... | Return to... |
|---|---|
| the vocabulary is still fuzzy | the module overview and Module Promise Map |
| the design claim sounds true only in prose | one named capstone surface from the module |
| the proof route still feels too heavy or too random | Proof Ladder and Proof Matrix |
| the real question is different from the module title | Pressure Routes |
This is not backtracking for its own sake. It is how you stop later modules from resting on unearned confidence.
Honest move-on rule¶
Move on only when all three are true:
- you can explain the checkpoint plainly
- you can point to one capstone surface that makes it concrete
- you know what new pressure the next module adds
If only one or two are true, keep the current module open.
Build a completion note¶
At the end of each module, write one short note with:
- what you can now explain
- what capstone surface proves it
- what still feels weak
- what the next module is about to pressure
That note is valuable because it makes rereading honest. When you come back later, you can see whether the weakness was really solved or only postponed.
Exit check¶
Leave this page only when you can say:
I earned this module because I can now
____, I can show it in____, and the next pressure I am ready for is____.