Exercise Answers¶
Page Maps¶
graph LR
family["Reproducible Research"]
program["Deep Dive DVC"]
section["Migration Governance DVC Boundaries"]
page["Exercise Answers"]
capstone["Capstone evidence"]
family --> program --> section --> page
page -.applies in.-> capstone
flowchart LR
evidence["cite evidence"] --> inference["state supported inference"]
inference --> limit["name proof limit"]
limit --> decision["make decision"]
decision --> closure["define closure evidence"]
These are reasoning models, not unique wording. A strong answer may use different evidence if it preserves the same contract and states its proof limits.
Compare in this order:
- Did you cite direct evidence?
- Does your conclusion stay inside what that evidence proves?
- Did you name the affected decision?
- Is the repair smaller than an unrelated redesign?
- Can another maintainer tell when the finding is closed?
Answer: Inventory the repository trust claims¶
A compact model:
| Claim | Direct evidence | Falsifying route | Result | Proof limit |
|---|---|---|---|---|
| declarations identify current computation | dvc.yaml, dvc.lock, stage code |
stage contract audit changes declared and hidden influences | verified for modeled cases | cannot prove every runtime influence absent |
| promoted inventory is complete | publish/v1/manifest.json, verifier |
remove a manifest-listed file and verify | verified for current publish contract | does not approve business use |
| complete target matches source | complete-cutover/assessment.json inventories |
delete target report.md |
verified in control | does not prove target availability |
| consumer can use target | decision receipt and consumer check | remove retrieval receipt | verified in control | specimen does not use a production identity provider |
| protected revisions recover | recovery readiness report | current-only and release-only remote cases | verified for named specimen revisions | does not prove future retention |
| responsibilities have authority | migration decision owner map | remove or swap one responsibility | verified in control | does not prove organization directory membership |
The important distinction is result language. PARTIAL_COPY contradicts target
identity. A production registry service objective remains out of scope. An
unattempted real production retrieval would be unverified, not contradicted.
An answer that says “verified because the file exists” is weak. The falsification route should manipulate or challenge the claim.
Answer: Write a contract finding from the partial copy¶
Model finding:
The migration claims to change only consumer location while preserving the promoted inventory. In
workspace/partial-copy/assessment.json, source inventory includesreport.mdand target inventory does not; the audit records onlytarget_matches_sourceas false. The target therefore cannot represent the approved seven-file release. Block cutover and keep the source available. Repeat the copy, target verification, digest comparison, and consumer-equivalent retrieval. Close the finding when the assessment shows equal inventories and all required checks pass. This evidence does not show whether the loss arose from selection, transfer, or registry reliability.
Adding report.md is necessary but not by itself sufficient. The repaired
target also needs:
- matching digest;
- target release verification;
- consumer retrieval;
- retained rollback;
- correct owners and current exception state.
The answer is bounded because it does not diagnose an unobserved root cause.
Answer: Review the migration change budget¶
The contract should yield:
| Surface | Record |
|---|---|
| source | publish/v1 |
| target | incident-escalation/2026-07 |
| permitted change | consumer location |
| preserved | inventory, bytes, release meaning, provenance |
| before | source manifest and verification |
| after | target manifest and verification |
| acceptance | consumer retrieval receipt |
| rollback | retained source and ready route |
| owners | DVC lineage, registry lifecycle, CI verification, release decision |
| exception | owner, reason, expiry, removal condition |
UNBOUNDED_CHANGE blocks because metric-schema changes interpretation rather
than location. Combining it with the registry move prevents independent
verification and rollback.
A separate semantic contract could say:
Introduce metric contract
evaluation-v2, changing field names and population description while retainingevaluation-v1for a compatibility window. Recompute baseline and candidate underevaluation-v2; prohibit numeric deltas across versions; require consumer acceptance before retiringevaluation-v1.
That decision can fail without reversing the registry location.
Answer: Prove consumer acceptance and rollback readiness¶
Model consumer contract:
reference: incident-escalation/2026-07
identity: manifest digest equals approved source
access: consumer-equivalent credential class
operation: retrieve manifest, verify files, load threshold and predictions
receipt: command identity, status, resolved digest, useful-operation result
Model rollback contract:
trigger: target retrieval or verification fails
authority: release owner
retained source: publish/v1 remains readable
route: restore durable consumer reference to source
objective: complete within declared duration
validation: consumer operation passes against restored source
window: retained through named date or duration
retirement: separately approved after window
Equal inventories can coexist with failed consumer acceptance because producer-side access may not match consumer authorization, durable reference, schema support, or retrieval path.
“We can switch back” omits retained state, authority, measured route, and validation. It is an intention, not readiness evidence.
Answer: Build a proportional governance register¶
One defensible register:
| Trigger | Contract | Evidence route | Block condition | Authority | Receipt |
|---|---|---|---|---|---|
| stage dependency or code | truthful invalidation | stage contract audit | hidden result influence | pipeline maintainer | audit report |
| behavior parameter | reproducible control | rerun and parameter/metric evidence | value absent from record | pipeline maintainer | run receipt |
| metric semantics | comparability | metric contract audit | population or definition differs | evaluation owner | comparison report |
| promotion request | immutable candidate | promotion integrity audit | identity, provenance, verification, or approval fails | release owner | decision |
| publish bundle | consumer contract | release verifier | inventory or digest mismatch | release owner | verification |
| remote migration | protected history | recovery readiness audit | any protected revision fails | storage owner | recovery report |
| location cutover | preserved boundary | boundary migration audit | any cutover premise fails | release owner | cutover decision |
| deletion | retention and recovery | reachability report, dry run, recovery test | protected state at risk | storage owner | deletion approval |
Risk classes rise from reproducibility and comparison through consumer and protected-history consequences. A docs typo does not touch these triggers.
A filename-only rule misses shared code, environment, credential, or policy changes that affect the same contract.
Answer: Evaluate an expired exception¶
The stale specimen's exception has an owner, reason, removal condition, and
expiry of 2025-12-31. The audit evaluates it on 2026-07-28, so it is not
current.
Decision:
Keep cutover blocked. Do not extend the date in place. If consumer retrieval is now available, run it and remove the exception. If it remains unavailable, issue a fresh exception decision that explains why, narrows the permitted action, keeps the source authoritative, and sets a new expiry and removal condition.
Expiry forces reconsideration at a known time. Removal condition identifies the observable fact that ends the exception. Evidence of a clean consumer-equivalent retrieval would satisfy this specimen's removal condition.
Silently changing the date destroys the record of whether anyone reevaluated the risk.
Answer: Intervene on a mutable release shortcut¶
Model intervention:
latest/model.jsonis a mutable path, so deployment cannot reconstruct which reviewed bytes it used after another promotion. This breaks the immutable release identity contract. Publish the candidate under an immutable registry reference bound to the Git revision, DVC artifact identity, promoted manifest digest, and release decision. Keeplatestonly as a convenience pointer and record its resolved immutable identity at deployment. Close the finding by resolving the immutable reference before and after a later promotion and showing that it retains the approved manifest digest. This finding does not evaluate deployment health or registry availability.
The identity chain is:
Git revision
-> DVC recorded content
-> verified publish manifest
-> immutable registry release
-> consumer retrieval receipt
Each arrow needs a receipt that preserves the preceding identity.
Answer: Assign cross-system ownership¶
Model map:
| Fact or decision | Evidence producer | Authority | Handoff receipt | Failure owner |
|---|---|---|---|---|
| source revision | Git | Git repository | revision in manifest | repository maintainer |
| artifact lineage | DVC | DVC metadata | content identity | pipeline maintainer |
| shared verification | CI | CI policy | check result with revision | CI owner |
| release lifecycle | registry | registry | immutable release record | release owner |
| access entitlement | identity platform | identity policy | access decision | security owner |
| rollout | deployment platform | service policy | deployed release identity | service owner |
| incident response | incident system | incident policy | incident record | incident commander |
| cutover | decision record | release owner | cutover decision | release owner |
| deletion | storage policy | storage owner | approved inventory and result | storage owner |
DVC is authoritative for tracked artifact lineage. The registry is authoritative for consumer release lifecycle. The overreach specimen fails because those responsibilities are swapped, even though every field contains a value.
Correct ownership follows observable evidence and enforcement authority, not which tool is already familiar.
Answer: Decide whether cutover is approved¶
Decision: BLOCK_CUTOVER.
| Premise | Result |
|---|---|
| target identity matches | pass |
| only declared boundary changes | pass |
| before and after proofs pass | pass |
| consumer acceptance passes | pass |
| rollback is exercised and ready | unverified |
| responsibilities are correct | pass |
| exception policy is current | pass |
The decisive gap is rollback. Strong target evidence cannot prove restoration behavior. Keep the source active, exercise the declared rollback through the real consumer path, measure it against the objective, and attach the receipt.
The observation that changes the decision is a passing rollback receipt with:
- retained source identity;
- authorized trigger route;
- measured duration;
- consumer validation after restoration.
Even then, APPROVE_CUTOVER authorizes switching consumers. It does not
authorize source deletion. Source retirement follows the rollback window and
its own retention decision.
Answer: Conduct an independent stewardship handoff¶
A useful route:
| Need | Entry | Expected evidence | Proof limit | Failure owner |
|---|---|---|---|---|
| declarations | dvc.yaml, dvc.lock, params.yaml |
stage and recorded state | hidden influences need tests | pipeline maintainer |
| reproduction | make ... capstone-repro or capstone make repro |
materialized outputs | current run only | pipeline maintainer |
| release | publish contract and verifier | manifest-bound promoted files | not business approval alone | release owner |
| experiment | comparability audit | semantic and bounded comparison | not promotion | evaluation owner |
| recovery | recovery readiness audit | protected revision restores | named revisions/date only | storage owner |
| migration | boundary migration audit | invariant, consumer, rollback, owner checks | modeled target, not service load | release owner |
| authority | ownership map | one authority per fact | people mapping may live externally | repository owner |
| finding closure | failed assessment and test | repeated falsifying route passes | only named contract | finding owner |
Answers to the handoff questions:
- DVC identifies tracked artifact bytes; the promoted manifest and immutable registry record carry that identity to consumers.
- Source retirement needs target acceptance, elapsed rollback window, protected-history recovery, retention authorization, and a separate owner decision.
- The capstone does not verify real production availability, organization-wide access policy, or runtime deployment health.
Any route ending with “ask the original maintainer” identifies missing durable evidence. Replace the private explanation with a contract, receipt, owner, or explicit out-of-scope boundary.
Final self-check¶
Your answer packet is stronger than these models if it:
- cites the actual evidence generated in your run;
- distinguishes false, missing, and out-of-scope claims;
- records the exact observation behind every block;
- gives a repair route and closure condition;
- keeps cutover, source retirement, promotion, and deployment separate;
- assigns authority to systems that can observe and enforce the decision.
If your wording differs but those properties hold, preserve your own reasoning.