Module 09: Promotion, Registry Boundaries, and Auditability¶
Module Position¶
flowchart TD
family["Reproducible Research"] --> program["Deep Dive DVC"]
program --> module["Module 09: Promotion, Registry Boundaries, and Auditability"]
module --> lessons["Lesson pages and worked examples"]
module --> checkpoints["Exercises and closing criteria"]
module --> capstone["Related capstone evidence"]
flowchart TD
purpose["Start with the module purpose and main questions"] --> lesson_map["Use the lesson map to choose reading order"]
lesson_map --> study["Read the lessons and examples with one review question in mind"]
study --> proof["Test the idea with exercises and capstone checkpoints"]
proof --> close["Move on only when the closing criteria feel concrete"]
Read the first diagram as a placement map: this page sits between the course promise, the lesson pages listed below, and the capstone surfaces that pressure-test the module. Read the second diagram as the study route for this page, so the diagrams point you toward the Lesson map, Exercises, and Closing criteria instead of acting like decoration.
Purpose of this Module¶
Recoverable state is not automatically trusted state. This module is where the learner separates exploratory, baseline, and promoted state and learns why downstream trust requires a deliberately smaller contract than the internal repository story.
Use this module to answer three questions clearly:
- What exactly is being promoted for downstream use?
- Which params, metrics, manifests, and files must travel with that promotion?
- What evidence would another reviewer need to defend the released state later?
At a Glance¶
| Focus | Learner question | Capstone timing |
|---|---|---|
| promotion boundary | "What exactly is being trusted downstream?" | inspect publish/v1/ once baseline and experimental state are already distinct |
| release evidence | "Which params, metrics, and manifests must travel with a promoted result?" | compare the publish bundle to dvc.lock and tracked metrics |
| auditability | "Can another person defend this state later?" | use verify as the proof loop, not just as a convenience |
Proof loop for this module:
Capstone corroboration:
- inspect
capstone/publish/v1/ - inspect
capstone/params.yaml - inspect
capstone/dvc.lock - inspect Release Review Guide
The learner should leave this module able to say why promoted state is trusted more than baseline or exploratory state.
1) Table of Contents¶
- Table of Contents
- Learning Outcomes
- How to Use This Module
- Core 1 — Promotion Is a Contract, Not a Copy Step
- Core 2 — Stable Release Surfaces and Registry Boundaries
- Core 3 — Audit Evidence: Params, Metrics, Locks, and Manifests
- Core 4 — Reviewable Promotion Workflows
- Core 5 — Failure Modes in State Promotion
- Capstone Sidebar
- Exercises
- Closing Criteria
2) Learning Outcomes¶
By the end of this module, you can:
- distinguish experimental state, baseline state, and promoted state clearly
- define a stable release boundary around DVC-managed outputs
- decide which params, metrics, manifests, and lock evidence must accompany a promoted result
- design a reviewable promotion workflow that survives handoff and audit pressure
- spot promotion shortcuts that make downstream trust impossible
3) How to Use This Module¶
Set up a repository with these surfaces:
Then force yourself to name three categories of state:
- experimental outputs that are useful for exploration but not yet trustworthy downstream
- baseline outputs that remain comparable over time
- promoted outputs that downstream users are allowed to depend on
The teaching goal is not just to "publish files." It is to make the learner say exactly why one state is trusted more than another.
4) Core 1 — Promotion Is a Contract, Not a Copy Step¶
Promotion should answer a question such as:
- which model or report is now approved for downstream use?
- which params and metrics define that promoted result?
- which state is still exploratory and must not leak into a release boundary?
If promotion is treated as "copy the latest files somewhere stable," then the repository is quietly delegating trust to human memory.
Good promotion discipline:
- a stable publish directory or release boundary
- explicit params and metrics that explain what was promoted
- a lockfile or equivalent state record tied to that promotion
- a clear rule for when a new version is warranted
5) Core 2 — Stable Release Surfaces and Registry Boundaries¶
A release surface should stay small and durable enough that downstream users do not have to know the internal repository layout.
Examples of a useful release surface:
- a versioned
publish/v1/directory - a manifest naming the promoted files
- a report that explains the run in human terms
- parameters and metrics captured in their promoted form
The key distinction:
- internal pipeline state helps the system operate
- promoted state helps another person trust, consume, or review the result
Those are related, but they are not interchangeable.
6) Core 3 — Audit Evidence: Params, Metrics, Locks, and Manifests¶
Auditability depends on enough evidence to answer:
- what exactly was run?
- which inputs and params mattered?
- what metrics were observed?
- which files form the promoted result?
Four surfaces matter especially in DVC:
| Surface | Why it matters |
|---|---|
params.yaml |
shows the declared control surface |
| metrics | makes comparisons reviewable |
dvc.lock |
records the executed state graph |
| publish manifest | tells a consumer what the release contains |
If one of those is missing, a promotion can still happen. It just becomes much harder to defend later.
7) Core 4 — Reviewable Promotion Workflows¶
A strong promotion workflow should be reviewable by another engineer who was not present for the experiment cycle.
That review should be able to answer:
- what changed from baseline?
- why is this promoted state better or more appropriate?
- which artifact bundle is now the contract?
- how would a future recovery drill restore this exact result?
Useful practice:
- promote from an explicit baseline or experiment comparison
- require verification before promotion
- keep published artifacts stable enough for consumers and audits
- document the downstream contract where a reviewer will actually see it
8) Core 5 — Failure Modes in State Promotion¶
Practice identifying these failures:
- the promoted report no longer matches the promoted params
- metrics are diffed, but the compared runs are not semantically comparable
- a release bundle exists, but the lock state needed to explain it is unclear
- baseline and experiment outputs are mixed into one publish directory
- a consumer depends on internal pipeline paths because the release surface is vague
Promotion failures are dangerous because they often look neat from the outside. The directory exists, the report renders, and the metrics are present. The problem is that the repository can no longer explain why that state deserves trust.
9) Capstone Sidebar¶
Use the capstone to inspect:
publish/v1/as the stable promoted surfaceparams.yamlandmetrics/metrics.jsonas the semantic comparison surfacesdvc.lockas evidence of the executed state graphTOUR.mdand the tour bundle as review artifacts for promoted state
10) Exercises¶
- Define a stable publish boundary for one DVC repository and explain which internal paths are excluded.
- Promote one experimental result and write down exactly which params, metrics, and lock evidence justify it.
- Create a manifest for a promoted bundle and explain how a downstream user should validate it.
- Review a repository promotion story and list the top three reasons it would fail under audit.
11) Closing Criteria¶
You pass this module only if you can demonstrate:
- a clear distinction between exploratory state and promoted state
- a stable release surface another consumer can trust
- enough params, metrics, and lock evidence to defend a promoted result
- a promotion flow that another reviewer can understand without private context
Directory glossary¶
Use Glossary when you want the recurring language in this module kept stable while you move between lessons, exercises, and capstone checkpoints.