Lesson 274: Unreal OTLP Corporate Proxy Diligence Receipt on BUILD_RECEIPT (2026)
Direct answer: Before Q4 2026 partner diligence calls on Unreal SKUs, promote unreal_otlp_diligence_receipt_v1.json with O1–O6 gates—Insights / Trace session tied to fest build_label, documented OTLP endpoint, explicit proxy policy, CA pin or offline trace batch, redacted sample on disk in 07-observability/, and BUILD_RECEIPT unreal_otlp_diligence_ok: true. Pair Unreal OTLP preflight (Guide #36), Unreal OTLP case study, and cousin Lesson 260 (Unity UGS lane).

Why this matters now (Q4 diligence week)
Q4 2026 partners open 07-observability/ and ask why Unreal Insights traces exist on a dev laptop but OTLP export times out on publisher-office VPN. Teams file Unity Lesson 260 for UGS SKUs and assume the same receipt covers Unreal—it does not. Unreal SKUs need store About privacy crosswalk (no UGS dashboard) and Insights trace samples on disk, not verbal “tracing enabled.”
Lesson 273 wired loudness before Whisper batch; 274 wires Unreal OTLP diligence so Thursday row review diffs unreal_otlp_diligence_ok beside ugs_otlp_diligence_ok—multi-engine studios file both child receipts in 07-observability/.
Promotion order on BUILD_RECEIPT: crash_symbolicate_ok → unreal_otlp_diligence_ok (Unreal SKU) → diligence_telemetry_ok annex index.
Beginner path (Insights → proxy policy → receipt)
| Step | Action | Success check |
|---|---|---|
| 1 | Run Insights golden-path trace on fest build | O1 session logged |
| 2 | Document OTLP endpoint + probe | O2 URL in receipt |
| 3 | Choose CA pin or offline batch | O4 policy explicit |
| 4 | Place redacted sample in 07-observability/ |
O5 file exists |
| 5 | Privacy URL HEAD on store About | O5 crosswalk |
| 6 | File receipt + BUILD_RECEIPT | unreal_otlp_diligence_ok: true |
Time: ~50 minutes first diligence sprint; ~12 minutes when Guide #36 preflight template exists.
Developer path (gates O1–O6)
| Gate | Check | Fail when |
|---|---|---|
| O1 | Insights trace for fest build_label |
Editor-only assumption |
| O2 | OTLP endpoint documented | Verbal “we use Insights” |
| O3 | Proxy policy table filed | proxy_required silent |
| O4 | CA pin or offline batch policy | Both missing |
| O5 | Sample trace or probe log on disk | Empty 07-observability/ |
| O6 | Receipt + BUILD_RECEIPT | Promote before O5 GREEN |
Align with Guide #36—guide = ninety-second gate; 274 = BUILD_RECEIPT milestone with jq promotion.
Cousin receipt crosswalk
| Field | Cousin (260 Unity) | Cousin (case study) | This lesson (274) |
|---|---|---|---|
| Schema | ugs_otlp_diligence_receipt_v1 |
Recovery narrative | unreal_otlp_diligence_receipt_v1 |
| Scope | UGS privacy URL + OTLP | D1–D3 timeline | Insights OTLP + proxy/offline |
| BUILD_RECEIPT | ugs_otlp_diligence_ok |
N/A | unreal_otlp_diligence_ok |
| Path | release-evidence/telemetry/ |
Blog proof table | 07-observability/ + telemetry |
Do not merge JSON schemas—reference paths in cousin_receipts only.
O1 — Insights session + build_label
Editor: Edit → Plugins → ensure Trace Insights enabled for packaged builds.
DefaultEngine.ini (example trace channels):
[Trace.Channel]
DefaultChannels=Cpu,Gpu,Log,Bookmark
Launch packaged fest build; start Insights trace; play 60s golden path. Log build_label matching visible build label and BUILD_RECEIPT.
O2 — OTLP endpoint probe
Document OTEL_EXPORTER_OTLP_ENDPOINT in launcher script:
set OTEL_EXPORTER_OTLP_ENDPOINT=https://otel-collector.internal:4318/v1/traces
Probe from the same network path partners use (VPN if applicable):
curl -sS -o /dev/null -w "%{http_code}" \
-X POST "$OTEL_EXPORTER_OTLP_ENDPOINT" \
-H "Content-Type: application/x-protobuf" \
--data-binary @/dev/null
Log HTTP code or TLS error verbatim (certificate verify failed) in 07-observability/otlp_probe_fail.log when RED—honest repro beats silent drop.
O3–O4 — Proxy policy: CA pin or offline batch
CA pin (live OTLP on VPN):
export SSL_CERT_FILE="/etc/ssl/corp-root.pem"
export OTEL_EXPORTER_OTLP_ENDPOINT="https://otel-collector.internal:4318/v1/traces"
Offline batch (when live blocked):
- Export redacted OTLP JSON or
.utraceslice to07-observability/offline_traces/batch_YYYYMMDD.json. - Set receipt
otlp_mode: offline_batch. - README states live export resumes after diligence (
live_resume_date).
Pair OTLP proxy help when probe logs show MITM failures.
O5 — Store privacy crosswalk + sample on disk
Unreal SKUs still need Steam About privacy URL parity:
curl -sI "https://yourstudio.com/privacy" | head -n 1
Match host + path to release-evidence/privacy.md. At least one redacted trace file or probe log must exist—partners open the zip, not your Insights UI.
O6 — unreal_otlp_diligence_receipt_v1.json
{
"schema": "unreal_otlp_diligence_receipt_v1",
"build_label": "fest-demo-2026-11-rc4",
"engine_version": "5.6.0",
"insights_session_id": "trace-session-20261118-golden",
"otlp_endpoint": "https://otel-collector.internal:4318/v1/traces",
"otlp_mode": "offline_batch",
"corporate_proxy": {
"required": true,
"mitm_https": true,
"ssl_cert_file": null,
"offline_batch_path": "07-observability/offline_traces/batch_20261118.json",
"probe_fail_log": "07-observability/otlp_probe_fail.log"
},
"privacy_crosswalk": {
"store_about_privacy_url": "https://yourstudio.com/privacy",
"privacy_url_head_status": 200,
"notes": "Unreal SKU—no UGS; store About still required"
},
"cousin_receipts": {
"diligence_telemetry": "07-observability/diligence_telemetry_receipt_v1.json",
"crash_symbolicate": "07-observability/crash_symbolicate_receipt_v1.json",
"unity_ugs_otlp": "release-evidence/telemetry/UGS_OTLP_DILIGENCE_RECEIPT.json"
},
"gates": {
"O1_insights_configured": "pass",
"O2_otlp_documented": "pass",
"O3_proxy_policy": "pass",
"O4_ca_or_offline": "pass",
"O5_sample_on_disk": "pass",
"O6_receipt": "pass"
},
"unreal_otlp_diligence_ok": true,
"telemetry_promotion_allowed": true
}
Pin at release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json and copy into 07-observability/.
BUILD_RECEIPT promotion jq
jq -e '
.schema == "unreal_otlp_diligence_receipt_v1" and
.unreal_otlp_diligence_ok == true and
(.gates.O5_sample_on_disk == "pass")
' release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json
Append BUILD_RECEIPT row:
{
"unreal_otlp_diligence_ok": true,
"unreal_otlp_diligence_receipt": "release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json",
"telemetry_promotion_allowed": true
}
Rule: Multi-SKU studios keep ugs_otlp_diligence_ok (Lesson 260) and unreal_otlp_diligence_ok (this lesson) as separate columns—do not merge.
Proof table (facilitator audit)
| Row | Evidence | GREEN when |
|---|---|---|
| P1 | Insights session log | O1 build_label matches BUILD_RECEIPT |
| P2 | OTLP probe log | O2 endpoint + HTTP/TLS result |
| P3 | proxy_policy_table.md |
O3 proxy_required explicit |
| P4 | CA PEM or offline batch path | O4 policy filed |
| P5 | Redacted trace in 07-observability/ |
O5 sample on disk |
| P6 | BUILD_RECEIPT column | unreal_otlp_diligence_ok matches receipt |
Key takeaways
- Insights UI ≠ export proof—file sample on disk (O5).
- Corporate VPN MITM needs CA pin or offline batch (O4)—default trust fails.
- Unreal SKUs use store About privacy crosswalk—no UGS dashboard (O5).
- Case study owns recovery narrative; 274 owns BUILD_RECEIPT promotion.
- Lesson 260 = Unity UGS cousin—file both for multi-engine diligence.
- Guide #36 preflight — ninety-second O1–O6 gate before this lesson.
- Q4 diligence blog bundles into
07-observability/annex. - 20 free telemetry tools — OTLP collector + curl probe bookmarks.
- November capstone 276 wires 266–275 including this row.
- Help #22 — fix lane for OTLP proxy block during diligence week.
Common mistakes
- Assuming Lesson 260 covers Unreal Insights export.
- Filing case study narrative without
unreal_otlp_diligence_receipt_v1.json. - Empty
07-observability/offline_traces/whenotlp_mode: offline_batch. - Merging Unreal and Unity OTLP schemas into one JSON blob.
- Privacy URL 404 on store About while claiming telemetry GREEN.
- Promoting
diligence_telemetry_okbefore childunreal_otlp_diligence_ok.
Troubleshooting
| Symptom | Lane |
|---|---|
OTLP certificate verify failed |
O4 CA pin or switch to offline batch |
| Insights trace missing on packaged build | O1 plugin + trace channels |
| Partner zip has empty trace folder | O5 export redacted sample |
| Unity receipt GREEN, Unreal RED | File separate schemas per SKU |
| Privacy HEAD 404 | Fix hosting before O6 promotion |
| Probe HTTP 000 / timeout | Log otlp_probe_fail.log; pair case study D2 |
Mini exercise (50 minutes)
- Run 60s golden-path Insights trace on fest
build_label(O1). - Document OTLP endpoint; run curl probe from VPN path (O2).
- File
proxy_policy_table.mdwithproxy_required: true(O3). - Export offline batch or pin corp CA and re-probe (O4).
- Verify privacy URL HEAD + redacted sample on disk (O5).
- File
unreal_otlp_diligence_receipt_v1.jsonand promote BUILD_RECEIPT for Thursday review.
Continuity — November 2026 fest close-out + playtest triage (266–276)
| Lesson | Receipt focus |
|---|---|
| 273 | Loudness spot before Whisper |
| 274 (this) | Unreal OTLP corporate proxy diligence |
| 275 | FMOD menu snapshot spot |
Previous: Lesson 273 — Audacity loudness spot Whisper receipt
Next: Lesson 275 — FMOD playtest menu snapshot spot receipt
FAQ
Same as Guide #36?
Guide = ninety-second O1–O6 preflight; 274 = BUILD_RECEIPT unreal_otlp_diligence_ok column + promotion jq.
Same as Unreal case study?
Case study owns D1–D3 recovery timeline; 274 owns receipt culture on BUILD_RECEIPT.
Same as Lesson 260?
260 = Unity UGS ugs_otlp_diligence_receipt_v1; 274 = Unreal unreal_otlp_diligence_receipt_v1—cousin lanes, separate columns.
Can we use offline batch forever?
Diligence week yes (O4 pass); document live_resume_date when corporate CA arrives.
Does unreal_otlp_diligence_ok replace crash receipts?
No—independent columns under 07-observability/ annex.
Related GamineAI reads
- Unreal OTLP preflight (Guide #36)
- Unreal OTLP case study
- Unity UGS OTLP Lesson 260
- Q4 diligence telemetry blog
- 20 free telemetry tools
Sign-off: Prove Insights trace on disk, document proxy policy, file unreal_otlp_diligence_receipt_v1.json, promote unreal_otlp_diligence_ok on BUILD_RECEIPT—then reference the row in diligence annexes.