A release-process postmortem about manifest and file mismatch. The useful result is a method that preserves evidence, exposes constraints, and makes the next decision reviewable. This note describes an engineering workflow rather than a claim about a particular organization or production event.
Establish the boundary
Describe how a valid but incorrect file received the intended version label. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
Detection through digest mismatch or unexpected evaluation output
Explain detection through digest mismatch or unexpected evaluation output. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
Stop promotion and preserve evidence
Stop promotion and preserve evidence. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
A corrected version without silently replacing the old file
Publish a corrected version without silently replacing the old file. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
Update CI to bind manifest, digest, and evaluation record
Update CI to bind manifest, digest, and evaluation record. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
State the small process changes that prevent recurrence
State the small process changes that prevent recurrence. Keep the source version, configuration, and stable identifier together while this work is performed. That gives a reviewer a direct path from an observed outcome to the input and rule that produced it. Treat automatic checks and human judgment as separate controls, then record both in the incident note.
Practical check
Manifest example and verification command sequence. The example below is intentionally small enough to run before a larger recovery or release workflow.
from pathlib import Path
for path in Path("runs").glob("*.json"):
if path.stat().st_size == 0:
print(f"empty run record: {path}")
Evidence for the next decision
Keep the input digest, outcome, and reviewer note with the resulting artifact or postmortem. Claiming deletion is the only safe response. When evidence is incomplete, preserve the failing example, define the missing validation, and defer promotion until results can be compared fairly.
Make the process idempotent. Repeating the same step on unchanged input should not append metadata, discard extra detail, or silently change ownership. Idempotence makes retries safe and exposes hidden state when outputs differ.
Review results by failure category rather than a single blended number. A small number of high-risk failures can outweigh an improvement on common cases, particularly when output feeds a release workflow.
Keep accepted and rejected examples together. A concise rejected sample with its expected outcome is a durable regression test and prevents the same edge condition from returning as an unexplained surprise.
Use a separate holdout set for release decisions. Training records can guide implementation, but they cannot demonstrate correct behaviour on new wording, new sources, or changed input order.
Make the process idempotent. Repeating the same step on unchanged input should not append metadata, discard extra detail, or silently change ownership. Idempotence makes retries safe and exposes hidden state when outputs differ.
Review results by failure category rather than a single blended number. A small number of high-risk failures can outweigh an improvement on common cases, particularly when output feeds a release workflow.
Keep accepted and rejected examples together. A concise rejected sample with its expected outcome is a durable regression test and prevents the same edge condition from returning as an unexplained surprise.
Use a separate holdout set for release decisions. Training records can guide implementation, but they cannot demonstrate correct behaviour on new wording, new sources, or changed input order.