Labs
Hands-on exercises are the project’s biggest gap. Every chapter needs a real lab; today one chapter has one, and it is a draft.
On this page
What exists today
| What | Status |
|---|---|
| Lab 8.2B — Build a Circuit Breaker for a Flaky Downstream Tool | Draft. Written to the lab template; the maintainer has run the solution and its tests pass; no outside learner has piloted it. About 60–90 minutes; Python 3.10+ standard library only. |
labs/archive/ |
17 legacy example files: prose excerpts from the chapters with code embedded. They are not labs and do not count as coverage. |
LAB_TEMPLATE.md |
The standard every new lab is written against. |
The reference lab’s files, in labs/8.2B_circuit_breaker/: lab.md, starter.py,
solution.py, test_lab.py, and requirements.txt. Run the self-check with python3 test_lab.py.
What a finished lab contains
Following LAB_TEMPLATE.md, each lab has: Objectives, a Scenario, Setup, a
guided We Do walkthrough, an independent You Do task with a Hint Ladder (gentle, moderate, strong, then the
solution), a runnable Self-Check, Key Points, and a closing table tracing each objective to the practice that
teaches it and the check that verifies it.
Quality rubric
A reviewer checks each of these as a yes/no call:
- Cites specific knowledge items, by chapter ID and phrase, not just chapter number.
- The learner does the work: the You Do section requires writing or completing real code.
- Stands alone: completable without the book chapter open.
- Starter code runs as given: it may fail its own tests, but must not crash on import or setup.
- Solution runs, dependencies pinned:
solution.pypassestest_lab.py;requirements.txtpins versions. - Learner-verifiable success: a test suite or script yields pass/fail, not a narrated Q&A.
- Realistic scenario: a plausible practitioner situation, not a toy.
Maturity ladder
| Stage | Meaning |
|---|---|
example |
Prose with embedded code, not written to the template. The 17 archived files sit here. |
draft |
Written to the template and passes the rubric on inspection; not yet worked through by anyone else. |
piloted |
At least one person other than the author has completed it and logged issues. |
stable |
Piloted, revised from feedback, and the solution re-verified. |
The per-chapter status table is in labs/README.md.
Legacy example files
Part_01_Chapter_1.1_Labs.mdPart_01_Chapter_1.6_Labs.mdPart_01_Chapter_1.7_Labs.mdPart_01_Chapter_1.8_Lab.mdPart_02_Chapter_2.10_Lab.mdPart_02_Chapter_2.7_Labs.mdPart_04_Chapter_4.1_Labs1.mdPart_04_Chapter_4.1_Labs2.mdPart_04_Chapter_4.6.mdPart_06_Chapter_6.3C_ETL_Practice.mdPart_06_Chapter_6.4B_Data_Quality_Practice.mdPart_06_Chapter_6.5B_Production_RAG_Practice.mdPart_06_Chapter_6.6A_Reranking_Implementation.mdPart_06_Chapter_6.6C_Advanced_Retrieval_Practice.mdPart_07_Chapter_7.2A_Local_Development.mdPart_07_Chapter_7.7_Labs_Practice.mdPart_08_Chapter_8.2B_Labs.md
Write a lab
Labs are the priority track in the call for collaborators: pick a chapter, design a realistic scenario, and write it against the template. Expect roughly 4–12 hours for a self-contained algorithmic lab and 12–20 for one that needs an external service, submitted as a sequence of small pull requests.
