Checkpoint
One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Checkpoint. A real boundary has two parts: an artifact and an
acceptance check. A stage missing either one is handing off on vibes.
Write audit_pipeline(stages) that returns a dict:
structured: count of stages where BOTHartifactandcheckare non-empty strings.vibes: list of stage names (pipeline order) where either field is empty — the boundaries you need to fix first.
Expected output:
2
['draft', 'review']