Repro Catalog¶
Guide Fit¶
flowchart TD
family["Reproducible Research"] --> program["Deep Dive Make"]
program --> pressure["A concrete learner or reviewer question"]
pressure --> guide["Repro Catalog"]
guide --> next["Modules, capstone, and reference surfaces"]
flowchart TD
question["Name the exact question you need answered"] --> skim["Skim only the sections that match that pressure"]
skim --> crosscheck["Open the linked module, proof surface, or capstone route"]
crosscheck --> next_move["Leave with one next decision, page, or command"]
Read the first diagram as a timing map: this guide is for a named pressure, not for wandering the whole course-book. Read the second diagram as the guide loop: arrive with a concrete question, use only the matching sections, then leave with one smaller and more honest next move.
The repro pack should teach failure classes, not just contain small Makefiles.
This catalog names each repro, explains what it demonstrates, and points to the first question the learner should ask when running it.
Repro Pack Overview¶
| Repro | Failure class | First question |
|---|---|---|
01-shared-log.mk |
shared mutable output under concurrency | "Why are two recipes writing to one file?" |
01-shared-append.mk |
compatibility alias for the same lesson | "Am I reading older material or the canonical name?" |
02-temp-collision.mk |
non-atomic publication and temp-file discipline | "What temp file names or publication steps are unsafe?" |
03-stamp-clobber.mk |
dishonest stamp usage | "What input or boundary is the stamp pretending to model?" |
04-generated-header.mk |
generated-file boundary mistakes | "Is the generated file modeled as a real graph node?" |
05-mkdir-race.mk |
directory creation races | "Why does directory setup need to be idempotent?" |
06-order-only-misuse.mk |
misunderstanding order-only prerequisites | "Which edge should affect staleness rather than just sequencing?" |
07-pattern-ambiguity.mk |
rule selection ambiguity | "Which rule does Make pick, and why?" |
Best Order To Study Them¶
01-shared-log.mk05-mkdir-race.mk06-order-only-misuse.mk03-stamp-clobber.mk04-generated-header.mk07-pattern-ambiguity.mk02-temp-collision.mk
This order moves from visible concurrency hazards into subtler modeling and selection problems.
How To Use A Repro Well¶
For each repro:
- predict the failure before you run it
- run it with the relevant command
- describe the defect class in words
- state the repair pattern before you implement anything
Best first questions:
01-shared-log.mk: why are two recipes writing to the same output surface?05-mkdir-race.mk: why is directory creation a correctness concern under-j?06-order-only-misuse.mk: which edge should affect staleness rather than only sequencing?
If you only run the Makefile and shrug at the result, the repro did not teach enough.
Companion Pages¶
The most useful companion pages for the repro pack are: