Repro Guide¶
Guide Maps¶
graph LR
family["Reproducible Research"]
program["Deep Dive Make"]
guide["Capstone docs"]
section["Docs"]
page["Repro Guide"]
proof["Proof route"]
family --> program --> guide --> section --> page
page -.checks against.-> proof
flowchart LR
orient["Read the guide boundary"] --> inspect["Inspect the named files, targets, or artifacts"]
inspect --> run["Run the confirm, demo, selftest, or proof command"]
run --> compare["Compare output with the stated contract"]
compare --> review["Return to the course claim with evidence"]
The repro pack turns build failures into reviewable failure surfaces. Use it when you
want to study one failure class at a time instead of treating concurrency and graph
defects as random incidents. When you need verified execution rather than source-only
inspection, use make incident-audit for the three concurrency cases or
make incremental-fault-audit for missing-edge cases. Use
make semantic-fault-audit when the question is whether state, invalidation, or rule
selection was modeled honestly.
Repro Files By Failure Class¶
| File | Failure class | What it teaches |
|---|---|---|
repro/shared-log-interleaving.mk |
shared mutable output | concurrent writers need isolated or atomic publication |
repro/shared-staging-collision.mk |
shared staging path | each publisher needs uniquely owned staging state |
repro/semantic-faults/clock-state/ |
dishonest stamp boundary | equal declared inputs must not acquire clock-derived meaning |
repro/incremental-edges/ |
missing semantic edges | paired models prove stale authored headers and generated producers, then verify declared-edge recovery |
repro/directory-creation-race.mk |
directory creation race | directory setup must be idempotent and correctly scoped |
repro/semantic-faults/order-only-edge/ |
order-only misuse | ordering constraints do not replace semantic invalidation |
repro/semantic-faults/pattern-selection/ |
ambiguous rule selection | target namespaces must not hide text-order policy |
Best First Route¶
Use this route when the repro pack is new:
repro/shared-log-interleaving.mkfor obvious schedule-dependent outputrepro/directory-creation-race.mkfor setup races that often hide in "small" buildsmake semantic-fault-auditfor successful builds with dishonest semantic modelsmake incremental-fault-auditfor executed missing-edge and recovery proof
That route moves from visible failure into subtler graph-modeling mistakes. The last two routes are deliberately paired: read each broken observation beside its declared control rather than treating a successful build as evidence of freshness or stable meaning.
Incident Bundle Route¶
Use this when you want a saved, asserted concurrency incident review:
- Run
make incident-audit. - Read
INCIDENT_REVIEW_GUIDE.md. - Compare all rows in
summary.tsv. - Read each case in
report.jsonbeside its named file underevidence/. - Use
runs/,workspace/, andspecimens/to verify the causal explanation. - Return to
PROOF_GUIDE.mdto match each repair to the healthy capstone.
Use INCIDENT_CASE=<name> only after reviewing the complete matrix. A named case retains
its expected process and semantic contract; an arbitrary Makefile would not.
Review Questions¶
Ask these while using a repro:
- which output is being shared dishonestly
- which dependency is missing or misclassified
- whether the failure changes under
-j - which repair pattern belongs in the real capstone