MiniS3 Journey¶
Start from an empty tree and complete each task card in order. Build first; peek at the patch only when stuck.
Learn in VSCode¶
Use a dedicated learning repository so the VSCode gutter and Source Control view show only one stage. The main checkout is never modified.
python journey/tools/build_journey.py study 3
code ../MiniS3-journey-workspace
To implement the stage yourself, prepare its clean previous-stage baseline and then check your work:
python journey/tools/build_journey.py attempt 3
python journey/tools/build_journey.py check 3
check runs the stage's cumulative tests.txt subset and prints a
git diff --stat against a reference tree built directly from the patches.
study and attempt confirm before overwriting existing learning work; use
--yes to skip the prompt or --workspace PATH to choose another dedicated
repository.
| Stage | Topic | New tests | Book chapter |
|---|---|---|---|
| 01 | Scaffold and object values | 3 | 1 |
| 02 | Bucket state and deterministic IDs | 0 | 3 |
| 03 | Durable storage boundary | 0 | 5 |
| 04 | Object service facade | 15 | 2 |
| 05 | Version history projection | 3 | 3 |
| 06 | Listing and the directory illusion | 5 | 4 |
| 07 | Manifest publication crash matrix | 5 | 5 |
| 08 | Directory fsync and startup cleanup | 3 | 5 |
| 09 | Multipart domain and validation | 0 | 6 |
| 10 | Durable multipart staging | 1 | 6 |
| 11 | Atomic multipart completion | 4 | 6 |
| 12 | Multipart crash recovery | 2 | 6 |
| 13 | Conditional requests and CAS | 4 | 7 |
| 14 | Deterministic lifecycle expiration | 4 | 8 |
| 15 | Public API and parity closeout | 0 | 9 |
journey attemptis an experimental placeholder; it will be redesigned as CS336-style test-driven assignments (shipped tests + interface stubs, implement until green,checkas grader).