Lesson 93: External Escalation Messaging Packet - Cite Lesson 92 Dry-Run Verdict Rows and Block Failed-Rehearsal Claims in RPG Live-Ops

Direct answer: An external escalation messaging packet is the signed, channel-specific copy you release after a passing Lesson 92 dry-run. Every paragraph must cite the dry_run_verdict, dry_run_id, and rollup_packet_id_ref it depends on, and must omit any promise, metric, or timeline that would have violated W1–W4 deck gates during rehearsal.

Pixel egg suggesting a small, fragile thing that only stays intact when every sentence traces to signed evidence

What this lesson solves

Stakeholder-facing language is where governance evidence dies. This lesson turns escalation copy into a hashable artifact that cannot outrun the Lesson 91 rollup row or the Lesson 92 rehearsal verdict.

Prerequisites: Lesson 92 row with dry_run_verdict in {pass} or an explicit defer decision that still blocks external sends until a subsequent pass row exists. Expected time: about eighty-five minutes including a tabletop on a marketing rewrite that smuggles optimism.

What you will build

  1. lesson78_external_escalation_messaging_packet_policy.md (contract below)
  2. lesson78_external_escalation_messaging_packet.csv (one row per channel bundle you might ship)
  3. A message body template with mandatory footer lines for ids + hashes

Step 1 - Define external gate classes

gate fail signal owner action
E1 – Verdict orphan copy references “confidence” or “stable” without dry_run_id_ref + verdict line rewrite or attach appendix row
E2 – Rollup drift any numeric claim not present in cited rollup_packet_id_ref columns delete number or cite appendix hash
E3 – Rehearsal contradiction sentence would have failed W1 or W2 in Lesson 92 strike sentence
E4 – Channel scope creep social copy promises store-only embargo facts split bundle or gate channel

Step 2 - Author lesson78_external_escalation_messaging_packet_policy.md

Minimum sections:

  1. Purpose – ship escalation language that survives adversarial reading after dry-run truth.
  2. Eligibility – external send allowed only when Lesson 92 dry_run_verdict is pass, unless policy explicitly allows defer without external channels (default: no).
  3. Citation grammar – every public paragraph ends with a bracketed triple: [dry_run_id=dry_run_id_ref; verdict=dry_run_verdict; rollup=rollup_packet_id_ref] shortened in player-facing copy to a footer block, not inline spam.
  4. Forbidden lexicon – list marketing phrases that imply metrics absent from rollup columns (treat as E2).
  5. Localization – translations must preserve numeric parity; otherwise separate row with its own hash.
  6. Retention – store outgoing HTML + plaintext plus signed_message_body_hash for regulator replay.

Step 3 - Author lesson78_external_escalation_messaging_packet.csv

column purpose
external_message_id stable identifier
train_cycle_id matches Lessons 89 / 91 / 92
dry_run_id_ref Lesson 92 lesson78_mid_train_escalation_dry_run_war_room.csv row
rollup_packet_id_ref Lesson 91 packet row cited on this bundle
channel_bundle store_card / status_blog / email / social / partner_api
dry_run_verdict_cited must echo Lesson 92 dry_run_verdict
forbidden_claims_checksum sha256 over sorted list of strike phrases removed during edit
signed_message_body_hash over canonical UTF-8 body + footer ids
external_evidence_hash sha256 over dry_run_evidence_hash + signed_message_body_hash + channel list

Step 4 - Draft the message bundle (40 minutes)

  1. Lift facts only from Lesson 91 columns already footered in Lesson 92 deck export.
  2. Map sentences to source_drift_row_ids subsets; if a sentence cannot map, it does not ship.
  3. Write the footer block for each artifact: dry_run_id, rollup_packet_id, dry_run_verdict, dry_run_evidence_hash truncated to 12 chars for human spot checks.
  4. Run lexicon scan for E3 optimism words that imply closure without intervention_bundle_ids support.

Step 5 - Tabletop - marketing adds a “players love it” line

A stakeholder inserts a qualitative claim with no survey id in the rollup packet. Outcome: E2 failure; remove line or open a new evidence row in the Lesson 91 chain before any resend—never “just softening” language.

Pro tips

  • Footer before flair – designers will ask for hero art revisions first; refuse until the footer ids and hashes are stable, because art swaps tempt copy edits that bypass the lexicon scan.
  • One bundle per embargo class – store cards with time-locked facts get their own external_message_id; do not mix with social snippets that can be screenshot early.
  • Plain-language parity – if you simplify sentences for players, run the simplification through the same mapping table you used for the internal version so numbers cannot drift during “helpful” editing.

Troubleshooting

symptom likely cause fix
Legal rejects for “unsupported optimism” copy cites verdict but not the rollup_packet_id_ref columns tied to that optimism attach the governing column names in the footer block
Store submission bounces after dry-run pass bundle references an intervention promise without intervention_bundle_ids align copy to Lesson 91 row or remove promise
Two teams publish conflicting timelines duplicate external_message_id reused across regions split rows; never fork copy from chat without a new hash

Common mistakes

  • Treating the footer block as optional on short social posts—short posts still need a link to the canonical bundle page that carries the hash footer.
  • Letting localization vendors paraphrase numbers “for idiom” without a secondary hash review.
  • Using defer as a “soft launch” when the policy default is no external send until pass.

FAQ

Can we ship if Lesson 92 was defer?

Default no. defer means rehearsal did not produce a sendable verdict. Write internal notes only until a new dry-run row reaches pass.

Does this replace the Lesson 85 bridge packet?

No. Lesson 85 is live incident bridging. This packet is curated outbound language after rehearsal.

Where do FAQs for players go?

Inside the same bundle row if they share hashes; otherwise split rows so each signed_message_body_hash stays single-audience.

Lesson recap

External escalation is not tone; it is evidence routing with nicer fonts. If the footer block looks ugly, your claims are still too long.

Next lesson teaser

Next: Lesson 94: Escalation Send Kill-Switch wires publish-time holds when Lesson 90 ingestion or governance hashes drift after a Lesson 92 pass but before send.

Related learning

Treat public copy as signed code, not story.