Lesson 231: Unity FMOD Bank-Strip Boot Probe Receipt on BUILD_RECEIPT (2026)

Direct answer: After any Addressables strip PR shrinks your spring fest depot, file audio_bank_strip_receipt_v1.json proving .bank files appear in Build Report, LoadBank succeeds on installed player (not Editor-only), and one audible SFX fires within 10 seconds—then promote BUILD_RECEIPT audio_bank_strip. Distinct from Lesson 219 string tables (localization payload) and Lesson 203 WebGL snapshots (browser boot order).

Lesson hero for Unity FMOD bank-strip boot probe receipt

Why this matters now (April 2027 Addressables strip PRs)

April 2027 producers merge fest_strip Addressables groups to hit depot size caps right after Fab 8K throttle. Editor Play Mode still plays FMOD because banks live in the project folder; installed Windows builds go silent—no crash, no ERR_FILE_NOT_FOUND in player logs. The FMOD banks missing after strip help documents fastest fixes; Unity FMOD bank-strip boot probe preflight is the ninety-second checklist—this lesson is the BUILD_RECEIPT milestone with CI gate verify_audio_bank_strip_v1.

Beginner path (installed-player proof)

Step Action Success check
1 Open Build Report after player build Search .bank
2 Confirm banks not only in stripped group Manifest lists paths
3 Install build on clean profile Not Editor
4 Boot scene; trigger known SFX Audible ≤ 10 s
5 FMOD Profiler (optional) Banks loaded
6 File audio_bank_strip_receipt_v1.json bank_strip_pass: true
7 BUILD_RECEIPT row audio_bank_strip GREEN

Time: ~72 minutes first strip recovery; ~20 minutes when bank group policy is pinned.

Developer path (gates B1–B6)

Gate Check Fail when
B1 Strip PR diff reviewed Banks moved into fest_strip group
B2 Build Report bank manifest Zero .bank rows
B3 StreamingAssets / Always Included policy Banks omitted from player data
B4 Installed-player LoadBank Editor-only pass
B5 Audible boot SFX Banks load but silent (WebGL/help lane)
B6 audio_bank_strip_receipt_v1 + BUILD_RECEIPT Fest promotion without receipt

B1 — Strip PR crosswalk (localization + audio)

Asset type Must not live only in fest_strip
*.bank / *.strings.bank Yes — keep in Always Included or dedicated AudioBanks group
String Table assets Lesson 219
FMOD StreamingAssets/Audio/ Document in addressables_strip_crosswalk_v1.json

Fail closed when strip PR touches Audio labels without audio owner sign-off.

B2 — Build Report manifest

Archive release-evidence/audio/fmod_bank_build_report.txt:

StreamingAssets/Audio/Master.bank OK
StreamingAssets/Audio/Master.strings.bank OK
StreamingAssets/Audio/SFX.bank OK
bank_count: 3

Compute bank_manifest_sha256 over sorted relative paths.

