Checkpoint
One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Checkpoint: the final pass before the relaunch results go out. Two things want to publish — a results-recap email and a victory-lap social post — and both ride on the report's numbers. Run the whole spine at once.
Write campaign_audit(claims, export, queue):
- For each claim
{"metric", "value"}, in order, print:f"{c['metric']:<8} {c['value']:>6} TRACED"when the value equalsexport[c["metric"]]f"{c['metric']:<8} {c['value']:>6} INVENTED (export: {actual})"otherwise
- For each queue row
{"piece", "approved_by"}, in order, print:f"{r['piece']}: OK ({r['approved_by']})"whenapproved_byis non-emptyf"{r['piece']}: BLOCKED (no approver)"otherwise
- Verdict line: if every claim traced AND every row has an approver,
print
verdict: CLEARED FOR PUBLISH. Otherwise printf"verdict: HELD ({invented} invented number(s), {blocked} unapproved row(s))".
Expected output:
sent 18200 TRACED
opens 4914 TRACED
clicks 618 TRACED
signups 230 INVENTED (export: 212)
results-recap email: OK (dana)
we-hit-record post: BLOCKED (no approver)
verdict: HELD (1 invented number(s), 1 unapproved row(s))