Lesson 247: Unreal Playtest Menu Minidump build_label Receipt on BUILD_RECEIPT (2026)

Direct answer: Before July playtest scale on UE 5.6 Windows depots, file unreal_playtest_minidump_receipt_v1.json proving Crash Reporter ships in Shipping, ProjectVersion matches the playtest pin, SetGameData crash context includes build_label + surface + crash_lane=menu, a symbolicated internal menu test crash exists, and cousin crash_symbolicate_receipt_v1 from Lesson 214 is GREEN—then promote BUILD_RECEIPT unreal_playtest_menu_minidump_ok. Distinct from 214 (generic symbolication) and Lesson 245 (wasm panic text).

Lesson hero for Unreal playtest menu minidump build_label receipt

Why this matters now (July 2027 UE menu playtest crashes)

July 2027 teams scale Steam playtest cohorts while the main menu still runs Lumen or heavy UMG on some SKUs. Facilitators upload five .dmp files with identical hashes and no build_label—engineering patches playtest-july-rc0 while players run rc1. Lesson 214 proves symbol servers; the Unreal menu minidump preflight is the ninety-second checklist—247 is the BUILD_RECEIPT milestone for crash_lane=menu.

Pair Deck static menu preflight when crashes are GPU idle not asserts, and Lesson 239 tag menu_crash (add alias if missing).

Beginner path (menu crash + receipt)

Step Action Success check
1 Confirm Lesson 214 symbol server GREEN Cousin receipt
2 Pin ProjectVersion from VERSION M2 pass
3 Add crash context JSON on GameInstance init M3 pass
4 Trigger internal menu crash on Steam install M5 symbolicated
5 File receipt + BUILD_RECEIPT menu_minidump_ok: true

Time: ~58 minutes first Shipping Crash Reporter wiring; ~12 minutes when config is pinned.

Developer path (gates M1–M6)

Gate Check Fail when
M1 Crash Reporter in Shipping playtest Stripped from depot
M2 ProjectVersion = playtest pin Drift from VERSION
M3 SetGameData JSON: build_label, surface, crash_lane Anonymous minidumps
M4 Menu repro script documented Gameplay map mis-tagged
M5 Test crash symbolicated Hash-only stack
M6 unreal_playtest_minidump_receipt_v1.json menu_minidump_ok: false

M1 — cousin receipt crosswalk

Field Cousin (214) This lesson (247)
Schema crash_symbolicate_receipt_v1 unreal_playtest_minidump_receipt_v1
Scope Symbol upload + generic test crash Menu-only playtest .dmp
Path release-evidence/crash/CRASH_SYMBOLICATE_RECEIPT.json release-evidence/crash/UNREAL_PLAYTEST_MINIDUMP_RECEIPT.json

Do not duplicate X1–X6 symbol proof inside 247 JSON—reference cousin path.

unreal_playtest_minidump_receipt_v1.json

{
  "schema": "unreal_playtest_minidump_receipt_v1",
  "engine": "unreal",
  "ue_version": "5.6.x",
  "build_label": "playtest-july-2027-rc1",
  "surface": "playtest_invite",
  "crash_lane": "menu",
  "menu_map": "/Game/Maps/PlaytestMainMenu",
  "symbol_server_pin": "release-evidence/crash/SYMBOL_SERVER_PIN.json",
  "cousin_receipts": {
    "crash_symbolicate": "release-evidence/crash/CRASH_SYMBOLICATE_RECEIPT.json"
  },
  "test_crash": {
    "method": "debug_overlay_assert",
    "symbolicated": true,
    "build_label_in_metadata": true
  },
  "gates": {
    "M1_crash_reporter_shipping": "pass",
    "M2_project_version": "pass",
    "M3_crash_context_json": "pass",
    "M4_menu_repro_script": "pass",
    "M5_test_crash_symbolicated": "pass",
    "M6_receipt": "pass"
  },
  "menu_minidump_ok": true,
  "promotion_allowed": true
}

Pin under release-evidence/crash/UNREAL_PLAYTEST_MINIDUMP_RECEIPT.json.

BUILD_RECEIPT row (M6)

Column Pass when
unreal_playtest_menu_minidump_ok menu_minidump_ok: true
crash_symbolicate_receipt Lesson 214 cousin
deck_static_lighting Optional—Deck menu preflight when GPU idle
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  unreal_playtest_menu_minidump_blocked BOOLEAN NOT NULL DEFAULT false;

Thursday row reviewUE menu minidump line: build_label in metadata Y/N.

Key takeaways

  1. 214 symbol server247 menu minidump—both required for UE playtest scale.
  2. crash_lane=menu in metadata—do not bucket menu ticks as gameplay.
  3. PIE crashes do not satisfy M4—use installed Steam playtest build.
  4. Deck static lighting for GPU % issues without .dmp.
  5. Bevy Lesson 245 is wasm panic—separate column.
  6. Tag menu_crash via Lesson 239.
  7. Strip internal assert hook before fest_public promotion.
  8. promotion_allowed on this receipt ≠ Q4 capstone 253—capstone wires 245–252.
  9. Join dashboards on build_label + surface only (Lesson 213).
  10. Forward: Lesson 248 Aseprite bridge hash (when published).

Common mistakes

  • Filing 247 while 214 symbol upload still fails.
  • ProjectVersion edited once in ini—never synced from VERSION.
  • Readable stacks, missing build_label in crash JSON.
  • Merging schemas into crash_symbolicate_receipt_v1.
  • Test crash hook shipped to public playtest depot.

Troubleshooting

Symptom Lane
No Crash Report folder M1 Shipping audit
Hash-only stack Lesson 214 + symbol freshness
Menu GPU, no crash Deck static menu preflight
Wrong depot patched Lesson 201
itch wasm panic Lesson 245

Mini exercise (55 minutes)

  1. Ship without SetGameData—confirm anonymous minidump.
  2. Add M2–M3; menu test crash on Steam install.
  3. Link cousin CRASH_SYMBOLICATE_RECEIPT.json.
  4. File receipt; BUILD_RECEIPT GREEN.

Continuity — Q4 2027 July playtest scale (245–253)

Lesson Receipt focus
246 Ren'Py save/language
247 (this) Unreal menu minidump build_label
248 Aseprite bridge hash spot
253 Q4 capstone (queued)

Previous: Lesson 246 — Ren'Py playtest save language isolation
Next: Lesson 248 — Aseprite sprite bridge hash spot

FAQ

Same as Lesson 214?
214 = symbol server + generic crash; 247 = menu playtest minidump metadata.

Same as menu minidump guide?
Guide = M1–M6 checklist; 247 = BUILD_RECEIPT promotion.

Same as Lesson 245?
245 = Bevy browser panic; 247 = UE Windows .dmp.

Need Deck static lighting first?
Not required for M5 assert crash—run Deck preflight when triage is GPU idle without minidump.


Anonymous menu minidumps are playtest-scale poison—cousin 214, crash context JSON, menu test crash, then unreal_playtest_menu_minidump_ok on BUILD_RECEIPT.