B4 — LoadBank boot probe (C# sketch)

void Awake() {
  var result = RuntimeManager.LoadBank("Master", loadSamples: false);
  Debug.Assert(result == FMOD.RESULT.OK, $"LoadBank failed: {result}");
  RuntimeManager.StudioSystem.flushCommands();
}

Run on first scene of installed build only.

audio_bank_strip_receipt_v1.json

{
  "schema": "audio_bank_strip_receipt_v1",
  "build_label": "spring-fest-2027-rc1",
  "unity_version": "6000.0.x",
  "fmod_integration": "FMOD for Unity 2.03.y",
  "platform": "Windows_x64",
  "strip_pr": "PR-4821-fest-addressables-strip",
  "bank_manifest": {
    "bank_count": 3,
    "paths": [
      "StreamingAssets/Audio/Master.bank",
      "StreamingAssets/Audio/Master.strings.bank",
      "StreamingAssets/Audio/SFX.bank"
    ],
    "sha256": "sha256:REPLACE"
  },
  "boot_probe": {
    "load_bank_result": "OK",
    "boot_sfx_event": "event:/UI/Click",
    "audible_within_seconds": 8
  },
  "paired_receipts": {
    "string_tables_fest": "release-evidence/localization/ADDRESSABLES_FEST_STRING_TABLE_RECEIPT.json",
    "webgl_snapshot": "release-evidence/audio/FMOD_WEBGL_SNAPSHOT_RECEIPT.json"
  },
  "gates": {
    "B1_strip_crosswalk": "pass",
    "B2_build_report": "pass",
    "B3_always_included": "pass",
    "B4_loadbank_installed": "pass",
    "B5_boot_sfx": "pass",
    "B6_build_receipt": "pass"
  },
  "bank_strip_pass": true,
  "fest_promotion_allowed": true
}

Pin under release-evidence/audio/AUDIO_BANK_STRIP_RECEIPT.json.

BUILD_RECEIPT row (B6)

Column Pass when
audio_bank_strip Receipt path + bank_strip_pass: true
tables_ok Lesson 219 independent
webgl_snapshot_receipt Lesson 203 for HTML5 lane
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  audio_bank_strip_blocked BOOLEAN NOT NULL DEFAULT false;

Relationship to help vs guide

Artifact Role
FMOD banks missing help Symptom + fastest fix (audio_bank_receipt_v1 cousin)
Unity FMOD bank-strip preflight B1–B6 preflight checklist
This lesson BUILD_RECEIPT audio_bank_strip promotion gate

Key takeaways

  1. Editor audio ≠ installed audio after strip PRs.
  2. Build Report is the first truth source—count .bank rows.
  3. Pair with 219—strings can pass while banks fail.
  4. WebGL lane still needs 203/228—desktop strip is separate.
  5. Wwise packaged row is middleware-specific—do not conflate.
  6. Q2 capstone 235 wires 231 with 230–234.
  7. Wednesday demo smoke should use installed build audio check.
  8. Strip PRs need audio owner sign-off like localization.

Common mistakes

  • Passing strip PR because “banks are small anyway.”
  • Testing only in Editor after strip merge.
  • Using audio_bank_receipt from help without strip PR id in JSON.
  • Fixing WebGL gesture when B2 shows zero banks.
  • Assuming Wwise Init failure is FMOD strip (check middleware).

Troubleshooting

Symptom Lane
Zero banks in report B3 Always Included + help Step 1
Banks in report, silent player Init order help
WebGL silent, desktop OK Lesson 203 / 228
Tables missing Lesson 219
Strip reverted banks still fail Clean build folder; verify B4 path

Mini exercise (70 minutes)

  1. Move Master.bank into fest_strip group—rebuild—confirm B2 fails.
  2. Restore to AudioBanks Always Included—pass B2–B5.
  3. File receipt with real strip_pr id.
  4. Link 219 receipt path in paired_receipts.
  5. Set BUILD_RECEIPT audio_bank_strip GREEN.

Continuity — Q2 2027 spring fest shipping (230–235)

Lesson Receipt focus
230 Fab 8K throttle
231 (this) FMOD bank strip boot probe
232 CJK short description
233 Spline fest landing LCP
234 Micro-trailer stereo embed
235 Q2 capstone

Previous: Lesson 230 — Fab 8K Godot import throttle
Capstone: Lesson 235 — Q2 spring fest shipping — arc 230–235 closed.

FAQ

Same as FMOD banks missing help?
Help fixes deployment; 231 adds BUILD_RECEIPT + strip PR crosswalk for fest gates.

Same as Lesson 219?
219 = string tables after strip; 231 = FMOD banks after strip.

WebGL builds too?
Run 203/228 separately—this lesson targets desktop/player strip.


Silent fest builds after a strip PR are usually missing .bank files—Build Report proof, installed LoadBank, one audible SFX, then audio_bank_strip_receipt.