Milestone 8 of 8

Reload and audit the artifacts

Recompute selected facts from disk and trace one plotted point and one rejection back to the source.

The final step asks whether the saved evidence agrees with itself. Do not trust a manifest merely because it opens. Reload the outputs, recompute a few facts, and trace visible evidence back to the source.

Milestone goal

Audit the saved CSV files, summary, figure trace, manifest, and findings in a fresh process. Report disagreements without rewriting the original artifacts.

Audit interface

Implement an interface such as:

Return an audit result with these checks, and record the result in report.md:

source_rows_conserved
status_counts_agree
reason_counts_agree
summary_agrees
manifest_agrees
plot_point_traceable
rejection_traceable

Each value is a boolean. Add an evidence mapping containing the selected source line, record ID, expected fact, and observed fact for any check that is false. The audit result must distinguish a missing file or malformed artifact from a clean pass; do not turn an exception into true.

Recompute the boundary facts

Reload the three CSV files and quality_summary.json. Recompute:

  • total source-row conservation;
  • status and reason counts;
  • one per-sensor valid-reading count and mean;
  • manifest filenames, schema revision, and counts.

Do not import an in-memory object from the earlier run. The point of this milestone is to test the saved boundary.

Trace two pieces of evidence

Select one valid plotted point from the saved plot-data trace and record:

plot point -> record_id -> source_line -> observation and reading

Select one rejected row and record:

rejection -> record_id -> source_line -> reason and raw fields

The source line, ID, status, and values must agree across the raw file, classified output, and trace. A PNG cannot supply this mapping by itself, so the mapping must come from the saved plot data or an equivalent report record.

Deliverables

Save in report.md:

  • the two source traces;
  • the clean audit result for the original artifacts;
  • a short note identifying each deliberately introduced mismatch.

The audit function should return structured evidence so the checks can inspect it. A seventh output artifact is not required.

Deliberate failure checks

Use temporary copies to make one controlled change at a time:

  • alter a summary count;
  • remove one output row;
  • change one manifest filename;
  • alter a rejection reason.

The audit should report the first or named disagreement and leave the original artifacts unchanged. Restore or discard the temporary copies after each test.

Completion review

The project is complete when:

  • all source rows have one visible status;
  • valid, missing, and rejected files preserve source evidence;
  • summary, figure, manifest, and audit agree;
  • one plotted point and one rejection can be traced to the source;
  • the final findings stay within the evidence from this fixture;
  • you can explain which artifacts a later Project may reuse.

Passing automated checks does not prove that the report is clear or that the classification policy is suitable for every dataset. Keep those limits in the final report.

Next boundary

The next data Project may consume valid_records.csv and dataset_manifest.json. It must restate its own split and preprocessing rules; this project does not establish train/validation/test meaning, leakage policy, or a general data-quality standard.

HintAudit from disk
Close the first process or start a fresh one before reloading. Otherwise an in-memory object can hide a serialization error.
HintA disagreement is evidence
Report which artifact disagrees and where. A clean audit is not achieved by changing the manifest to match a damaged output.

How to check your work

The supplied fixture contains a version-matched audit fixture and expected failure records. Compare the disagreement locations and evidence fields, not only the final boolean summary.