Lesson 87: Executive Readout Reconciliation Between Daily Ingestion Totals and Published Governance Copy in RPG Live-Ops
Direct answer: Executive readout reconciliation is a pre-publish gate that compares your upcoming Lesson 78 slide narrative to merged totals from Lesson 86 lesson78_daily_signal_ingestion_log.csv. You freeze a deck_version, attach ingestion_batch_hash coverage for the reporting window, classify any mismatch between bullets and numbers, and block external governance language until owners initial the reconciliation packet.

What this lesson solves
Daily ingestion feeds the register; humans still write slides. Slides compress, round, and occasionally lie by optimism. This lesson stops “green executive story” text from shipping when merge_status = pending_owner rows still exist or when headline borrow language from Lesson 82 outruns merged causal factors.
Prerequisites: Lessons 78, 86, and access to the final deck file or CMS snapshot. Expected time: about ninety minutes including one tabletop dry run.
What you will build
lesson78_readout_reconciliation_packet_policy.md(sections below)lesson78_readout_slide_reconciliation_log.csv- A same-night checklist run between finance close and deck send
Step 1 - Define mismatch classes
| class | symptom | risk |
|---|---|---|
| M1 – Count drift | slide shows aggregate factor totals that do not match merged ingestion sums for the window | misstates severity |
| M2 – Narrative drift | deck claims “borrow parity stable” while ingestion still tags unmapped_candidate for dispute codes |
false confidence |
| M3 – Scope drift | deck cites global posture while surge was regional in Lesson 85 bridge rows | repeats green-dashboard error |
| M4 – Comms linkage drift | deck headline implies Lesson 82 promise tier not yet in merged register | player-facing contradiction prep |
Step 2 - Author lesson78_readout_slide_reconciliation_log.csv
| column | purpose |
|---|---|
recon_row_id |
monotonic id |
readout_publish_at_utc |
when external governance copy may go live |
deck_version |
immutable label (exec-readout-2026-05-07b) |
deck_slide_ref |
slide id or CMS block id |
bullet_text_hash |
sha256 of the exact governance sentence under review |
ingestion_window_start_utc |
matches Lesson 86 daily batches included |
ingestion_window_end_utc |
inclusive cutoff |
ingestion_coverage_hash |
hash of all merged ingestion_row_id rows in scope |
claimed_metric_name |
example: merged_dispute_rows_count |
claimed_metric_value |
from deck |
register_metric_value |
from Lesson 78 register or summed ingestion |
delta_abs |
absolute difference |
mismatch_class |
none, M1, M2, M3, M4 |
owner_initial |
divergence or comms owner sign-off |
If mismatch_class != none, the deck does not ship until corrected or the reconciliation packet documents an explicit written exception with waiver id.
Step 3 - Run the same-night sequence
- T-120m: Export last
mergedingestion rows for the window; freezeingestion_coverage_hash. - T-90m: Lock
deck_version; no copy edits without bumping version. - T-60m: Fill reconciliation log; highlight mismatches.
- T-30m: Divergence owner and comms owner initial rows or escalate.
- T-0: Publish readout only if all
mismatch_classrows arenoneor exception-linked.
Step 4 - Tabletop - optimistic slide
Simulate: deck says “no elevated dispute signals” while ingestion shows three merged rows with signal_source = chargeback_batch.
Expected output: M2, block publish until slide text matches investigating localized payment anomalies or similar honest interim phrasing aligned with Lesson 85 bridge discipline.
Pro tips
- Tip: Store slides as PDF with hash for audit, not only live Google Slides without revision id.
- Tip: Pair numeric reconciliation with the calibration habits in How to Score Forecast Calibration Drift Before Release Gates.
- Tip: If marketing insists on sizzle, constrain sizzle to non-governance slides; keep factor posture slides boring and exact.
Common mistakes
- Mistake: Reconciling against raw ingestion instead of merged rows. Fix: only
merge_status = mergedcounts toward executive claims. - Mistake: Using weekly deck cadence to excuse skipping Lesson 86 daily batches. Fix: reconciliation window must cite actual daily coverage hash or explicitly list missing days.
- Mistake: Letting Legal review without ingestion hash. Fix: Legal gets the reconciliation log, not only the deck.
Mini challenge
- Take one bullet from a past readout.
- Write one
lesson78_readout_slide_reconciliation_logrow with a deliberate M1 delta. - Draft the single-sentence correction that preserves honesty without leaking player secrets.
Success check: an auditor can recompute register_metric_value from cited ingestion_row_id list attached to the packet.
FAQ
Is this redundant with Lesson 78 alone?
Lesson 78 owns the register. This lesson owns presentation fidelity to that register at publish time.
What if the deck is oral-only?
Still produce the csv log against spoken script text captured in meeting notes with hash.
Who owns exceptions?
The same waiver governance path you use for promotion; do not invent a new slack channel.
Lesson recap
You now have a reconciliation spine that forces slides to stay honest to ingestion before governance copy escapes.
Next lesson teaser
Next, complete the Lesson 88: Borrow-Train Closeout Certificate so readout version, final ingestion hash, and bridge rows archive into one signed baseline before the next train opens.
Related learning
- Lesson 86: Daily Causal-Factor Ingestion
- Lesson 78: Divergence Causal Factor Register
- How to Run a Weekly Debt Retirement Forecast Review for Live-Ops Teams (2026)
Treat the reconciliation csv as part of the readout product, not meeting admin.