Lesson 219: Unity Addressables String Table Fest Receipt After Content Strip (2026)

Direct answer: After a fest Addressables strip PR, promote only when addressables_fest_string_table_receipt_v1.json proves Localization_Local still ships Shared Table Data + locale tables in the player build, tables_ok: true on installed smoke, and build_label matches Lesson 218 fest rows—following Unity Localization_Local preflight L1–L6.

Lesson hero for Unity Addressables string table fest receipt after content strip

Why this matters now (October 2026 strip week)

October 2026 producers merge “remove remote gameplay packs” and accidentally drop UI_Strings from the player payload. Store pages show Japanese; the fest exe shows UI_PLAY keys. Weblate export proves TMS export; String Tables empty help fixes broken builds—this lesson is the H2 BUILD_RECEIPT milestone after strip PRs, distinct from Lesson 202 (first smoke) and Lesson 209 (portfolio matrix).

Ren'Py siblings keep language_receipt separate—do not merge JSON schemas on one row without the matrix lesson.

Beginner path (strip audit + installed smoke)

Step Action Success check
1 List groups touched by strip PR strip_pr_groups.md
2 Confirm tables only in Localization_Local Guide L3 pass
3 Build fest player → open Build Report String tables listed
4 Install build → smoke ja (or team locale) No raw keys
5 File addressables_fest_string_table_receipt_v1.json tables_ok: true
6 Thursday row review string_table_receipt column GREEN

Time: ~20 min group audit + ~25 min build/smoke + 15 min documentation—60 minutes first strip recovery.

Developer path (gates ST1–ST6)

Gate Check Fail when
ST1 Strip PR diff reviewed Tables moved to fest_strip group
ST2 Build Report: Shared Table Data Zero shared rows
ST3 Build Report: per-locale tables Missing ja / zh-Hans fest locales
ST4 Localization_Local non-stripped Remote-only flag on UI tables
ST5 Installed smoke screenshots UI_* visible
ST6 Receipt + BUILD_RECEIPT row promotion_allowed: false

ST1 — Strip PR crosswalk

Strip group Allowed to remove Must never remove
fest_remote_cinematics Yes
fest_optional_audio Maybe (audio gate)
Localization_Local No Shared + locale String Tables
AudioBanks No (separate receipt) FMOD/Wwise banks

Archive strip_pr_diff.png in release-evidence/localization/.

ST2–ST3 — Build Report enumeration

Mirror guide output—lesson adds fest strip context:

{
  "build_report_after_strip": {
    "shared_table_count": 1,
    "locale_table_count": 3,
    "localization_bytes_in_player": 201440,
    "strip_pr_id": "fest-size-2026-10-rc2"
  }
}

Fail: locale_table_count dropped from pre-strip manifest without locale scope change.

ST4 — Localization_Local audit

  1. Addressables GroupsLocalization_LocalInclude in Build.
  2. No String Table assets under fest_strip or RemoteContent.
  3. Compare to pre-strip addressables_group_manifest.json hash.

ST5 — Installed smoke matrix

Locale First screen Raw keys? Screenshot
en Main menu
ja Main menu

One fest locale required; add more if store promises them.

addressables_fest_string_table_receipt_v1.json

{
  "schema": "addressables_fest_string_table_receipt_v1",
  "build_label": "fest-demo-2026-10-rc5",
  "localization_local_group": "Localization_Local",
  "strip_pr_id": "fest-size-2026-10-rc2",
  "fest_locales": ["en", "ja", "zh-Hans"],
  "build_report_after_strip": {
    "shared_table_count": 1,
    "locale_table_count": 3,
    "localization_bytes_in_player": 201440
  },
  "installed_smoke_locale": "ja",
  "tables_ok": true,
  "string_table_receipt_path": "release-evidence/localization/STRING_TABLE_RECEIPT.json",
  "gates": {
    "ST1_strip_review": "pass",
    "ST2_shared_data": "pass",
    "ST3_locale_tables": "pass",
    "ST4_localization_local": "pass",
    "ST5_installed_smoke": "pass",
    "ST6_receipt": "pass"
  },
  "promotion_allowed": true
}

Pin under release-evidence/localization/ADDRESSABLES_FEST_STRING_TABLE_RECEIPT.json.

BUILD_RECEIPT columns:

Column Value
addressables_fest_string_table_receipt path + pass
string_table_receipt.tables_ok true (alias OK)
string_freeze_receipt Weblate row if applicable

Thursday row review — fail promotion if store CN but tables_ok: false.

Proof table (strip PR week)

build_label strip PR tables in player tables_ok Promote?
fest-demo-2026-10-rc5 rc2 size cut
fest-demo-2026-10-rc4 rc1 (bad) 0 false blocked

Key takeaways

  1. Strip PR review is part of localization—not only Weblate export.
  2. addressables_fest_string_table_receipt is post-strip; string_table_receipt from Lesson 202 may still apply pre-strip.
  3. Editor Play Mode never substitutes for installed smoke.
  4. Localization_Local is the non-stripped island for UI tables.
  5. Portfolio teams still use Lesson 209 matrix for Ren'Py + Unity.
  6. Lesson 220 is facilitator VOD batch—orthogonal receipt.
  7. H1 capstone (217) must stay GREEN—localization does not replace trust receipts.

Prerequisites

Common mistakes

  • Approving strip PR without localization owner sign-off.
  • Using string_table_receipt from last month’s build_label.
  • Pseudo-localization pass treated as tables_ok.
  • Merging Ren'Py language_receipt into Unity JSON.
  • Skipping Thursday row because “Weblate was green.”

Troubleshooting

Symptom Lane
Keys after strip ST1 + help
Tables OK, wrong language ST5 locale selector / LocalizationSettings
Store vs build mismatch Steam 300-char CJK help + Lesson 232 — store_copy_cjk_receipt
Audio missing after strip FMOD banks strip help + Lesson 231 — audio_bank_strip_receipt

Mini exercise (55 minutes)

  1. Simulate strip: move one table to fest_strip—confirm ST2 fails.
  2. Restore to Localization_Local; rebuild.
  3. Run installed ja smoke; archive screenshot.
  4. File addressables_fest_string_table_receipt_v1.json.
  5. Update BUILD_RECEIPT; run Thursday review row.

Continuity — H2 2026 arc (218–223)

Lesson Receipt focus
218 Deck static menu
219 (this) Addressables fest string tables
220 VOD concat batch
221–223 Facilitator + HTML5 + capstone

Next: Lesson 220 — playtest VOD facilitator concat batch.

FAQ

Same receipt as Lesson 202?
202 establishes first string_table_receipt; 219 adds addressables_fest_string_table_receipt after strip PR with strip_pr_id—file both if strip landed.

Godot-only demo?
n/a with note; Unity column skipped. H2 Unity studios must pass 219 when using String Tables.

Strip only remote art?
Still run ST2–ST5—regressions hide in Shared Table Data references.


Strip PRs do not get a free pass—prove tables survived in the player build before fest visibility.