{
  "schemaVersion": 1,
  "auditedAt": "2026-09-22",
  "revision": "50256f7 + cast VO book",
  "evidenceHashes": {
    "src/audio.js": "7bf475f2b726c262400c64e3ccf53f5b6f4d8235ca720067fe93322cf470c303",
    "src/combat-audio.js": "58ad6d6879d82484a601f56a9ec35c2d33fa59992bedc02e5ceeca8c49a00676",
    "src/game.js": "69c2411140079a1d2177b857229b49cfddc71888467318ef179ddbcf08f8fc6d",
    "src/ui.js": "29e3c2f2ce3ff628ae27a387603928deb7bfb62b1a4f56af9274ad60369d263b",
    "assets/music/catalog.json": "2c5446eb0a9e56078874043e2a2464dc8d1d94b91d08b7e381c6ad95407291e3",
    "assets/music/boss-score.json": "7c30210e43718f7458616ed905b8fee94365b4567460e773757dea00a835b15c"
  },
  "delivery": [
    "Use cue IDs as filename prefixes, e.g. shiki.ren.entry__hound-snarl__v01.wav.",
    "Put downloaded masters in Downloads/Hallpass Audio Incoming; include the Envato item URL or ElevenLabs prompt in a same-name text file.",
    "Prefer original WAV at its native sample rate; do not normalize, denoise, cut or convert before handoff. Retain a little tail.",
    "For frequent sounds collect 3–4 useful variations; for arrivals start with 2 candidates. Target durations are final edit targets, not mandatory source lengths.",
    "Dry isolated sounds are easiest to layer. For combat avoid music beds, speech, long reverb and cartoon boings. Actual room ambience is the exception.",
    "First three recordings approved and integrated; Raiju, Kitsune and the boss-loot reveal added for live playthrough review. Source remaining replacements by priority."
  ],
  "summary": {
    "runtimeVOFiles": 160,
    "runtimeTriggeredVOFiles": 160,
    "runtimeLoadedUnusedVOFiles": 0,
    "historicalLibraryVOFiles": 84,
    "currentBuildCopiedAuditionVOFiles": 157,
    "currentBuildCopiedAuditionMappedInGame": 35,
    "currentBuildCopiedAuditionNotTriggered": 122,
    "cloneAuditionFiles": 367,
    "cloneAuditionCountCaveat": "367 source takes; selected/cut Sora originals may also underlie live aliases, so this is not a claim of 367 wholly unused performances.",
    "rejectedPrivateCloneFiles": 65,
    "rejectedByCharacter": {
      "ren": 0,
      "yui": 0,
      "kaito": 0,
      "sora": 65
    },
    "seedanceByCharacter": {
      "ren": 51,
      "yui": 12,
      "kaito": 45,
      "sora": 49
    },
    "cloneByCharacter": {
      "ren": 123,
      "yui": 87,
      "kaito": 99,
      "sora": 58
    },
    "historicalProceduralExports": 25,
    "currentMusicTracks": 27,
    "historicalLibraryMusicTracks": 12,
    "reactiveScoreAssets": 8,
    "recordedRuntimeSFX": 8
  },
  "captureProvenance": [
    {
      "kind": "bossEnter",
      "id": "janitor",
      "file": "assets/library/runtime-0c94f7a/bossEnter-janitor.mp3",
      "inputSha256": "44e9bebd2b31a385ae7265b3508b5f955e682aac6498618ec9c4ffb68698baae"
    },
    {
      "kind": "bossEnter",
      "id": "monitor",
      "file": "assets/library/runtime-0c94f7a/bossEnter-monitor.mp3",
      "inputSha256": "d6b33f3810f371c2a97806c8ebc34e9b31bef4fbaf7553df12826953e564be42"
    },
    {
      "kind": "bossEnter",
      "id": "quiz",
      "file": "assets/library/runtime-0c94f7a/bossEnter-quiz.mp3",
      "inputSha256": "df1a8471e1d5ad0d9cd581747e2aefad3d939825617d43807568e8606ab58bc6"
    },
    {
      "kind": "bossEnter",
      "id": "substitute",
      "file": "assets/library/runtime-0c94f7a/bossEnter-substitute.mp3",
      "inputSha256": "5c7c1c4d908e826fca75db6972c41323226855c6216ddb390741e7316f732803"
    },
    {
      "kind": "bossEnter",
      "id": "exam",
      "file": "assets/library/runtime-0c94f7a/bossEnter-exam.mp3",
      "inputSha256": "b3d9ec9a7dfddb03a37a8242ff304b54d7088a04ca802d36a013826aae99b768"
    },
    {
      "kind": "bossEnter",
      "id": "detention",
      "file": "assets/library/runtime-0c94f7a/bossEnter-detention.mp3",
      "inputSha256": "35dedd551d6e464d60f2d37f25a82f4aebeabe2777b3d9dff38bb2e653f5ae3c"
    },
    {
      "kind": "bossEnter",
      "id": "group",
      "file": "assets/library/runtime-0c94f7a/bossEnter-group.mp3",
      "inputSha256": "b7493d3902fbfc3ec830e8ddc7ab22aca35f08b2fa1faae1a6da707c3c1cd42b"
    },
    {
      "kind": "bossEnter",
      "id": "parent",
      "file": "assets/library/runtime-0c94f7a/bossEnter-parent.mp3",
      "inputSha256": "1cc66d12c4cd150bb05339c9d44e048f6e6e51e87de1a131719e2d74b2702b93"
    },
    {
      "kind": "bossEnter",
      "id": "vice",
      "file": "assets/library/runtime-0c94f7a/bossEnter-vice.mp3",
      "inputSha256": "18260e7203367bf3926b7c70f570f10e7dedd1a4de400715a1150df0b5904dd6"
    },
    {
      "kind": "shiki",
      "id": "ren",
      "file": "assets/library/runtime-0c94f7a/shiki-ren.mp3",
      "inputSha256": "f3439b58284d4864bf8b4db817f69edb754d5e417b9bc9f2ce4575aee01e19b4"
    },
    {
      "kind": "shiki",
      "id": "yui",
      "file": "assets/library/runtime-0c94f7a/shiki-yui.mp3",
      "inputSha256": "026e09a001275c1222d7b6be5ce9e6e2328abf299647078a848a59defca2b22f"
    },
    {
      "kind": "shiki",
      "id": "kaito",
      "file": "assets/library/runtime-0c94f7a/shiki-kaito.mp3",
      "inputSha256": "a3967011834b6e36eadacc4a664662d30c00c120e25091dbe6e7bf7bd688cc49"
    },
    {
      "kind": "shiki",
      "id": "sora",
      "file": "assets/library/runtime-0c94f7a/shiki-sora.mp3",
      "inputSha256": "6d16a2950a6584ae054e92be2a91429e667056c331493478ed0194eb9dc9926b"
    },
    {
      "kind": "shikibite",
      "id": "ren",
      "file": "assets/library/runtime-0c94f7a/shikibite-ren.mp3",
      "inputSha256": "0f640d9068fc56438007a4153ce2beff70aaa9a4ae78e64adfc0315ec817a8b7"
    },
    {
      "kind": "shikibite",
      "id": "yui",
      "file": "assets/library/runtime-0c94f7a/shikibite-yui.mp3",
      "inputSha256": "0b18a384011d38dc46dd198dd93238a4d1cd332de2979120a1b1a154f02034db"
    },
    {
      "kind": "shikibite",
      "id": "kaito",
      "file": "assets/library/runtime-0c94f7a/shikibite-kaito.mp3",
      "inputSha256": "fb2e14134fcdcde413f142be4cc054157f68dd9119afbd497de8fd3aa2c83bd3"
    },
    {
      "kind": "shikibite",
      "id": "sora",
      "file": "assets/library/runtime-0c94f7a/shikibite-sora.mp3",
      "inputSha256": "22fe4b0379a86221b062ff4ef0b947de3affc9499acd048ce9add1281ad1b4e4"
    },
    {
      "kind": "shikiout",
      "id": "ren",
      "file": "assets/library/runtime-0c94f7a/shikiout-ren.mp3",
      "inputSha256": "d4bba687a5f62038073b5bcda2db4f5362b54e605a27ff97f2354a70be614596"
    },
    {
      "kind": "shikiout",
      "id": "yui",
      "file": "assets/library/runtime-0c94f7a/shikiout-yui.mp3",
      "inputSha256": "4b42aec3ee05935fb0348875deeb8f8186a3789aef077aa60e23c4895127afc1"
    },
    {
      "kind": "shikiout",
      "id": "kaito",
      "file": "assets/library/runtime-0c94f7a/shikiout-kaito.mp3",
      "inputSha256": "14a914cbdedd37ae4b2eac6e9e99541f4f297152f7af00d7975c18b06f1a63da"
    },
    {
      "kind": "shikiout",
      "id": "sora",
      "file": "assets/library/runtime-0c94f7a/shikiout-sora.mp3",
      "inputSha256": "64b49e5478585f483575388733dfb15f495919f9607fd6897e9581762b8dc47c"
    },
    {
      "kind": "elective",
      "id": "circuit",
      "file": "assets/library/runtime-0c94f7a/elective-circuit.mp3",
      "inputSha256": "f77676f7f40f8778b0df22bcf9297e214471287c11fc2864d2004f541d8a6dbc"
    },
    {
      "kind": "elective",
      "id": "flash",
      "file": "assets/library/runtime-0c94f7a/elective-flash.mp3",
      "inputSha256": "3fdcd371bd0112650d2314d32d7edaab15c17e030656f90fd0a34c7b24ded85a"
    },
    {
      "kind": "elective",
      "id": "decoy",
      "file": "assets/library/runtime-0c94f7a/elective-decoy.mp3",
      "inputSha256": "63437b137c38ba129d67a50cc188cb89aa6f3f82ab7e9b135f0b8be759101ea4"
    },
    {
      "kind": "threatCharge",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/threatCharge.mp3",
      "inputSha256": "b789891f98b10de0da53ba398a3e8438621a54c97bd653f6b9fb4c07a04f00e5"
    },
    {
      "kind": "threatShot",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/threatShot.mp3",
      "inputSha256": "eef7b4face83bc7ea960fcccb7820fb215a0877e137f80eaee067066d37ccc8f"
    },
    {
      "kind": "threatSweep",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/threatSweep.mp3",
      "inputSha256": "fc59e446fce11fa3fbfac2d7bc4e7b7f97feb4a784d4a060e2e51be990c81001"
    },
    {
      "kind": "threatZone",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/threatZone.mp3",
      "inputSha256": "175fb8a344478322654ac702f1abe7582a38bdf3f87c4d70ccc0758f4f7775dc"
    },
    {
      "kind": "threatElite",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/threatElite.mp3",
      "inputSha256": "738721c15ade854d01109b8d78895eea123a6a0d0f8fa04354c265e2141c1efa"
    },
    {
      "kind": "threatElite",
      "id": "conductor",
      "file": "assets/library/runtime-0c94f7a/threatElite-conductor.mp3",
      "inputSha256": "525454f7a793f1c0ce1d5668647718ac20315fd399dee00be0bcba35384f79f0"
    },
    {
      "kind": "enemyShot",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/enemyShot.mp3",
      "inputSha256": "c6f621fc99ede6a8203b916b6c86a4e8ef4b9579495a30fb77f0b5b271b67cb1"
    },
    {
      "kind": "enemyShot",
      "id": "quiz",
      "file": "assets/library/runtime-0c94f7a/enemyShot-quiz.mp3",
      "inputSha256": "203e889a51446bd76fd9c3495f378da580dfe73c6f1bd427c5108ece2794944a"
    },
    {
      "kind": "enemySummon",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/enemySummon.mp3",
      "inputSha256": "15a5798cb7d0f91b529cc35245061aeeceec42179a84623e3a723be933b51cac"
    },
    {
      "kind": "enemyImpact",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "inputSha256": "962d477e4d91d6c2c98c19d88b344689ab1048c3549005a33da690297d542c92"
    },
    {
      "kind": "enemyImpact",
      "id": "decoy",
      "file": "assets/library/runtime-0c94f7a/enemyImpact-decoy.mp3",
      "inputSha256": "7490ca4d9fc0311e1d6dca7f4a34d9b5485883e223a3716b07dc16f4394da1f9"
    },
    {
      "kind": "weaponDrop",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/weaponDrop.mp3",
      "inputSha256": "ab4c5a9929c4122af680b8de07eea883ff13f0251e99400134112dade25bc111"
    },
    {
      "kind": "weaponBind",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/weaponBind.mp3",
      "inputSha256": "a54701a657d3f4e0c88ed05a5d99c93b83c20714932725b14b1da9b26e099e68"
    },
    {
      "kind": "cardEquip",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/cardEquip.mp3",
      "inputSha256": "1eedb4de393293c220c275feeaeeaf521e7c5e97660cc0d9abde976bb7227f8c"
    },
    {
      "kind": "mana",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/mana.mp3",
      "inputSha256": "3e2e3c2e528c7b546d20ce1aa354d5761c567d4501486bb2ad91496f9cf75f60"
    },
    {
      "kind": "knockout",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/knockout.mp3",
      "inputSha256": "cf02684792255dec03b4a3564924ce04ebd66b283ed511c7a0ccc9ada72ddd84"
    },
    {
      "kind": "rally",
      "id": "",
      "file": "assets/library/runtime-0c94f7a/rally.mp3",
      "inputSha256": "38ecefd5df765dc9fba82e6326f26bdb8d0ae380ccc3e61210e408811937e4d9"
    },
    {
      "kind": "elective",
      "id": "backdraft",
      "file": "assets/library/runtime-secondaries-510b384b/elective-backdraft.mp3",
      "inputSha256": "b44df4bf58cd1458bc6130557be054acc8748ac5c48742a9bf089986dcee0876",
      "recipeSha256": "2d0b1e7c49ccdbba1bc71f817d99bbcb746c1f707c0fdb85adc72c5f5df956f2"
    },
    {
      "kind": "secondaryImpact",
      "id": "backdraft",
      "file": "assets/library/runtime-secondaries-510b384b/secondaryImpact-backdraft.mp3",
      "inputSha256": "a391ffe4a7a600c5c6815d646ec283e5bd6ba570ac62f1e07f7d47f29b674276",
      "recipeSha256": "c722054e5ae75b56146e23bc63170a8c32375c1c5e40b79c76959fa430cbc773"
    },
    {
      "kind": "elective",
      "id": "binding_stitch",
      "file": "assets/library/runtime-secondaries-510b384b/elective-binding_stitch.mp3",
      "inputSha256": "75c4563dee1df6501dd512006f2f55255e0310d4f3d80e0212dd3a3de06d3648",
      "recipeSha256": "812ce3878481e6670919eb3c9a70ac5a4edc670932b45840dc59419a16fb477a"
    },
    {
      "kind": "secondaryImpact",
      "id": "binding_stitch",
      "file": "assets/library/runtime-secondaries-510b384b/secondaryImpact-binding_stitch.mp3",
      "inputSha256": "857f01f24c0c7da13fd89c01f4dee2ae829df053c9467baaab1c4acd7b9d173f",
      "recipeSha256": "e4ff495c1ff4beebcb6504656929417ef3282a8d6d26c0c2571e62939e4d1ab3"
    },
    {
      "kind": "elective",
      "id": "dead_zone",
      "file": "assets/library/runtime-secondaries-510b384b/elective-dead_zone.mp3",
      "inputSha256": "677fa13f65b66db226ac200fc1902b555c52c1e2c40a8c05b455bb6fe9a66424",
      "recipeSha256": "73d1faaabd3bf2a523998f7a484ee2fe5662b96a1f96232cfbb29551c81c114f"
    },
    {
      "kind": "secondaryImpact",
      "id": "dead_zone",
      "file": "assets/library/runtime-secondaries-510b384b/secondaryImpact-dead_zone.mp3",
      "inputSha256": "f24108a5f293d3b06e2443a76cee8ea4f94cced8af1abd73b602448d94cb5c6a",
      "recipeSha256": "a75e39ee18ccb7de97cd36c2e947aed8f0eaa1ab082ceb16ec1b9e5edc8c6a29"
    },
    {
      "kind": "elective",
      "id": "curtain_call",
      "file": "assets/library/runtime-secondaries-510b384b/elective-curtain_call.mp3",
      "inputSha256": "c650be1dd45ed63070b36aba3c1d69e000bba3808b331b38ee1995d165730e98",
      "recipeSha256": "253ca4eab8d8b3ddf44e81324f7f5866af8ad98b8390c2c6b0f504bfeca4f1e4"
    },
    {
      "kind": "secondaryImpact",
      "id": "curtain_call",
      "file": "assets/library/runtime-secondaries-510b384b/secondaryImpact-curtain_call.mp3",
      "inputSha256": "2cff617daff4ae72dbcdc39d812758b17d0d69608d65114377169f6dcfd755d4",
      "recipeSha256": "6c91186b63c66d128be9da44fd83147c25faf3da4b75af60a76ff34791add246"
    }
  ],
  "cues": [
    {
      "id": "boss.detention.entry",
      "category": "Bosses",
      "name": "DETENTION — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'detention')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "DETENTION — entrance: chains pulled taut, iron bars bending and a cell-door slam. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "chain tension; metal stress; prison door slam",
      "prompt": "One isolated supernatural anime battle game sound effect: DETENTION — entrance: chains pulled taut, iron bars bending and a cell-door slam. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-detention.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.exam.entry",
      "category": "Bosses",
      "name": "EXAM SEASON — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'exam')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "EXAM SEASON — entrance: rapid mechanical clock ticks tightening into a dry desk slam. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "mechanical clock tick; ticking tension; desk slam",
      "prompt": "One isolated supernatural anime battle game sound effect: EXAM SEASON — entrance: rapid mechanical clock ticks tightening into a dry desk slam. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-exam.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.group.entry",
      "category": "Bosses",
      "name": "GROUP PROJECT — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'group')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "GROUP PROJECT — entrance: overlapping paper slaps and staggered hand knocks converging into one impact. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "stack paper slap; wooden knock; layered impact",
      "prompt": "One isolated supernatural anime battle game sound effect: GROUP PROJECT — entrance: overlapping paper slaps and staggered hand knocks converging into one impact. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-group.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.janitor.entry",
      "category": "Bosses",
      "name": "THE JANITOR — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "September 16 feedback: current entrance sounds like a jarring crash. Three new auditions explore a gradual reveal; the current runtime file stays in place until a replacement is selected and mixed.",
      "work": "replace",
      "priority": "P1",
      "brief": "A controlled supernatural anime reveal: soft broom bristles, gathering air and low iron resonance, resolving gently. Build menace without a crash, steel slam or startling attack. Leave room for the music.",
      "duration": "1.5–2.2 s",
      "variants": 3,
      "search": "anime ominous reveal; broom bristles swish; soft metal resonance; supernatural air swell",
      "prompt": "Cursed janitor reveal: quiet broom bristles slide into a low iron hum, air gathers, then a rounded low pulse. Menace grows smoothly; soft landing. No slam, explosion, debris or startling transient. Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie. Isolated SFX. Clean tail. No music, speech or cartoon sounds.",
      "preview": "assets/sfx/combat/boss-janitor-entry.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/boss-janitor-entry.mp3"
        }
      ],
      "auditions": [
        {
          "id": "boss-janitor-entry__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/boss-janitor-entry__blade.mp3",
          "sha256": "bc5ed1a6945249af4efd61d18800ea83ff38b6a58f3c6475941d3193c8c27151",
          "duration": 2.2,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "boss-janitor-entry__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/boss-janitor-entry__curse.mp3",
          "sha256": "a53192fc3a679170764c254742e859fc3fa0e6513a9c0dbc57d2464fb0547f17",
          "duration": 2.2,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "boss-janitor-entry__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/boss-janitor-entry__kinetic.mp3",
          "sha256": "e5cdfc9c8b14b64d125f75f3bd60d2685f4cb7ede169940a0e06d3da01532f35",
          "duration": 2.2,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "boss.monitor.entry",
      "category": "Bosses",
      "name": "HALL MONITOR — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'monitor')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "HALL MONITOR — entrance: harsh whistle breath, a baton crack and a heavy authority stamp. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "referee whistle short; baton strike; heavy stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: HALL MONITOR — entrance: harsh whistle breath, a baton crack and a heavy authority stamp. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-monitor.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.parent.entry",
      "category": "Bosses",
      "name": "PARENT-TEACHER NIGHT — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'parent')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "PARENT-TEACHER NIGHT — entrance: two stern percussive knocks, a sharp whistle breath and a resonant stamp. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "wood knock; low whistle short; heavy rubber stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: PARENT-TEACHER NIGHT — entrance: two stern percussive knocks, a sharp whistle breath and a resonant stamp. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-parent.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.quiz.entry",
      "category": "Bosses",
      "name": "POP QUIZ — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'quiz')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "POP QUIZ — entrance: frantic paper flicks, a rising chalkboard scrape and a brittle fracture. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "paper flurry; chalk squeak; glass fracture short",
      "prompt": "One isolated supernatural anime battle game sound effect: POP QUIZ — entrance: frantic paper flicks, a rising chalkboard scrape and a brittle fracture. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-quiz.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.substitute.entry",
      "category": "Bosses",
      "name": "THE SUBSTITUTE — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'substitute')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "THE SUBSTITUTE — entrance: reverse breath suction, a ripping air vacuum and a close impact. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "ghost breath reverse; vacuum whoosh; air rupture",
      "prompt": "One isolated supernatural anime battle game sound effect: THE SUBSTITUTE — entrance: reverse breath suction, a ripping air vacuum and a close impact. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-substitute.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "boss.vice.entry",
      "category": "Bosses",
      "name": "THE VICE PRINCIPAL — entrance",
      "trigger": "boss event / filmstrip arrival",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossEnter', 'vice')",
      "evidence": [
        "src/combat-audio.js:17",
        "src/game.js:2415"
      ],
      "notes": "Identity-specific procedural pitch/filter profile; no recorded boss entrance sound or spoken line.",
      "work": "replace",
      "priority": "P1",
      "brief": "THE VICE PRINCIPAL — entrance: a low pressure intake, twisting metal and a decisive gavel-like crack. The final impact marks the reveal. Leave space for the music entrance and any future boss voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "dark air suction; metal stress; gavel impact",
      "prompt": "One isolated supernatural anime battle game sound effect: THE VICE PRINCIPAL — entrance: a low pressure intake, twisting metal and a decisive gavel-like crack. The final impact marks the reveal. Leave space for the music entrance and any future boss voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/bossEnter-vice.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.charge",
      "category": "Directional warnings",
      "name": "Charge warning",
      "trigger": "telegraph: brute / fallback boss",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatCharge', '')",
      "evidence": [
        "src/combat-audio.js:39",
        "src/game.js:34"
      ],
      "notes": "Shared rising saw/noise. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "A short strained intake and scraping acceleration; end before the attack releases.",
      "duration": "0.18–0.35 s",
      "variants": 2,
      "search": "monster inhale; rising rush; friction whoosh",
      "prompt": "One isolated supernatural anime battle game sound effect: A short strained intake and scraping acceleration; end before the attack releases. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatCharge.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.conductor",
      "category": "Directional warnings",
      "name": "Conductor gathering",
      "trigger": "eliteTell(kind conductor)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatElite', 'conductor')",
      "evidence": [
        "src/combat-audio.js:43",
        "src/game.js:34"
      ],
      "notes": "Distinct high rising pair. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "A tense electrical gather with ragged small arc snaps.",
      "duration": "0.18–0.35 s",
      "variants": 2,
      "search": "electric gather; arc snaps; voltage charge",
      "prompt": "One isolated supernatural anime battle game sound effect: A tense electrical gather with ragged small arc snaps. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatElite-conductor.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.pouncer",
      "category": "Directional warnings",
      "name": "Pouncer preparation",
      "trigger": "eliteTell(kind pouncer)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatElite', 'pouncer')",
      "evidence": [
        "src/combat-audio.js:43",
        "src/game.js:34"
      ],
      "notes": "Low saw/noise rise. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "A low animal inhale with claws scuffing for purchase.",
      "duration": "0.18–0.3 s",
      "variants": 2,
      "search": "animal inhale; claw scrape; lunge windup",
      "prompt": "One isolated supernatural anime battle game sound effect: A low animal inhale with claws scuffing for purchase. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatElite.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.ranged",
      "category": "Directional warnings",
      "name": "Ranged warning",
      "trigger": "windup: spitter, warden, quiz-family or fallback boss",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatShot', '')",
      "evidence": [
        "src/combat-audio.js:40",
        "src/game.js:34"
      ],
      "notes": "Same two-tone warning across these threats. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "A taut mechanical or organic tension click followed by a brief high-pressure hiss.",
      "duration": "0.18–0.3 s",
      "variants": 2,
      "search": "tension click; pressure hiss; weapon charge short",
      "prompt": "One isolated supernatural anime battle game sound effect: A taut mechanical or organic tension click followed by a brief high-pressure hiss. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatShot.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.sweep",
      "category": "Directional warnings",
      "name": "Sweep warning",
      "trigger": "sweepwind: Janitor",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatSweep', '')",
      "evidence": [
        "src/combat-audio.js:41",
        "src/game.js:34"
      ],
      "notes": "Covered by Janitor attack sequence above; shared functional identity. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "An abrasive moving scrape gathers into a short air pull.",
      "duration": "0.2–0.35 s",
      "variants": 2,
      "search": "metal scrape short; air pull; blade windup",
      "prompt": "One isolated supernatural anime battle game sound effect: An abrasive moving scrape gathers into a short air pull. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatSweep.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "warning.zone",
      "category": "Directional warnings",
      "name": "Area danger warning",
      "trigger": "appear, zone, cage",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('threatZone', '')",
      "evidence": [
        "src/combat-audio.js:42",
        "src/game.js:34"
      ],
      "notes": "One shared warning for teleport landing, delayed explosion and closing cage. Only nearest actual tell per simulation batch; bounded repetition, not a sound for every simultaneous danger.",
      "work": "replace",
      "priority": "P1",
      "brief": "A dry seal press and restrained pressure intake that reads as imminent danger.",
      "duration": "0.18–0.35 s",
      "variants": 2,
      "search": "seal stamp; pressure charge; ominous pulse",
      "prompt": "One isolated supernatural anime battle game sound effect: A dry seal press and restrained pressure intake that reads as imminent danger. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/threatZone.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "impact.crit",
      "category": "Enemy damage",
      "name": "Critical hit",
      "trigger": "Critical enemy hit",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.hit",
      "evidence": [
        "src/audio.js:740",
        "src/game.js:2360"
      ],
      "notes": "Enhanced noise/descending impact/glint; gated 65ms.",
      "work": "replace",
      "priority": "P1",
      "brief": "A sharp fracture and compressed-air crack over a brief heavy impact. Make the contact unmistakable on phone speakers.",
      "duration": "0.15–0.4 s",
      "variants": 3,
      "search": "anime impact crack; shockwave punch; brittle break",
      "prompt": "One isolated supernatural anime battle game sound effect: A sharp fracture and compressed-air crack over a brief heavy impact. Make the contact unmistakable on phone speakers. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "primary.kaito",
      "category": "Player combat",
      "name": "Kaito — Static Orb",
      "trigger": "Primary cast: orb",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Distinct orb synthesis recipe. Shared generic hit/crit/kill layers on contact; no recorded weapon sample.",
      "work": "replace",
      "priority": "P1",
      "brief": "Kaito — Static Orb: irregular electrical arcs, transformer stress and short thunder cracks. Prioritize a fast physical attack with a compact decay.",
      "search": "electric arc; transformer buzz; thunder crack",
      "duration": "0.08–0.3 s",
      "variants": 4,
      "prompt": "One isolated supernatural anime battle game sound effect: Kaito — Static Orb: irregular electrical arcs, transformer stress and short thunder cracks. Prioritize a fast physical attack with a compact decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "primary-kaito__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/primary-kaito__blade.mp3",
          "sha256": "b9a4484b829fc5206afce71c9e6212c98bd4e25a7c5c7bf7916378b1cdaeb823",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-kaito__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/primary-kaito__curse.mp3",
          "sha256": "5708d1baa23fc16177b53932f0a5b22e2f009d636bc071629a20c5f8f0330d68",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-kaito__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/primary-kaito__kinetic.mp3",
          "sha256": "da960713a2a83100c0b499bd9c56d6912a7ec70e2d5331967cc8d3cf3a30e94b",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "primary.ren",
      "category": "Player combat",
      "name": "Ren — Reversal Palm",
      "trigger": "Primary cast: cone",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2401"
      ],
      "notes": "Distinct cone synthesis recipe. Shared generic hit/crit/kill layers on contact; no recorded weapon sample.",
      "work": "replace",
      "priority": "P1",
      "brief": "Ren — Reversal Palm: cloth snapping, compressed-air cracks and heavy body impacts. Prioritize a fast physical attack with a compact decay.",
      "search": "cloth snap; air punch; body impact",
      "duration": "0.08–0.3 s",
      "variants": 4,
      "prompt": "One isolated supernatural anime battle game sound effect: Ren — Reversal Palm: cloth snapping, compressed-air cracks and heavy body impacts. Prioritize a fast physical attack with a compact decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "primary-ren__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/primary-ren__blade.mp3",
          "sha256": "93381a795588ea52440889f451aa631ed50ecc9c30833095ce01b9196998f957",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-ren__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/primary-ren__curse.mp3",
          "sha256": "7dfe5be8cc2c2ba7ebc21ad904ac5908cb870f4d02c631e96238fcaac6575c31",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-ren__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/primary-ren__kinetic.mp3",
          "sha256": "3f7d056590b4c09ce3304877de4db973195d3e83f3e600f089bb3f80805b5d40",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "primary.sora",
      "category": "Player combat",
      "name": "Sora — Talisman Volley",
      "trigger": "Primary cast: volley",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Distinct volley synthesis recipe. Shared generic hit/crit/kill layers on contact; no recorded weapon sample.",
      "work": "replace",
      "priority": "P1",
      "brief": "Sora — Talisman Volley: dry paper tears, talisman flicks and slicing air. Prioritize a fast physical attack with a compact decay.",
      "search": "paper tear; paper flick; razor air whoosh",
      "duration": "0.08–0.3 s",
      "variants": 4,
      "prompt": "One isolated supernatural anime battle game sound effect: Sora — Talisman Volley: dry paper tears, talisman flicks and slicing air. Prioritize a fast physical attack with a compact decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "primary-sora__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/primary-sora__blade.mp3",
          "sha256": "bb1ceac5349991c22c7b58ea1d50f51ccf27e303c06d4653abf77df49db3fd58",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-sora__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/primary-sora__curse.mp3",
          "sha256": "cfdf1e2aabb9f8637174a0ad81e9fab905081cdf41e719eca038d64ba914389e",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-sora__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/primary-sora__kinetic.mp3",
          "sha256": "84c50334f441ec46af92ddb55367d51ecd9e65c89314bccd74a81c0e1f28c51f",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "primary.yui",
      "category": "Player combat",
      "name": "Yui — Needle Thread",
      "trigger": "Primary cast: bolt",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Distinct bolt synthesis recipe. Shared generic hit/crit/kill layers on contact; no recorded weapon sample.",
      "work": "replace",
      "priority": "P1",
      "brief": "Yui — Needle Thread: taut filament tension, wire snaps and razor-air cuts. Prioritize a fast physical attack with a compact decay.",
      "search": "wire tension snap; razor whoosh; metal shear",
      "duration": "0.08–0.3 s",
      "variants": 4,
      "prompt": "One isolated supernatural anime battle game sound effect: Yui — Needle Thread: taut filament tension, wire snaps and razor-air cuts. Prioritize a fast physical attack with a compact decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "primary-yui__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/primary-yui__blade.mp3",
          "sha256": "2ba21e97b1c316b5b0d4034db3a9a60697945f9941b791f2c920853f45b5616f",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-yui__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/primary-yui__curse.mp3",
          "sha256": "79c5ae37466a228b54a0826081b2cdceec7b249b10ebf04f6f2e862ba3af6861",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "primary-yui__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/primary-yui__kinetic.mp3",
          "sha256": "c88102a06cd589114d048bcd03efc559f6b20228d23ca16dbc55fd7705658fc7",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "shiki.kaito.entry",
      "category": "Shikigami",
      "name": "Raiju — arrival",
      "trigger": "shiki event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback; gain and sample can be swapped through assets/sfx/combat/manifest.json.",
      "work": "review",
      "priority": "P1",
      "brief": "A dangerous thunder beast materializes: irregular electrical arcing, a deep animal snarl and a dry thunder crack. One immediate attack, then controlled decay.",
      "search": "electric arc discharge; beast growl; thunder crack",
      "duration": "0.5–1.2 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: A dangerous thunder beast materializes: irregular electrical arcing, a deep animal snarl and a dry thunder crack. One immediate attack, then controlled decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/sfx/combat/shiki-kaito-entry.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/shiki-kaito-entry.mp3"
        }
      ]
    },
    {
      "id": "shiki.ren.entry",
      "category": "Shikigami",
      "name": "Kuroinu — arrival",
      "trigger": "shiki event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback; gain and sample can be swapped through assets/sfx/combat/manifest.json.",
      "work": "review",
      "priority": "P1",
      "brief": "A dangerous black hound materializes: compressed-air crack, heavy claw strike and gritty canine snarl. One immediate attack, then controlled decay.",
      "search": "aggressive dog snarl; monster canine growl; heavy claw impact; compressed air punch",
      "duration": "0.5–1.2 s",
      "variants": 2,
      "prompt": "A single fierce supernatural black hound materializes for a serious anime battle. One explosive compressed-air crack with a heavy claw strike, immediately followed by a short deep snarling canine growl with gritty breath. Physical, threatening, close and dry. Strong immediate attack, short controlled decay, full silence at the end. Isolated game sound effect. No speech, human voice, music, melody, chime, cartoon boing, ambience or repeated sequence.",
      "preview": "assets/sfx/combat/shiki-ren-entry.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/shiki-ren-entry.mp3"
        }
      ]
    },
    {
      "id": "shiki.sora.entry",
      "category": "Shikigami",
      "name": "Kitsune — arrival",
      "trigger": "shiki event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback; gain and sample can be swapped through assets/sfx/combat/manifest.json.",
      "work": "review",
      "priority": "P1",
      "brief": "A dangerous paper fox materializes: dry talisman tears, a rushing paper burst and a sharp fox bark. One immediate attack, then controlled decay.",
      "search": "paper tear flurry; fox bark; fast air whoosh",
      "duration": "0.5–1.2 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: A dangerous paper fox materializes: dry talisman tears, a rushing paper burst and a sharp fox bark. One immediate attack, then controlled decay. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/sfx/combat/shiki-sora-entry.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/shiki-sora-entry.mp3"
        }
      ]
    },
    {
      "id": "shiki.yui.entry",
      "category": "Shikigami",
      "name": "Shirasagi — arrival",
      "trigger": "shiki event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback; gain and sample can be swapped through assets/sfx/combat/manifest.json.",
      "work": "review",
      "priority": "P1",
      "brief": "A dangerous white heron materializes: taut wire snap, razor air cut, forceful wingbeat and short harsh heron cry. One immediate attack, then controlled decay.",
      "search": "heron harsh call; large bird wing flap; taut wire snap; razor whoosh",
      "duration": "0.5–1.2 s",
      "variants": 2,
      "prompt": "A single dangerous spectral white heron strikes into a serious supernatural anime battle. A taut metallic filament snaps with a razor-sharp air cut, one powerful close wingbeat, then a very brief harsh heron cry. Precise, physical and ominous, with dry feather detail and a hard focused transient. One short isolated game sound effect, full silence at the end. No speech, human voice, music, melody, magical chime, cute chirping, cartoon slide whistle, ambience or repeated sequence.",
      "preview": "assets/sfx/combat/shiki-yui-entry.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/shiki-yui-entry.mp3"
        }
      ]
    },
    {
      "id": "loot.card-equip",
      "category": "Boss rewards",
      "name": "Equip boss signature card",
      "trigger": "cardequip event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('cardEquip', '')",
      "evidence": [
        "src/combat-audio.js:51",
        "src/game.js:2426"
      ],
      "notes": "One shared card acceptance cue; unclaimed cardDrop only sets notice, no dedicated ground-drop sound.",
      "work": "replace",
      "priority": "P2",
      "brief": "A card slips into place, then a dry seal stamp confirms the choice.",
      "duration": "0.15–0.35 s",
      "variants": 2,
      "search": "card slide; paper snap; seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: A card slips into place, then a dry seal stamp confirms the choice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/cardEquip.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "loot.weapon-bind",
      "category": "Boss rewards",
      "name": "Bind dropped weapon",
      "trigger": "weaponBind event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('weaponBind', '')",
      "evidence": [
        "src/combat-audio.js:50",
        "src/game.js:2395"
      ],
      "notes": "Shared across every weapon and character; old checkpoint inspect path can also use upgrade confirmation.",
      "work": "replace",
      "priority": "P2",
      "brief": "A tactile grip or latch locks into a clean energy snap.",
      "duration": "0.2–0.4 s",
      "variants": 2,
      "search": "weapon equip; metal latch; energy snap",
      "prompt": "One isolated supernatural anime battle game sound effect: A tactile grip or latch locks into a clean energy snap. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/weaponBind.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "loot.weapon-drop",
      "category": "Boss rewards",
      "name": "Weapon forms on ground",
      "trigger": "Exorcism seal callback; immediate fallback without exorcism",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback. One sample replaces the procedural cue; no additional layer. Boss loot sounds at the death seal; one prize per kill.",
      "work": "review",
      "priority": "P2",
      "brief": "Brilliant metallic chime, pressure impact and short crystalline sheen for the one boss prize.",
      "duration": "2.2 s",
      "variants": 1,
      "search": "metal object reveal; magic materialize; short shimmer",
      "prompt": "One isolated supernatural anime battle game sound effect: A weighty object materializes with a metal edge, resonant pressure hit and restrained upper shimmer. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/sfx/combat/boss-loot-reveal.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/boss-loot-reveal.mp3"
        }
      ]
    },
    {
      "id": "boss.detention.exorcism",
      "category": "Bosses",
      "name": "DETENTION — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:17"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with chains pulled taut, iron bars bending and a cell-door slam; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "chain tension; metal stress; prison door slam; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with chains pulled taut, iron bars bending and a cell-door slam; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.exam.exorcism",
      "category": "Bosses",
      "name": "EXAM SEASON — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:16"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with rapid mechanical clock ticks tightening into a dry desk slam; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "mechanical clock tick; ticking tension; desk slam; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with rapid mechanical clock ticks tightening into a dry desk slam; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.group.exorcism",
      "category": "Bosses",
      "name": "GROUP PROJECT — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:18"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with overlapping paper slaps and staggered hand knocks converging into one impact; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "stack paper slap; wooden knock; layered impact; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with overlapping paper slaps and staggered hand knocks converging into one impact; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.janitor.exorcism",
      "category": "Bosses",
      "name": "THE JANITOR — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:12"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with iron scrape on concrete into a brutal steel slam; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "heavy metal drag concrete; steel slam; industrial metal impact; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with iron scrape on concrete into a brutal steel slam; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.monitor.exorcism",
      "category": "Bosses",
      "name": "HALL MONITOR — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:13"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with harsh whistle breath, a baton crack and a heavy authority stamp; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "referee whistle short; baton strike; heavy stamp; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with harsh whistle breath, a baton crack and a heavy authority stamp; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.parent.exorcism",
      "category": "Bosses",
      "name": "PARENT-TEACHER NIGHT — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:19"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with two stern percussive knocks, a sharp whistle breath and a resonant stamp; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "wood knock; low whistle short; heavy rubber stamp; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with two stern percussive knocks, a sharp whistle breath and a resonant stamp; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.quiz.exorcism",
      "category": "Bosses",
      "name": "POP QUIZ — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:14"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with frantic paper flicks, a rising chalkboard scrape and a brittle fracture; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "paper flurry; chalk squeak; glass fracture short; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with frantic paper flicks, a rising chalkboard scrape and a brittle fracture; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.substitute.exorcism",
      "category": "Bosses",
      "name": "THE SUBSTITUTE — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:15"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with reverse breath suction, a ripping air vacuum and a close impact; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "ghost breath reverse; vacuum whoosh; air rupture; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with reverse breath suction, a ripping air vacuum and a close impact; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "boss.vice.exorcism",
      "category": "Bosses",
      "name": "THE VICE PRINCIPAL — exorcism release / sever / seal",
      "trigger": "Three presentation-clock beats after a real boss death",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.bossExorcism(stage, family)",
      "evidence": [
        "src/audio.js:820",
        "src/game.js:2298",
        "src/boss-exorcism.js:20"
      ],
      "notes": "Three procedural beats, reused by visual family with pitch adjustment. Release = rupture, sever = tightening + dry cuts, seal = tonal resolution. Not a recorded boss death or VO.",
      "work": "replace",
      "priority": "P2",
      "brief": "Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with a low pressure intake, twisting metal and a decisive gavel-like crack; finish with a compact physical stamp. Reuse family layers across bosses.",
      "duration": "0.3–0.7 s per beat",
      "variants": "3 separate beats, 1 take each",
      "search": "dark air suction; metal stress; gavel impact; energy rupture; binding tear; heavy seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: Deliver three separate beats: body rupture, binding tear, final seal. Color the rupture and tear with a low pressure intake, twisting metal and a decisive gavel-like crack; finish with a compact physical stamp. Reuse family layers across bosses. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "vo.kaito.bosskill",
      "category": "Character voices",
      "name": "Kaito — bosskill",
      "trigger": "Proposed boss-kill ownership cue",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/kaito_bosskill.mp3, assets/vo/kaito_bosskill2.mp3, assets/vo/kaito_bosskill3.mp3, assets/vo/kaito_bosskill4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Austin - Timid and casual and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/kaito/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/bosskill1_t2.mp3",
        "assets/clone/kaito/bosskill1_t3.mp3",
        "assets/clone/kaito/bosskill2_t1.mp3",
        "assets/clone/kaito/bosskill2_t2.mp3",
        "assets/clone/kaito/bosskill2_t3.mp3",
        "assets/clone/kaito/bosskill3_t1.mp3",
        "assets/clone/kaito/bosskill3_t2.mp3",
        "assets/clone/kaito/bosskill3_t3.mp3",
        "assets/clone/kaito/bosskill4_t1.mp3",
        "assets/clone/kaito/bosskill4_t2.mp3",
        "assets/clone/kaito/bosskill4_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo.ren.bosskill",
      "category": "Character voices",
      "name": "Ren — bosskill",
      "trigger": "Proposed boss-kill ownership cue",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/ren_bosskill.mp3, assets/vo/ren_bosskill2.mp3, assets/vo/ren_bosskill3.mp3, assets/vo/ren_bosskill4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Harry - Fierce Warrior and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/ren/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/bosskill1_t2.mp3",
        "assets/clone/ren/bosskill1_t3.mp3",
        "assets/clone/ren/bosskill2_t1.mp3",
        "assets/clone/ren/bosskill2_t2.mp3",
        "assets/clone/ren/bosskill2_t3.mp3",
        "assets/clone/ren/bosskill3_t1.mp3",
        "assets/clone/ren/bosskill3_t2.mp3",
        "assets/clone/ren/bosskill3_t3.mp3",
        "assets/clone/ren/bosskill4_t1.mp3",
        "assets/clone/ren/bosskill4_t2.mp3",
        "assets/clone/ren/bosskill4_t3.mp3",
        "assets/clone/ren/bosskill5_t1.mp3",
        "assets/clone/ren/bosskill5_t2.mp3",
        "assets/clone/ren/bosskill5_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo.ren.hurt",
      "category": "Character voices",
      "name": "Ren — hurt",
      "trigger": "Existing hurt dispatch",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/ren_hurt.mp3, assets/vo/ren_hurt2.mp3, assets/vo/ren_hurt3.mp3, assets/vo/ren_hurt4.mp3, assets/vo/ren_hurt5.mp3, assets/vo/ren_hurt6.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2366"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 6 take(s) shipped in Harry - Fierce Warrior and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/ren/hurt10_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/hurt10_t2.mp3",
        "assets/clone/ren/hurt10_t3.mp3",
        "assets/clone/ren/hurt1_t1.mp3",
        "assets/clone/ren/hurt1_t2.mp3",
        "assets/clone/ren/hurt1_t3.mp3",
        "assets/clone/ren/hurt2_t1.mp3",
        "assets/clone/ren/hurt2_t2.mp3",
        "assets/clone/ren/hurt2_t3.mp3",
        "assets/clone/ren/hurt3_t1.mp3",
        "assets/clone/ren/hurt3_t2.mp3",
        "assets/clone/ren/hurt3_t3.mp3",
        "assets/clone/ren/hurt4_t1.mp3",
        "assets/clone/ren/hurt4_t2.mp3",
        "assets/clone/ren/hurt4_t3.mp3",
        "assets/clone/ren/hurt5_t1.mp3",
        "assets/clone/ren/hurt5_t2.mp3",
        "assets/clone/ren/hurt5_t3.mp3",
        "assets/clone/ren/hurt6_t1.mp3",
        "assets/clone/ren/hurt6_t2.mp3",
        "assets/clone/ren/hurt6_t3.mp3",
        "assets/clone/ren/hurt7_t1.mp3",
        "assets/clone/ren/hurt7_t2.mp3",
        "assets/clone/ren/hurt7_t3.mp3",
        "assets/clone/ren/hurt8_t1.mp3",
        "assets/clone/ren/hurt8_t2.mp3",
        "assets/clone/ren/hurt8_t3.mp3",
        "assets/clone/ren/hurt9_t1.mp3",
        "assets/clone/ren/hurt9_t2.mp3",
        "assets/clone/ren/hurt9_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo.yui.bosskill",
      "category": "Character voices",
      "name": "Yui — bosskill",
      "trigger": "Proposed boss-kill ownership cue",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/yui_bosskill.mp3, assets/vo/yui_bosskill2.mp3, assets/vo/yui_bosskill3.mp3, assets/vo/yui_bosskill4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Zoe - Playful and Arrogant Magician and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/yui/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/bosskill1_t2.mp3",
        "assets/clone/yui/bosskill1_t3.mp3",
        "assets/clone/yui/bosskill2_t1.mp3",
        "assets/clone/yui/bosskill2_t2.mp3",
        "assets/clone/yui/bosskill2_t3.mp3",
        "assets/clone/yui/bosskill3_t1.mp3",
        "assets/clone/yui/bosskill3_t2.mp3",
        "assets/clone/yui/bosskill3_t3.mp3",
        "assets/clone/yui/bosskill4_t1.mp3",
        "assets/clone/yui/bosskill4_t2.mp3",
        "assets/clone/yui/bosskill4_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo.yui.dash",
      "category": "Character voices",
      "name": "Yui — dash",
      "trigger": "Existing dash dispatch",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/yui_dash.mp3, assets/vo/yui_dash2.mp3, assets/vo/yui_dash3.mp3, assets/vo/yui_dash4.mp3, assets/vo/yui_dash5.mp3, assets/vo/yui_dash6.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2402"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 6 take(s) shipped in Zoe - Playful and Arrogant Magician and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/yui/dash1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/dash1_t2.mp3",
        "assets/clone/yui/dash1_t3.mp3",
        "assets/clone/yui/dash2_t1.mp3",
        "assets/clone/yui/dash2_t2.mp3",
        "assets/clone/yui/dash2_t3.mp3",
        "assets/clone/yui/dash3_t1.mp3",
        "assets/clone/yui/dash3_t2.mp3",
        "assets/clone/yui/dash3_t3.mp3",
        "assets/clone/yui/dash4_t1.mp3",
        "assets/clone/yui/dash4_t2.mp3",
        "assets/clone/yui/dash4_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo.yui.hurt",
      "category": "Character voices",
      "name": "Yui — hurt",
      "trigger": "Existing hurt dispatch",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/vo/yui_hurt.mp3, assets/vo/yui_hurt2.mp3, assets/vo/yui_hurt3.mp3, assets/vo/yui_hurt4.mp3, assets/vo/yui_hurt5.mp3, assets/vo/yui_hurt6.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2366"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 6 take(s) shipped in Zoe - Playful and Arrogant Magician and wired. The clone audition pool stays as history.",
      "preview": "assets/clone/yui/hurt1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/hurt1_t2.mp3",
        "assets/clone/yui/hurt1_t3.mp3",
        "assets/clone/yui/hurt2_t1.mp3",
        "assets/clone/yui/hurt2_t2.mp3",
        "assets/clone/yui/hurt2_t3.mp3",
        "assets/clone/yui/hurt3_t1.mp3",
        "assets/clone/yui/hurt3_t2.mp3",
        "assets/clone/yui/hurt3_t3.mp3",
        "assets/clone/yui/hurt4_t1.mp3",
        "assets/clone/yui/hurt4_t2.mp3",
        "assets/clone/yui/hurt4_t3.mp3",
        "assets/clone/yui/hurt5_t1.mp3",
        "assets/clone/yui/hurt5_t2.mp3",
        "assets/clone/yui/hurt5_t3.mp3",
        "assets/clone/yui/hurt6_t1.mp3",
        "assets/clone/yui/hurt6_t2.mp3",
        "assets/clone/yui/hurt6_t3.mp3"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "player.death",
      "category": "Crew and survival",
      "name": "Run lost",
      "trigger": "death event / _onDeath",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.death",
      "evidence": [
        "src/audio.js:855",
        "src/game.js:2115"
      ],
      "notes": "Descending saw/noise/sub tail plus active student death VO. Music fades out.",
      "work": "replace",
      "priority": "P2",
      "brief": "A final harsh curse crush followed by an exhausted air release; keep the character voice intelligible.",
      "duration": "0.8–1.6 s",
      "variants": 2,
      "search": "dark impact; energy collapse; breath release",
      "prompt": "One isolated supernatural anime battle game sound effect: A final harsh curse crush followed by an exhausted air release; keep the character voice intelligible. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "player.knockout",
      "category": "Crew and survival",
      "name": "Crew member knocked out",
      "trigger": "knockout event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('knockout', '')",
      "evidence": [
        "src/combat-audio.js:53",
        "src/game.js:2458"
      ],
      "notes": "Dedicated descending cue. Incoming student hurt/tag VO suppressed in same batch.",
      "work": "replace",
      "priority": "P2",
      "brief": "A heavy low body fall and a brief descending pressure drain, clearly separate from total run death.",
      "duration": "0.4–0.8 s",
      "variants": 2,
      "search": "body fall; energy drain; low impact",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavy low body fall and a brief descending pressure drain, clearly separate from total run death. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/knockout.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "player.tag",
      "category": "Crew and survival",
      "name": "Crew tag",
      "trigger": "Successful manual tag or non-KO forced swap",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.tag",
      "evidence": [
        "src/audio.js:787",
        "src/game.js:2193"
      ],
      "notes": "Shared departing sweep and struck arrival. Tag VO hooks exist, but no tag files supplied or loaded.",
      "work": "replace",
      "priority": "P2",
      "brief": "Two compact movements: departing air pull, then a firm incoming footplant and pressure snap.",
      "duration": "0.3–0.6 s",
      "variants": 2,
      "search": "fast whoosh; foot plant; air snap",
      "prompt": "One isolated supernatural anime battle game sound effect: Two compact movements: departing air pull, then a firm incoming footplant and pressure snap. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.kaito.close",
      "category": "Domains",
      "name": "Blackout Grid closes",
      "trigger": "Kaito domain ends",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3294"
      ],
      "notes": "No dedicated end cue. Electrical discharge settling, not another activation blast.",
      "work": "source",
      "priority": "P2",
      "brief": "The kaito field releases its pressure in one short collapsing tail, colored by irregular electrical arcs, transformer stress and short thunder cracks. No continuous floor-effect sound.",
      "duration": "0.2–0.5 s",
      "variants": 2,
      "search": "electric arc; transformer buzz; thunder crack",
      "prompt": "One isolated supernatural anime battle game sound effect: The kaito field releases its pressure in one short collapsing tail, colored by irregular electrical arcs, transformer stress and short thunder cracks. No continuous floor-effect sound. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "domain-kaito-close__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/domain-kaito-close__blade.mp3",
          "sha256": "7b5efd9a75cd19a0ae343c08982210a50ff0ee14544bae4d65484f96d890cdc8",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-kaito-close__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/domain-kaito-close__curse.mp3",
          "sha256": "dac9c66426399786524e060596b8070210376851f55cbe183842c69377e9f07a",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-kaito-close__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/domain-kaito-close__kinetic.mp3",
          "sha256": "6742c047ab2f0435ec3b5b5a1329832b0c3a698cd81b32962023e9021ee88de4",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "domain.kaito.open",
      "category": "Domains",
      "name": "Kaito — Blackout Grid activation",
      "trigger": "domain event / cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.domain",
      "evidence": [
        "src/audio.js:807",
        "src/game.js:2412"
      ],
      "notes": "All four share the same 1.6-second synthesis swell; character VO adds identity. Distinct physical domain texture remains an art replacement to source.",
      "work": "replace",
      "priority": "P2",
      "brief": "A powerful field opens with irregular electrical arcs, transformer stress and short thunder cracks; expand the physical texture into a controlled pressure bloom beneath the character's domain voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "electric arc; transformer buzz; thunder crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A powerful field opens with irregular electrical arcs, transformer stress and short thunder cracks; expand the physical texture into a controlled pressure bloom beneath the character's domain voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.kaito.strike",
      "category": "Domains",
      "name": "Blackout Grid strike",
      "trigger": "strike event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.hit",
      "evidence": [
        "src/audio.js:740",
        "src/game.js:2498"
      ],
      "notes": "Uses generic noncritical hit synthesis; no separate thunder impact.",
      "work": "replace",
      "priority": "P2",
      "brief": "A short electrical fracture marks a meaningful domain strike. Keep dense repeated strikes gated.",
      "duration": "0.2–0.5 s",
      "variants": 2,
      "search": "electric arc; transformer buzz; thunder crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A short electrical fracture marks a meaningful domain strike. Keep dense repeated strikes gated. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.ren.close",
      "category": "Domains",
      "name": "Iron Cell final crush",
      "trigger": "cellcrush event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.kill",
      "evidence": [
        "src/audio.js:751",
        "src/game.js:2499"
      ],
      "notes": "Uses generic big-kill synthesis, not a unique domain ending recording.",
      "work": "replace",
      "priority": "P2",
      "brief": "The ren field releases its pressure in one short collapsing tail, colored by cloth snapping, compressed-air cracks and heavy body impacts. No continuous floor-effect sound.",
      "duration": "0.2–0.5 s",
      "variants": 2,
      "search": "cloth snap; air punch; body impact",
      "prompt": "One isolated supernatural anime battle game sound effect: The ren field releases its pressure in one short collapsing tail, colored by cloth snapping, compressed-air cracks and heavy body impacts. No continuous floor-effect sound. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.ren.open",
      "category": "Domains",
      "name": "Ren — Iron Cell activation",
      "trigger": "domain event / cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.domain",
      "evidence": [
        "src/audio.js:807",
        "src/game.js:2412"
      ],
      "notes": "All four share the same 1.6-second synthesis swell; character VO adds identity. Distinct physical domain texture remains an art replacement to source.",
      "work": "replace",
      "priority": "P2",
      "brief": "A powerful field opens with cloth snapping, compressed-air cracks and heavy body impacts; expand the physical texture into a controlled pressure bloom beneath the character's domain voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "cloth snap; air punch; body impact",
      "prompt": "One isolated supernatural anime battle game sound effect: A powerful field opens with cloth snapping, compressed-air cracks and heavy body impacts; expand the physical texture into a controlled pressure bloom beneath the character's domain voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.sora.close",
      "category": "Domains",
      "name": "Paper Storm closes",
      "trigger": "Sora domain ends",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3294"
      ],
      "notes": "No dedicated end cue. Talisman flutter collapses into a dry seal snap.",
      "work": "source",
      "priority": "P2",
      "brief": "The sora field releases its pressure in one short collapsing tail, colored by dry paper tears, talisman flicks and slicing air. No continuous floor-effect sound.",
      "duration": "0.2–0.5 s",
      "variants": 2,
      "search": "paper tear; paper flick; razor air whoosh",
      "prompt": "One isolated supernatural anime battle game sound effect: The sora field releases its pressure in one short collapsing tail, colored by dry paper tears, talisman flicks and slicing air. No continuous floor-effect sound. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "domain-sora-close__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/domain-sora-close__blade.mp3",
          "sha256": "9b59b9275065dbc6a03b1611c8a5750c218fabd81a04adbed4bec4e2756d9d8e",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-sora-close__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/domain-sora-close__curse.mp3",
          "sha256": "c8abca4925be83ce9a6a9a4b90d70c18456a140ef222d28b0ae4361215a18eb1",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-sora-close__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/domain-sora-close__kinetic.mp3",
          "sha256": "83f7d7d4f5931d7aa530621c84e5b4c41be824bf2e2c725535126e0d82fe9de9",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "domain.sora.open",
      "category": "Domains",
      "name": "Sora — Paper Storm activation",
      "trigger": "domain event / cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.domain",
      "evidence": [
        "src/audio.js:807",
        "src/game.js:2412"
      ],
      "notes": "All four share the same 1.6-second synthesis swell; character VO adds identity. Distinct physical domain texture remains an art replacement to source.",
      "work": "replace",
      "priority": "P2",
      "brief": "A powerful field opens with dry paper tears, talisman flicks and slicing air; expand the physical texture into a controlled pressure bloom beneath the character's domain voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "paper tear; paper flick; razor air whoosh",
      "prompt": "One isolated supernatural anime battle game sound effect: A powerful field opens with dry paper tears, talisman flicks and slicing air; expand the physical texture into a controlled pressure bloom beneath the character's domain voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "domain.yui.close",
      "category": "Domains",
      "name": "Silk Cathedral closes",
      "trigger": "Yui domain ends",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3294"
      ],
      "notes": "No dedicated end cue. Brief taut-thread release; use character identity.",
      "work": "source",
      "priority": "P2",
      "brief": "The yui field releases its pressure in one short collapsing tail, colored by taut filament tension, wire snaps and razor-air cuts. No continuous floor-effect sound.",
      "duration": "0.2–0.5 s",
      "variants": 2,
      "search": "wire tension snap; razor whoosh; metal shear",
      "prompt": "One isolated supernatural anime battle game sound effect: The yui field releases its pressure in one short collapsing tail, colored by taut filament tension, wire snaps and razor-air cuts. No continuous floor-effect sound. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "domain-yui-close__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/domain-yui-close__blade.mp3",
          "sha256": "ef6c6a586c62288f99269ad69c6393a3f319c19e40b7550654c85ac125452607",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-yui-close__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/domain-yui-close__curse.mp3",
          "sha256": "5417aba49745634275085d91569a73941ed8af5ba265cea42d7b769b8fd17114",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "domain-yui-close__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/domain-yui-close__kinetic.mp3",
          "sha256": "9810fa99baaf1b21c46bacca906714a74a53b45232e0ad459c6b834715ad50c0",
          "duration": 1.28,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "domain.yui.open",
      "category": "Domains",
      "name": "Yui — Silk Cathedral activation",
      "trigger": "domain event / cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.domain",
      "evidence": [
        "src/audio.js:807",
        "src/game.js:2412"
      ],
      "notes": "All four share the same 1.6-second synthesis swell; character VO adds identity. Distinct physical domain texture remains an art replacement to source.",
      "work": "replace",
      "priority": "P2",
      "brief": "A powerful field opens with taut filament tension, wire snaps and razor-air cuts; expand the physical texture into a controlled pressure bloom beneath the character's domain voice.",
      "duration": "0.7–1.5 s",
      "variants": 2,
      "search": "wire tension snap; razor whoosh; metal shear",
      "prompt": "One isolated supernatural anime battle game sound effect: A powerful field opens with taut filament tension, wire snaps and razor-air cuts; expand the physical texture into a controlled pressure bloom beneath the character's domain voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.kaito-arc",
      "category": "Dropped weapons",
      "name": "Storm Relay",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits orb cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: kaito.",
      "work": "replace",
      "priority": "P2",
      "brief": "A stuttering arc discharge with distinct crackling branch transients. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A stuttering arc discharge with distinct crackling branch transients. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A stuttering arc discharge with distinct crackling branch transients. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.kaito-nova",
      "category": "Dropped weapons",
      "name": "Nova Core",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits orb cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: kaito.",
      "work": "replace",
      "priority": "P2",
      "brief": "An electrical pressure pulse with a broad short thunder crack. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "An electrical pressure pulse with a broad short thunder crack. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: An electrical pressure pulse with a broad short thunder crack. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.kaito-well",
      "category": "Dropped weapons",
      "name": "Gravity Well",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits orb cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: kaito.",
      "work": "replace",
      "priority": "P2",
      "brief": "A low inward suction with rough electrical grain and a tight collapse. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A low inward suction with rough electrical grain and a tight collapse. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A low inward suction with rough electrical grain and a tight collapse. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.ren-arc",
      "category": "Dropped weapons",
      "name": "Thunder Palm",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits cone cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: ren.",
      "work": "replace",
      "priority": "P2",
      "brief": "A heavy palm strike with a ragged electrical arc branching from the contact. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A heavy palm strike with a ragged electrical arc branching from the contact. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavy palm strike with a ragged electrical arc branching from the contact. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.ren-ember",
      "category": "Dropped weapons",
      "name": "Cinder Palm",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits bolt cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: ren.",
      "work": "replace",
      "priority": "P2",
      "brief": "A tight fiery palm burst with a dry ignition crack and short flame rush. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A tight fiery palm burst with a dry ignition crack and short flame rush. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A tight fiery palm burst with a dry ignition crack and short flame rush. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.ren-wave",
      "category": "Dropped weapons",
      "name": "Rupture Palm",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits bolt cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: ren.",
      "work": "replace",
      "priority": "P2",
      "brief": "A fast compressed-air wave with a broad moving whoosh and solid short pressure crack. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A fast compressed-air wave with a broad moving whoosh and solid short pressure crack. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A fast compressed-air wave with a broad moving whoosh and solid short pressure crack. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.sora-burst",
      "category": "Dropped weapons",
      "name": "Festival Script",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits volley cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: sora.",
      "work": "replace",
      "priority": "P2",
      "brief": "A handful of paper tears compressed into a crisp short detonation. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A handful of paper tears compressed into a crisp short detonation. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A handful of paper tears compressed into a crisp short detonation. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.sora-razor",
      "category": "Dropped weapons",
      "name": "Razor Script",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits volley cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: sora.",
      "work": "replace",
      "priority": "P2",
      "brief": "Dry paper blades slicing air with a harsh fine cutting edge. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "Dry paper blades slicing air with a harsh fine cutting edge. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: Dry paper blades slicing air with a harsh fine cutting edge. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.sora-seek",
      "category": "Dropped weapons",
      "name": "Hunting Script",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits volley cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: sora.",
      "work": "replace",
      "priority": "P2",
      "brief": "A dry talisman flick followed by a curved razor-air pass. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A dry talisman flick followed by a curved razor-air pass. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A dry talisman flick followed by a curved razor-air pass. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.yui-blast",
      "category": "Dropped weapons",
      "name": "Shatter Thread",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits bolt cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: yui.",
      "work": "replace",
      "priority": "P2",
      "brief": "A taut needle snap followed by a compact piercing blast. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A taut needle snap followed by a compact piercing blast. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A taut needle snap followed by a compact piercing blast. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.yui-frost",
      "category": "Dropped weapons",
      "name": "Winter Thread",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits bolt cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: yui.",
      "work": "replace",
      "priority": "P2",
      "brief": "A precise filament snap with fine ice fractures and a cold brittle tail. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A precise filament snap with fine ice fractures and a cold brittle tail. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A precise filament snap with fine ice fractures and a cold brittle tail. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "weapon.yui-lance",
      "category": "Dropped weapons",
      "name": "Horizon Thread",
      "trigger": "Equipped boss-drop weapon cast",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.shoot",
      "evidence": [
        "src/audio.js:726",
        "src/game.js:2396"
      ],
      "notes": "Currently inherits bolt cast recipe; weaponId is not routed into Sound.shoot. Generic hits/crit/kills play. weaponImpact, weaponBlast and chain visual events have no dedicated sound dispatch. Character: yui.",
      "work": "replace",
      "priority": "P2",
      "brief": "A thin focused metal shear that pierces through a compressed air cut. Keep separate cast and impact cuts where needed; reuse the core material kit.",
      "duration": "0.1–0.35 s",
      "variants": 3,
      "search": "A thin focused metal shear that pierces through a compressed air cut. Keep separate cast and impact cuts where needed  reuse the core material kit.",
      "prompt": "One isolated supernatural anime battle game sound effect: A thin focused metal shear that pierces through a compressed air cut. Keep separate cast and impact cuts where needed; reuse the core material kit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "enemy.burst",
      "category": "Enemy attacks",
      "name": "Fallback boss radial burst",
      "trigger": "shoot(burst)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyShot', 'burst')",
      "evidence": [
        "src/combat-audio.js:46",
        "src/game.js:2396"
      ],
      "notes": "Same ordinary hostile-shot recipe as spit.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact abrasive projectile release with a short pressure hiss.",
      "duration": "0.08–0.18 s",
      "variants": 3,
      "search": "energy shot; pressure hiss; dark projectile",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact abrasive projectile release with a short pressure hiss. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyShot.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.cage",
      "category": "Enemy attacks",
      "name": "Detention cage collapses",
      "trigger": "cagedown event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'cage')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2497"
      ],
      "notes": "Common hostile impact recipe.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.charge",
      "category": "Enemy attacks",
      "name": "Charge release",
      "trigger": "charge event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'charge')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2485"
      ],
      "notes": "Common hostile impact recipe.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.quiz",
      "category": "Enemy attacks",
      "name": "Quiz / Group spiral release",
      "trigger": "enemyVolley(kind quiz)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyShot', 'quiz')",
      "evidence": [
        "src/combat-audio.js:46",
        "src/game.js:2400"
      ],
      "notes": "Brighter noise/pitch variant; one event for a three-bullet volley and gated further in mixer.",
      "work": "replace",
      "priority": "P2",
      "brief": "Several close paper snaps read as one sharp volley.",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "search": "paper flick; card throw; paper snap",
      "prompt": "One isolated supernatural anime battle game sound effect: Several close paper snaps read as one sharp volley. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyShot-quiz.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.slam",
      "category": "Enemy attacks",
      "name": "Teleport boss landing",
      "trigger": "slam event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'slam')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2495"
      ],
      "notes": "Common hostile impact recipe; includes radial bullets.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.smash",
      "category": "Enemy attacks",
      "name": "Brute landing / melee smash",
      "trigger": "smash event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'smash')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2486"
      ],
      "notes": "Common hostile impact recipe.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.spit",
      "category": "Enemy attacks",
      "name": "Spitter / warden / spotlight / Conductor release",
      "trigger": "shoot(spit)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyShot', 'spit')",
      "evidence": [
        "src/combat-audio.js:46",
        "src/game.js:2396"
      ],
      "notes": "Same spit recipe for several enemy types; identities are not passed through.",
      "work": "replace",
      "priority": "P2",
      "brief": "A sharp organic spit with a small sizzling air tail.",
      "duration": "0.08–0.18 s",
      "variants": 3,
      "search": "creature spit; acid shot; wet snap",
      "prompt": "One isolated supernatural anime battle game sound effect: A sharp organic spit with a small sizzling air tail. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyShot.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.summon",
      "category": "Enemy attacks",
      "name": "Hostile reinforcement summon",
      "trigger": "summon event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemySummon', 'summon')",
      "evidence": [
        "src/combat-audio.js:47",
        "src/game.js:2487"
      ],
      "notes": "Shared spectral puff for all summoning bosses.",
      "work": "replace",
      "priority": "P2",
      "brief": "A short rough breath through an opening air tear.",
      "duration": "0.18–0.4 s",
      "variants": 2,
      "search": "air tear; creature breath; materialize",
      "prompt": "One isolated supernatural anime battle game sound effect: A short rough breath through an opening air tear. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemySummon.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.sweep",
      "category": "Enemy attacks",
      "name": "Janitor sweep release",
      "trigger": "sweep event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'sweep')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2484"
      ],
      "notes": "Common hostile impact recipe.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.vanish",
      "category": "Enemy attacks",
      "name": "Teleport disappearance",
      "trigger": "vanish event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemySummon', 'vanish')",
      "evidence": [
        "src/combat-audio.js:47",
        "src/game.js:2494"
      ],
      "notes": "Same summon recipe despite the vanish id.",
      "work": "replace",
      "priority": "P2",
      "brief": "A fast reverse-air intake collapsing to silence.",
      "duration": "0.15–0.35 s",
      "variants": 2,
      "search": "reverse whoosh; vacuum suction short",
      "prompt": "One isolated supernatural anime battle game sound effect: A fast reverse-air intake collapsing to silence. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemySummon.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "enemy.zone",
      "category": "Enemy attacks",
      "name": "Timed area detonates",
      "trigger": "zonepop event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'zone')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2496"
      ],
      "notes": "Common hostile impact recipe.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "heavy short impact; body slam; pressure crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A compact physical pressure impact with the attacking material audible in the midrange. Several releases currently share this same impact family; source one useful family before splitting variants. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "impact.big-kill",
      "category": "Enemy damage",
      "name": "Large curse defeated / fallback boss death",
      "trigger": "Kill radius above 0.9; boss with no exorcism presenter",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.kill",
      "evidence": [
        "src/audio.js:751",
        "src/game.js:2361"
      ],
      "notes": "Brute and warden qualify; heavier noise/low tones; 85ms gate. Normal boss deaths use exorcism.",
      "work": "replace",
      "priority": "P2",
      "brief": "A heavier curse rupture with a controlled debris tail; avoid a long cinematic boom on every kill.",
      "duration": "0.2–0.5 s",
      "variants": 3,
      "search": "heavy impact; organic rupture; debris short",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavier curse rupture with a controlled debris tail; avoid a long cinematic boom on every kill. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "impact.hit",
      "category": "Enemy damage",
      "name": "Ordinary enemy hit",
      "trigger": "Any noncritical enemy hit or strike event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.hit",
      "evidence": [
        "src/audio.js:740",
        "src/game.js:2360"
      ],
      "notes": "Shared across enemy species, weapons and many card effects; gated 35ms.",
      "work": "replace",
      "priority": "P2",
      "brief": "Dry physical contact with cloth and a tight midrange body hit; quiet enough for frequent repeats.",
      "duration": "0.06–0.18 s",
      "variants": 4,
      "search": "body punch; cloth snap; short impact",
      "prompt": "One isolated supernatural anime battle game sound effect: Dry physical contact with cloth and a tight midrange body hit; quiet enough for frequent repeats. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "impact.kill",
      "category": "Enemy damage",
      "name": "Ordinary curse defeated",
      "trigger": "Non-boss kill, radius at most 0.9",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.kill",
      "evidence": [
        "src/audio.js:751",
        "src/game.js:2361"
      ],
      "notes": "Grub, husk, wisp, spitter, lurker and moth share this; no species death recordings. End-of-room automatic cleanup suppresses kills.",
      "work": "replace",
      "priority": "P2",
      "brief": "A short gritty curse rupture with a dry dissipating tail.",
      "duration": "0.1–0.25 s",
      "variants": 3,
      "search": "organic rupture; dark magic burst; dry debris",
      "prompt": "One isolated supernatural anime battle game sound effect: A short gritty curse rupture with a dry dissipating tail. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "music.fallback",
      "category": "Music",
      "name": "Emergency procedural score",
      "trigger": "Authored music unavailable",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound._schedule / _step",
      "evidence": [
        "src/audio.js:1105",
        "src/audio.js:997"
      ],
      "notes": "Existing synthesized bass/chord/drum sequencer fallback; intensity control affects this fallback, not authored full songs. Do not mistake for normal soundtrack.",
      "work": "replace",
      "priority": "P2",
      "brief": "Replace the synthesized Emergency procedural score with a short physical texture. Use the current event as the timing reference and preserve its priority and rate limit.",
      "duration": "0.15–0.5 s",
      "variants": 3,
      "search": "Emergency procedural score; physical impact; anime battle sound",
      "prompt": "One isolated supernatural anime battle game sound effect: Replace the synthesized Emergency procedural score with a short physical texture. Use the current event as the timing reference and preserve its priority and rate limit. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "player.dash",
      "category": "Player combat",
      "name": "Flash Step",
      "trigger": "dash event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.dash",
      "evidence": [
        "src/audio.js:767",
        "src/game.js:2402"
      ],
      "notes": "All four share a whoosh and sine lift. Character dash VO is separate, gated 2.6s.",
      "work": "replace",
      "priority": "P2",
      "brief": "Cloth snaps into a very fast air displacement, landing with a dry pressure tap.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "fast whoosh; cloth snap; air dash",
      "prompt": "One isolated supernatural anime battle game sound effect: Cloth snaps into a very fast air displacement, landing with a dry pressure tap. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "player.hurt",
      "category": "Player combat",
      "name": "Player hurt",
      "trigger": "hurt event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.hurt",
      "evidence": [
        "src/audio.js:763",
        "src/game.js:2366"
      ],
      "notes": "Shared across four students; occasional character hurt VO layers separately.",
      "work": "replace",
      "priority": "P2",
      "brief": "A close blunt body hit with a brief gritty edge, leaving space for the existing hurt voice.",
      "duration": "0.12–0.3 s",
      "variants": 3,
      "search": "body hit; dull impact; cloth strike",
      "prompt": "One isolated supernatural anime battle game sound effect: A close blunt body hit with a brief gritty edge, leaving space for the existing hurt voice. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "shiki.kaito.attack",
      "category": "Shikigami",
      "name": "Raiju — bite / lunge hit",
      "trigger": "shikibite event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikibite', 'kaito')",
      "evidence": [
        "src/combat-audio.js:33",
        "src/game.js:2430"
      ],
      "notes": "Character: Kaito; creature: thunder beast. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact contact detail from the thunder beast palette (irregular electrical arcing, a deep animal snarl and a dry thunder crack). Focus on the strike texture; avoid repeating its full arrival call.",
      "search": "electric arc discharge; beast growl; thunder crack",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "prompt": "One isolated supernatural anime battle game sound effect: A compact contact detail from the thunder beast palette (irregular electrical arcing, a deep animal snarl and a dry thunder crack). Focus on the strike texture; avoid repeating its full arrival call. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikibite-kaito.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.kaito.exit",
      "category": "Shikigami",
      "name": "Raiju — duration expiration",
      "trigger": "shikiout event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikiout', 'kaito')",
      "evidence": [
        "src/combat-audio.js:34",
        "src/game.js:2431"
      ],
      "notes": "Character: Kaito; creature: thunder beast. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "The thunder beast disperses through a short fading texture from its irregular electrical arcing, a deep animal snarl and a dry thunder crack palette. Keep the exit quiet.",
      "search": "electric arc discharge; beast growl; thunder crack",
      "duration": "0.2–0.45 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: The thunder beast disperses through a short fading texture from its irregular electrical arcing, a deep animal snarl and a dry thunder crack palette. Keep the exit quiet. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikiout-kaito.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.ren.attack",
      "category": "Shikigami",
      "name": "Kuroinu — bite / lunge hit",
      "trigger": "shikibite event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikibite', 'ren')",
      "evidence": [
        "src/combat-audio.js:33",
        "src/game.js:2430"
      ],
      "notes": "Character: Ren; creature: black hound. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact contact detail from the black hound palette (compressed-air crack, heavy claw strike and gritty canine snarl). Focus on the strike texture; avoid repeating its full arrival call.",
      "search": "aggressive dog snarl; claw impact; air punch",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "prompt": "One isolated supernatural anime battle game sound effect: A compact contact detail from the black hound palette (compressed-air crack, heavy claw strike and gritty canine snarl). Focus on the strike texture; avoid repeating its full arrival call. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikibite-ren.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.ren.exit",
      "category": "Shikigami",
      "name": "Kuroinu — duration expiration",
      "trigger": "shikiout event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikiout', 'ren')",
      "evidence": [
        "src/combat-audio.js:34",
        "src/game.js:2431"
      ],
      "notes": "Character: Ren; creature: black hound. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "The black hound disperses through a short fading texture from its compressed-air crack, heavy claw strike and gritty canine snarl palette. Keep the exit quiet.",
      "search": "aggressive dog snarl; claw impact; air punch",
      "duration": "0.2–0.45 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: The black hound disperses through a short fading texture from its compressed-air crack, heavy claw strike and gritty canine snarl palette. Keep the exit quiet. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikiout-ren.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.sora.attack",
      "category": "Shikigami",
      "name": "Kitsune — bite / lunge hit",
      "trigger": "shikibite event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikibite', 'sora')",
      "evidence": [
        "src/combat-audio.js:33",
        "src/game.js:2430"
      ],
      "notes": "Character: Sora; creature: paper fox. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact contact detail from the paper fox palette (dry talisman tears, a rushing paper burst and a sharp fox bark). Focus on the strike texture; avoid repeating its full arrival call.",
      "search": "paper tear flurry; fox bark; fast air whoosh",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "prompt": "One isolated supernatural anime battle game sound effect: A compact contact detail from the paper fox palette (dry talisman tears, a rushing paper burst and a sharp fox bark). Focus on the strike texture; avoid repeating its full arrival call. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikibite-sora.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.sora.exit",
      "category": "Shikigami",
      "name": "Kitsune — duration expiration",
      "trigger": "shikiout event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikiout', 'sora')",
      "evidence": [
        "src/combat-audio.js:34",
        "src/game.js:2431"
      ],
      "notes": "Character: Sora; creature: paper fox. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "The paper fox disperses through a short fading texture from its dry talisman tears, a rushing paper burst and a sharp fox bark palette. Keep the exit quiet.",
      "search": "paper tear flurry; fox bark; fast air whoosh",
      "duration": "0.2–0.45 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: The paper fox disperses through a short fading texture from its dry talisman tears, a rushing paper burst and a sharp fox bark palette. Keep the exit quiet. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikiout-sora.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.yui.attack",
      "category": "Shikigami",
      "name": "Shirasagi — bite / lunge hit",
      "trigger": "shikibite event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikibite', 'yui')",
      "evidence": [
        "src/combat-audio.js:33",
        "src/game.js:2430"
      ],
      "notes": "Character: Yui; creature: white heron. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact contact detail from the white heron palette (taut wire snap, razor air cut, forceful wingbeat and short harsh heron cry). Focus on the strike texture; avoid repeating its full arrival call.",
      "search": "wire tension snap; heron call; large bird wing flap; razor whoosh",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "prompt": "One isolated supernatural anime battle game sound effect: A compact contact detail from the white heron palette (taut wire snap, razor air cut, forceful wingbeat and short harsh heron cry). Focus on the strike texture; avoid repeating its full arrival call. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikibite-yui.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "shiki.yui.exit",
      "category": "Shikigami",
      "name": "Shirasagi — duration expiration",
      "trigger": "shikiout event, retaining original owner after a tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('shikiout', 'yui')",
      "evidence": [
        "src/combat-audio.js:34",
        "src/game.js:2431"
      ],
      "notes": "Character: Yui; creature: white heron. Shared recipe with character pitch/filter pair. No recorded creature call. Short, rate-limited one-shots; no continuous creature loop.",
      "work": "replace",
      "priority": "P2",
      "brief": "The white heron disperses through a short fading texture from its taut wire snap, razor air cut, forceful wingbeat and short harsh heron cry palette. Keep the exit quiet.",
      "search": "wire tension snap; heron call; large bird wing flap; razor whoosh",
      "duration": "0.2–0.45 s",
      "variants": 2,
      "prompt": "One isolated supernatural anime battle game sound effect: The white heron disperses through a short fading texture from its taut wire snap, razor air cut, forceful wingbeat and short harsh heron cry palette. Keep the exit quiet. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/shikiout-yui.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "special.circuit",
      "category": "Specials",
      "name": "Circuit Break cast",
      "trigger": "elective event id circuit",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'circuit')",
      "evidence": [
        "src/combat-audio.js:35",
        "src/game.js:2432"
      ],
      "notes": "Distinct compact synthetic cast; available to Kaito. Suspended legacy runs may retain another student's old equipped choice.",
      "work": "replace",
      "priority": "P2",
      "brief": "A violent electrical break with irregular arcing and a short power collapse.",
      "duration": "0.2–0.5 s",
      "variants": 3,
      "search": "electric short circuit; arc discharge",
      "prompt": "One isolated supernatural anime battle game sound effect: A violent electrical break with irregular arcing and a short power collapse. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/elective-circuit.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "special.decoy",
      "category": "Specials",
      "name": "Paper Decoy / Paper Doll cast",
      "trigger": "elective event id decoy",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'decoy')",
      "evidence": [
        "src/combat-audio.js:35",
        "src/game.js:2432"
      ],
      "notes": "Distinct compact synthetic cast; available to Sora. Suspended legacy runs may retain another student's old equipped choice.",
      "work": "replace",
      "priority": "P2",
      "brief": "A folded paper figure snaps open and settles with a dry talisman stamp.",
      "duration": "0.15–0.35 s",
      "variants": 3,
      "search": "paper unfold; paper snap; seal stamp",
      "prompt": "One isolated supernatural anime battle game sound effect: A folded paper figure snaps open and settles with a dry talisman stamp. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/elective-decoy.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "special.decoy.detonate",
      "category": "Specials",
      "name": "Paper Decoy / Paper Doll detonation",
      "trigger": "decoyboom event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('enemyImpact', 'decoy')",
      "evidence": [
        "src/combat-audio.js:48",
        "src/game.js:2437"
      ],
      "notes": "Impact recipe with brighter noise than common hostile slam.",
      "work": "replace",
      "priority": "P2",
      "brief": "Tearing paper erupts into a focused gritty pressure burst.",
      "duration": "0.2–0.5 s",
      "variants": 3,
      "search": "paper tear; short explosion; dry debris",
      "prompt": "One isolated supernatural anime battle game sound effect: Tearing paper erupts into a focused gritty pressure burst. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/enemyImpact-decoy.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "special.flash",
      "category": "Specials",
      "name": "Flash Transfer cast",
      "trigger": "elective event id flash",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'flash')",
      "evidence": [
        "src/combat-audio.js:35",
        "src/game.js:2432"
      ],
      "notes": "Distinct compact synthetic cast; available to Ren and Yui. Suspended legacy runs may retain another student's old equipped choice.",
      "work": "replace",
      "priority": "P2",
      "brief": "A rapid hard pressure detonation, a bright air crack and a very short sizzling tail.",
      "duration": "0.2–0.5 s",
      "variants": 3,
      "search": "flashbang pressure; air crack; short sizzle",
      "prompt": "One isolated supernatural anime battle game sound effect: A rapid hard pressure detonation, a bright air crack and a very short sizzling tail. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-0c94f7a/elective-flash.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "wave.incoming",
      "category": "Time and waves",
      "name": "Pressure waves / Wisp surges",
      "trigger": "surge event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2438"
      ],
      "notes": "All names share the same noise rise + square lift; no individual wave recordings.",
      "work": "replace",
      "priority": "P2",
      "brief": "A brief threatening air swell with one low struck accent; retain a clear gap before combat resumes.",
      "duration": "0.4–0.7 s",
      "variants": 2,
      "search": "ominous air swell; short warning impact",
      "prompt": "One isolated supernatural anime battle game sound effect: A brief threatening air swell with one low struck accent; retain a clear gap before combat resumes. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience."
    },
    {
      "id": "vo-clone-kaito-bosskill",
      "category": "Voice / available takes",
      "name": "Kaito clone - Boss defeated (not dispatched)",
      "trigger": "Boss defeated (not dispatched) candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/bosskill1_t2.mp3",
        "assets/clone/kaito/bosskill1_t3.mp3",
        "assets/clone/kaito/bosskill2_t1.mp3",
        "assets/clone/kaito/bosskill2_t2.mp3",
        "assets/clone/kaito/bosskill2_t3.mp3",
        "assets/clone/kaito/bosskill3_t1.mp3",
        "assets/clone/kaito/bosskill3_t2.mp3",
        "assets/clone/kaito/bosskill3_t3.mp3",
        "assets/clone/kaito/bosskill4_t1.mp3",
        "assets/clone/kaito/bosskill4_t2.mp3",
        "assets/clone/kaito/bosskill4_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 12,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-kaito-dash",
      "category": "Voice / available takes",
      "name": "Kaito clone - Flash Step",
      "trigger": "Flash Step candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/dash1_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/dash1_t2.mp3",
        "assets/clone/kaito/dash1_t3.mp3",
        "assets/clone/kaito/dash2_t1.mp3",
        "assets/clone/kaito/dash2_t2.mp3",
        "assets/clone/kaito/dash2_t3.mp3",
        "assets/clone/kaito/dash3_t1.mp3",
        "assets/clone/kaito/dash3_t2.mp3",
        "assets/clone/kaito/dash3_t3.mp3",
        "assets/clone/kaito/dash4_t1.mp3",
        "assets/clone/kaito/dash4_t2.mp3",
        "assets/clone/kaito/dash4_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 12,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-kaito-death",
      "category": "Voice / available takes",
      "name": "Kaito clone - Run death",
      "trigger": "Run death candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/death10_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/death10_t2.mp3",
        "assets/clone/kaito/death10_t3.mp3",
        "assets/clone/kaito/death11_t1.mp3",
        "assets/clone/kaito/death11_t2.mp3",
        "assets/clone/kaito/death11_t3.mp3",
        "assets/clone/kaito/death1_t1.mp3",
        "assets/clone/kaito/death1_t2.mp3",
        "assets/clone/kaito/death1_t3.mp3",
        "assets/clone/kaito/death2_t1.mp3",
        "assets/clone/kaito/death2_t2.mp3",
        "assets/clone/kaito/death2_t3.mp3",
        "assets/clone/kaito/death3_t1.mp3",
        "assets/clone/kaito/death3_t2.mp3",
        "assets/clone/kaito/death3_t3.mp3",
        "assets/clone/kaito/death4_t1.mp3",
        "assets/clone/kaito/death4_t2.mp3",
        "assets/clone/kaito/death4_t3.mp3",
        "assets/clone/kaito/death5_t1.mp3",
        "assets/clone/kaito/death5_t2.mp3",
        "assets/clone/kaito/death5_t3.mp3",
        "assets/clone/kaito/death6_t1.mp3",
        "assets/clone/kaito/death6_t2.mp3",
        "assets/clone/kaito/death6_t3.mp3",
        "assets/clone/kaito/death7_t1.mp3",
        "assets/clone/kaito/death7_t2.mp3",
        "assets/clone/kaito/death7_t3.mp3",
        "assets/clone/kaito/death8_t1.mp3",
        "assets/clone/kaito/death8_t2.mp3",
        "assets/clone/kaito/death8_t3.mp3",
        "assets/clone/kaito/death9_t1.mp3",
        "assets/clone/kaito/death9_t2.mp3",
        "assets/clone/kaito/death9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 33,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-kaito-domain",
      "category": "Voice / available takes",
      "name": "Kaito clone - Domain cast",
      "trigger": "Domain cast candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/domain1_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/domain1_t2.mp3",
        "assets/clone/kaito/domain1_t3.mp3",
        "assets/clone/kaito/domain2_t1.mp3",
        "assets/clone/kaito/domain2_t2.mp3",
        "assets/clone/kaito/domain2_t3.mp3",
        "assets/clone/kaito/domain3_t1.mp3",
        "assets/clone/kaito/domain3_t2.mp3",
        "assets/clone/kaito/domain3_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 9,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-kaito-hurt",
      "category": "Voice / available takes",
      "name": "Kaito clone - Low-health threshold",
      "trigger": "Low-health threshold candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/hurt10_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/hurt10_t2.mp3",
        "assets/clone/kaito/hurt10_t3.mp3",
        "assets/clone/kaito/hurt1_t1.mp3",
        "assets/clone/kaito/hurt1_t2.mp3",
        "assets/clone/kaito/hurt1_t3.mp3",
        "assets/clone/kaito/hurt2_t1.mp3",
        "assets/clone/kaito/hurt2_t2.mp3",
        "assets/clone/kaito/hurt2_t3.mp3",
        "assets/clone/kaito/hurt3_t1.mp3",
        "assets/clone/kaito/hurt3_t2.mp3",
        "assets/clone/kaito/hurt3_t3.mp3",
        "assets/clone/kaito/hurt4_t1.mp3",
        "assets/clone/kaito/hurt4_t2.mp3",
        "assets/clone/kaito/hurt4_t3.mp3",
        "assets/clone/kaito/hurt5_t1.mp3",
        "assets/clone/kaito/hurt5_t2.mp3",
        "assets/clone/kaito/hurt5_t3.mp3",
        "assets/clone/kaito/hurt6_t1.mp3",
        "assets/clone/kaito/hurt6_t2.mp3",
        "assets/clone/kaito/hurt6_t3.mp3",
        "assets/clone/kaito/hurt7_t1.mp3",
        "assets/clone/kaito/hurt7_t2.mp3",
        "assets/clone/kaito/hurt7_t3.mp3",
        "assets/clone/kaito/hurt8_t1.mp3",
        "assets/clone/kaito/hurt8_t2.mp3",
        "assets/clone/kaito/hurt8_t3.mp3",
        "assets/clone/kaito/hurt9_t1.mp3",
        "assets/clone/kaito/hurt9_t2.mp3",
        "assets/clone/kaito/hurt9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 30,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-kaito-win",
      "category": "Voice / available takes",
      "name": "Kaito clone - Room clear / win",
      "trigger": "Room clear / win candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/kaito/",
      "preview": "assets/clone/kaito/win1_t1.mp3",
      "previewFiles": [
        "assets/clone/kaito/win1_t2.mp3",
        "assets/clone/kaito/win1_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on kaito-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 3,
      "auditionPage": "kaito-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-bosskill",
      "category": "Voice / available takes",
      "name": "Ren clone - Boss defeated (not dispatched)",
      "trigger": "Boss defeated (not dispatched) candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/bosskill1_t2.mp3",
        "assets/clone/ren/bosskill1_t3.mp3",
        "assets/clone/ren/bosskill2_t1.mp3",
        "assets/clone/ren/bosskill2_t2.mp3",
        "assets/clone/ren/bosskill2_t3.mp3",
        "assets/clone/ren/bosskill3_t1.mp3",
        "assets/clone/ren/bosskill3_t2.mp3",
        "assets/clone/ren/bosskill3_t3.mp3",
        "assets/clone/ren/bosskill4_t1.mp3",
        "assets/clone/ren/bosskill4_t2.mp3",
        "assets/clone/ren/bosskill4_t3.mp3",
        "assets/clone/ren/bosskill5_t1.mp3",
        "assets/clone/ren/bosskill5_t2.mp3",
        "assets/clone/ren/bosskill5_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 15,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-dash",
      "category": "Voice / available takes",
      "name": "Ren clone - Flash Step",
      "trigger": "Flash Step candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/dash1_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/dash1_t2.mp3",
        "assets/clone/ren/dash1_t3.mp3",
        "assets/clone/ren/dash2_t1.mp3",
        "assets/clone/ren/dash2_t2.mp3",
        "assets/clone/ren/dash2_t3.mp3",
        "assets/clone/ren/dash3_t1.mp3",
        "assets/clone/ren/dash3_t2.mp3",
        "assets/clone/ren/dash3_t3.mp3",
        "assets/clone/ren/dash4_t1.mp3",
        "assets/clone/ren/dash4_t2.mp3",
        "assets/clone/ren/dash4_t3.mp3",
        "assets/clone/ren/dash5_t1.mp3",
        "assets/clone/ren/dash5_t2.mp3",
        "assets/clone/ren/dash5_t3.mp3",
        "assets/clone/ren/dash6_t1.mp3",
        "assets/clone/ren/dash6_t2.mp3",
        "assets/clone/ren/dash6_t3.mp3",
        "assets/clone/ren/dash7_t1.mp3",
        "assets/clone/ren/dash7_t2.mp3",
        "assets/clone/ren/dash7_t3.mp3",
        "assets/clone/ren/dash8_t1.mp3",
        "assets/clone/ren/dash8_t2.mp3",
        "assets/clone/ren/dash8_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 24,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-death",
      "category": "Voice / available takes",
      "name": "Ren clone - Run death",
      "trigger": "Run death candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/death10_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/death10_t2.mp3",
        "assets/clone/ren/death10_t3.mp3",
        "assets/clone/ren/death11_t1.mp3",
        "assets/clone/ren/death11_t2.mp3",
        "assets/clone/ren/death11_t3.mp3",
        "assets/clone/ren/death12_t1.mp3",
        "assets/clone/ren/death12_t2.mp3",
        "assets/clone/ren/death12_t3.mp3",
        "assets/clone/ren/death13_t1.mp3",
        "assets/clone/ren/death13_t2.mp3",
        "assets/clone/ren/death13_t3.mp3",
        "assets/clone/ren/death14_t1.mp3",
        "assets/clone/ren/death14_t2.mp3",
        "assets/clone/ren/death14_t3.mp3",
        "assets/clone/ren/death1_t1.mp3",
        "assets/clone/ren/death1_t2.mp3",
        "assets/clone/ren/death1_t3.mp3",
        "assets/clone/ren/death2_t1.mp3",
        "assets/clone/ren/death2_t2.mp3",
        "assets/clone/ren/death2_t3.mp3",
        "assets/clone/ren/death3_t1.mp3",
        "assets/clone/ren/death3_t2.mp3",
        "assets/clone/ren/death3_t3.mp3",
        "assets/clone/ren/death4_t1.mp3",
        "assets/clone/ren/death4_t2.mp3",
        "assets/clone/ren/death4_t3.mp3",
        "assets/clone/ren/death5_t1.mp3",
        "assets/clone/ren/death5_t2.mp3",
        "assets/clone/ren/death5_t3.mp3",
        "assets/clone/ren/death6_t1.mp3",
        "assets/clone/ren/death6_t2.mp3",
        "assets/clone/ren/death6_t3.mp3",
        "assets/clone/ren/death7_t1.mp3",
        "assets/clone/ren/death7_t2.mp3",
        "assets/clone/ren/death7_t3.mp3",
        "assets/clone/ren/death8_t1.mp3",
        "assets/clone/ren/death8_t2.mp3",
        "assets/clone/ren/death8_t3.mp3",
        "assets/clone/ren/death9_t1.mp3",
        "assets/clone/ren/death9_t2.mp3",
        "assets/clone/ren/death9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 42,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-domain",
      "category": "Voice / available takes",
      "name": "Ren clone - Domain cast",
      "trigger": "Domain cast candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/domain1_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/domain1_t2.mp3",
        "assets/clone/ren/domain1_t3.mp3",
        "assets/clone/ren/domain2_t1.mp3",
        "assets/clone/ren/domain2_t2.mp3",
        "assets/clone/ren/domain2_t3.mp3",
        "assets/clone/ren/domain3_t1.mp3",
        "assets/clone/ren/domain3_t2.mp3",
        "assets/clone/ren/domain3_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 9,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-hurt",
      "category": "Voice / available takes",
      "name": "Ren clone - Low-health threshold",
      "trigger": "Low-health threshold candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/hurt10_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/hurt10_t2.mp3",
        "assets/clone/ren/hurt10_t3.mp3",
        "assets/clone/ren/hurt1_t1.mp3",
        "assets/clone/ren/hurt1_t2.mp3",
        "assets/clone/ren/hurt1_t3.mp3",
        "assets/clone/ren/hurt2_t1.mp3",
        "assets/clone/ren/hurt2_t2.mp3",
        "assets/clone/ren/hurt2_t3.mp3",
        "assets/clone/ren/hurt3_t1.mp3",
        "assets/clone/ren/hurt3_t2.mp3",
        "assets/clone/ren/hurt3_t3.mp3",
        "assets/clone/ren/hurt4_t1.mp3",
        "assets/clone/ren/hurt4_t2.mp3",
        "assets/clone/ren/hurt4_t3.mp3",
        "assets/clone/ren/hurt5_t1.mp3",
        "assets/clone/ren/hurt5_t2.mp3",
        "assets/clone/ren/hurt5_t3.mp3",
        "assets/clone/ren/hurt6_t1.mp3",
        "assets/clone/ren/hurt6_t2.mp3",
        "assets/clone/ren/hurt6_t3.mp3",
        "assets/clone/ren/hurt7_t1.mp3",
        "assets/clone/ren/hurt7_t2.mp3",
        "assets/clone/ren/hurt7_t3.mp3",
        "assets/clone/ren/hurt8_t1.mp3",
        "assets/clone/ren/hurt8_t2.mp3",
        "assets/clone/ren/hurt8_t3.mp3",
        "assets/clone/ren/hurt9_t1.mp3",
        "assets/clone/ren/hurt9_t2.mp3",
        "assets/clone/ren/hurt9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Ren currently has no live hurt file; prioritize this existing pool.",
      "count": 30,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-ren-win",
      "category": "Voice / available takes",
      "name": "Ren clone - Room clear / win",
      "trigger": "Room clear / win candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/ren/",
      "preview": "assets/clone/ren/win1_t1.mp3",
      "previewFiles": [
        "assets/clone/ren/win1_t2.mp3",
        "assets/clone/ren/win1_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on ren-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 3,
      "auditionPage": "ren-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-bosskill",
      "category": "Voice / available takes",
      "name": "Sora clone - Boss defeated (not dispatched)",
      "trigger": "Boss defeated (not dispatched) candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/bosskill1_t3.mp3",
      "previewFiles": [
        "assets/clone/sora/bosskill2_t1.mp3",
        "assets/clone/sora/bosskill4_t1.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 3,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-dash",
      "category": "Voice / available takes",
      "name": "Sora clone - Flash Step",
      "trigger": "Flash Step candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/dash5_t1.mp3",
      "previewFiles": [
        "assets/clone/sora/dash5_t2.mp3",
        "assets/clone/sora/dash5_t3.mp3",
        "assets/clone/sora/dash6_t1.mp3",
        "assets/clone/sora/dash6_t2.mp3",
        "assets/clone/sora/dash6_t3.mp3",
        "assets/clone/sora/dash7_t1.mp3",
        "assets/clone/sora/dash7_t2.mp3",
        "assets/clone/sora/dash7_t3.mp3",
        "assets/clone/sora/dash8_t1.mp3",
        "assets/clone/sora/dash8_t2.mp3",
        "assets/clone/sora/dash8_t3.mp3",
        "assets/clone/sora/dash9_t1.mp3",
        "assets/clone/sora/dash9_t2.mp3",
        "assets/clone/sora/dash9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 15,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-death",
      "category": "Voice / available takes",
      "name": "Sora clone - Run death",
      "trigger": "Run death candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/death10_t1.mp3",
      "previewFiles": [
        "assets/clone/sora/death10_t2.mp3",
        "assets/clone/sora/death10_t3.mp3",
        "assets/clone/sora/death11_t1.mp3",
        "assets/clone/sora/death11_t2.mp3",
        "assets/clone/sora/death11_t3.mp3",
        "assets/clone/sora/death12_t1.mp3",
        "assets/clone/sora/death12_t2.mp3",
        "assets/clone/sora/death12_t3.mp3",
        "assets/clone/sora/death1_t2.mp3",
        "assets/clone/sora/death5_t2.mp3",
        "assets/clone/sora/death7_t1.mp3",
        "assets/clone/sora/death7_t2.mp3",
        "assets/clone/sora/death7_t3.mp3",
        "assets/clone/sora/death8_t1.mp3",
        "assets/clone/sora/death8_t2.mp3",
        "assets/clone/sora/death8_t3.mp3",
        "assets/clone/sora/death9_t1.mp3",
        "assets/clone/sora/death9_t2.mp3",
        "assets/clone/sora/death9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 20,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-domain",
      "category": "Voice / available takes",
      "name": "Sora clone - Domain cast",
      "trigger": "Domain cast candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/domain2_t1.mp3",
      "previewFiles": [
        "assets/clone/sora/domain3_t1.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 2,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-hurt",
      "category": "Voice / available takes",
      "name": "Sora clone - Low-health threshold",
      "trigger": "Low-health threshold candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/hurt10_t1.mp3",
      "previewFiles": [
        "assets/clone/sora/hurt10_t2.mp3",
        "assets/clone/sora/hurt10_t3.mp3",
        "assets/clone/sora/hurt11_t1.mp3",
        "assets/clone/sora/hurt11_t2.mp3",
        "assets/clone/sora/hurt11_t3.mp3",
        "assets/clone/sora/hurt4_t2.mp3",
        "assets/clone/sora/hurt6_t3.mp3",
        "assets/clone/sora/hurt7_t1.mp3",
        "assets/clone/sora/hurt7_t2.mp3",
        "assets/clone/sora/hurt7_t3.mp3",
        "assets/clone/sora/hurt8_t1.mp3",
        "assets/clone/sora/hurt8_t2.mp3",
        "assets/clone/sora/hurt8_t3.mp3",
        "assets/clone/sora/hurt9_t1.mp3",
        "assets/clone/sora/hurt9_t2.mp3",
        "assets/clone/sora/hurt9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 17,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-sora-win",
      "category": "Voice / available takes",
      "name": "Sora clone - Room clear / win",
      "trigger": "Room clear / win candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/sora/",
      "preview": "assets/clone/sora/win1_t2.mp3",
      "previewFiles": [],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on sora-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances.",
      "count": 1,
      "auditionPage": "sora-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-bosskill",
      "category": "Voice / available takes",
      "name": "Yui clone - Boss defeated (not dispatched)",
      "trigger": "Boss defeated (not dispatched) candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/bosskill1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/bosskill1_t2.mp3",
        "assets/clone/yui/bosskill1_t3.mp3",
        "assets/clone/yui/bosskill2_t1.mp3",
        "assets/clone/yui/bosskill2_t2.mp3",
        "assets/clone/yui/bosskill2_t3.mp3",
        "assets/clone/yui/bosskill3_t1.mp3",
        "assets/clone/yui/bosskill3_t2.mp3",
        "assets/clone/yui/bosskill3_t3.mp3",
        "assets/clone/yui/bosskill4_t1.mp3",
        "assets/clone/yui/bosskill4_t2.mp3",
        "assets/clone/yui/bosskill4_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 12,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-dash",
      "category": "Voice / available takes",
      "name": "Yui clone - Flash Step",
      "trigger": "Flash Step candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/dash1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/dash1_t2.mp3",
        "assets/clone/yui/dash1_t3.mp3",
        "assets/clone/yui/dash2_t1.mp3",
        "assets/clone/yui/dash2_t2.mp3",
        "assets/clone/yui/dash2_t3.mp3",
        "assets/clone/yui/dash3_t1.mp3",
        "assets/clone/yui/dash3_t2.mp3",
        "assets/clone/yui/dash3_t3.mp3",
        "assets/clone/yui/dash4_t1.mp3",
        "assets/clone/yui/dash4_t2.mp3",
        "assets/clone/yui/dash4_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 12,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-death",
      "category": "Voice / available takes",
      "name": "Yui clone - Run death",
      "trigger": "Run death candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/death10_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/death10_t2.mp3",
        "assets/clone/yui/death10_t3.mp3",
        "assets/clone/yui/death11_t1.mp3",
        "assets/clone/yui/death11_t2.mp3",
        "assets/clone/yui/death11_t3.mp3",
        "assets/clone/yui/death1_t1.mp3",
        "assets/clone/yui/death1_t2.mp3",
        "assets/clone/yui/death1_t3.mp3",
        "assets/clone/yui/death2_t1.mp3",
        "assets/clone/yui/death2_t2.mp3",
        "assets/clone/yui/death2_t3.mp3",
        "assets/clone/yui/death3_t1.mp3",
        "assets/clone/yui/death3_t2.mp3",
        "assets/clone/yui/death3_t3.mp3",
        "assets/clone/yui/death4_t1.mp3",
        "assets/clone/yui/death4_t2.mp3",
        "assets/clone/yui/death4_t3.mp3",
        "assets/clone/yui/death5_t1.mp3",
        "assets/clone/yui/death5_t2.mp3",
        "assets/clone/yui/death5_t3.mp3",
        "assets/clone/yui/death6_t1.mp3",
        "assets/clone/yui/death6_t2.mp3",
        "assets/clone/yui/death6_t3.mp3",
        "assets/clone/yui/death7_t1.mp3",
        "assets/clone/yui/death7_t2.mp3",
        "assets/clone/yui/death7_t3.mp3",
        "assets/clone/yui/death8_t1.mp3",
        "assets/clone/yui/death8_t2.mp3",
        "assets/clone/yui/death8_t3.mp3",
        "assets/clone/yui/death9_t1.mp3",
        "assets/clone/yui/death9_t2.mp3",
        "assets/clone/yui/death9_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 33,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-domain",
      "category": "Voice / available takes",
      "name": "Yui clone - Domain cast",
      "trigger": "Domain cast candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/domain1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/domain1_t2.mp3",
        "assets/clone/yui/domain1_t3.mp3",
        "assets/clone/yui/domain2_t1.mp3",
        "assets/clone/yui/domain2_t2.mp3",
        "assets/clone/yui/domain2_t3.mp3",
        "assets/clone/yui/domain3_t1.mp3",
        "assets/clone/yui/domain3_t2.mp3",
        "assets/clone/yui/domain3_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 9,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-hurt",
      "category": "Voice / available takes",
      "name": "Yui clone - Low-health threshold",
      "trigger": "Low-health threshold candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/hurt1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/hurt1_t2.mp3",
        "assets/clone/yui/hurt1_t3.mp3",
        "assets/clone/yui/hurt2_t1.mp3",
        "assets/clone/yui/hurt2_t2.mp3",
        "assets/clone/yui/hurt2_t3.mp3",
        "assets/clone/yui/hurt3_t1.mp3",
        "assets/clone/yui/hurt3_t2.mp3",
        "assets/clone/yui/hurt3_t3.mp3",
        "assets/clone/yui/hurt4_t1.mp3",
        "assets/clone/yui/hurt4_t2.mp3",
        "assets/clone/yui/hurt4_t3.mp3",
        "assets/clone/yui/hurt5_t1.mp3",
        "assets/clone/yui/hurt5_t2.mp3",
        "assets/clone/yui/hurt5_t3.mp3",
        "assets/clone/yui/hurt6_t1.mp3",
        "assets/clone/yui/hurt6_t2.mp3",
        "assets/clone/yui/hurt6_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 18,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-clone-yui-win",
      "category": "Voice / available takes",
      "name": "Yui clone - Room clear / win",
      "trigger": "Room clear / win candidate",
      "status": "available-unused",
      "sourceType": "ElevenLabs voice-clone auditions",
      "currentSource": "assets/clone/yui/",
      "preview": "assets/clone/yui/win1_t1.mp3",
      "previewFiles": [
        "assets/clone/yui/win1_t2.mp3",
        "assets/clone/yui/win1_t3.mp3"
      ],
      "evidence": [
        "scripts/clone-vo.py:29",
        "scripts/clone-page.py:33",
        "scripts/clone-page.py:45"
      ],
      "notes": "Existing public ElevenLabs clone audition pool; listen on yui-clone.html. Filename preserves line and take number. Some selected Sora takes were cut or rebaked into live aliases, so pool counts are not a count of wholly unused performances. Yui currently has no live dash or hurt files; these existing candidates should be auditioned before sourcing more.",
      "count": 3,
      "auditionPage": "yui-clone.html",
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-kaito-assigned",
      "category": "Voice / available takes",
      "name": "Kaito - named role candidates",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/kaito-lib/",
      "preview": "audio-lib/kaito/kaito_dash_a.mp3",
      "previewFiles": [
        "audio-lib/kaito/kaito_domain_a.mp3",
        "audio-lib/kaito/kaito_domain_b.mp3",
        "audio-lib/kaito/kaito_domain_c.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit. The former kaito_domain_a/b/c and kaito_dash_a are superseded takes, retained for comparison.",
      "count": 4,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-kaito-numbered",
      "category": "Voice / available takes",
      "name": "Kaito - numbered unassigned takes",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/kaito-lib/",
      "preview": "audio-lib/kaito/kaito-01.mp3",
      "previewFiles": [
        "audio-lib/kaito/kaito-02.mp3",
        "audio-lib/kaito/kaito-03.mp3",
        "audio-lib/kaito/kaito-04.mp3",
        "audio-lib/kaito/kaito-05.mp3",
        "audio-lib/kaito/kaito-06.mp3",
        "audio-lib/kaito/kaito-10.mp3",
        "audio-lib/kaito/kaito-11.mp3",
        "audio-lib/kaito/kaito-12.mp3",
        "audio-lib/kaito/kaito-13.mp3",
        "audio-lib/kaito/kaito-14.mp3",
        "audio-lib/kaito/kaito-15.mp3",
        "audio-lib/kaito/kaito-16.mp3",
        "audio-lib/kaito/kaito-17.mp3",
        "audio-lib/kaito/kaito-22.mp3",
        "audio-lib/kaito/kaito-23.mp3",
        "audio-lib/kaito/kaito-24.mp3",
        "audio-lib/kaito/kaito-25.mp3",
        "audio-lib/kaito/kaito-26.mp3",
        "audio-lib/kaito/kaito-27.mp3",
        "audio-lib/kaito/kaito-28.mp3",
        "audio-lib/kaito/kaito-29.mp3",
        "audio-lib/kaito/kaito-31.mp3",
        "audio-lib/kaito/kaito-32.mp3",
        "audio-lib/kaito/kaito-33.mp3",
        "audio-lib/kaito/kaito-34.mp3",
        "audio-lib/kaito/kaito-35.mp3",
        "audio-lib/kaito/kaito-36.mp3",
        "audio-lib/kaito/kaito-37.mp3",
        "audio-lib/kaito/kaito-38.mp3",
        "audio-lib/kaito/kaito-39.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit.",
      "count": 31,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-ren-assigned",
      "category": "Voice / available takes",
      "name": "Ren - named role candidates",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/ren-lib/",
      "preview": "audio-lib/ren/ren_win_first_bell.mp3",
      "previewFiles": [
        "audio-lib/ren/ren_win_we_made_it.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit.",
      "count": 2,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-ren-numbered",
      "category": "Voice / available takes",
      "name": "Ren - numbered unassigned takes",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/ren-lib/",
      "preview": "audio-lib/ren/ren-01.mp3",
      "previewFiles": [
        "audio-lib/ren/ren-02.mp3",
        "audio-lib/ren/ren-03.mp3",
        "audio-lib/ren/ren-04.mp3",
        "audio-lib/ren/ren-05.mp3",
        "audio-lib/ren/ren-07.mp3",
        "audio-lib/ren/ren-08.mp3",
        "audio-lib/ren/ren-09.mp3",
        "audio-lib/ren/ren-10.mp3",
        "audio-lib/ren/ren-11.mp3",
        "audio-lib/ren/ren-12.mp3",
        "audio-lib/ren/ren-15.mp3",
        "audio-lib/ren/ren-16.mp3",
        "audio-lib/ren/ren-17.mp3",
        "audio-lib/ren/ren-18.mp3",
        "audio-lib/ren/ren-19.mp3",
        "audio-lib/ren/ren-20.mp3",
        "audio-lib/ren/ren-21.mp3",
        "audio-lib/ren/ren-22.mp3",
        "audio-lib/ren/ren-23.mp3",
        "audio-lib/ren/ren-24.mp3",
        "audio-lib/ren/ren-25.mp3",
        "audio-lib/ren/ren-26.mp3",
        "audio-lib/ren/ren-27.mp3",
        "audio-lib/ren/ren-28.mp3",
        "audio-lib/ren/ren-29.mp3",
        "audio-lib/ren/ren-30.mp3",
        "audio-lib/ren/ren-31.mp3",
        "audio-lib/ren/ren-32.mp3",
        "audio-lib/ren/ren-33.mp3",
        "audio-lib/ren/ren-34.mp3",
        "audio-lib/ren/ren-35.mp3",
        "audio-lib/ren/ren-36.mp3",
        "audio-lib/ren/ren-37.mp3",
        "audio-lib/ren/ren-38.mp3",
        "audio-lib/ren/ren-39.mp3",
        "audio-lib/ren/ren-40.mp3",
        "audio-lib/ren/ren-41.mp3",
        "audio-lib/ren/ren-42.mp3",
        "audio-lib/ren/ren-43.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit.",
      "count": 40,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-sora-assigned",
      "category": "Voice / available takes",
      "name": "Sora - named role candidates",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/sora-lib/",
      "preview": "audio-lib/sora/sora_bosskill_a.mp3",
      "previewFiles": [
        "audio-lib/sora/sora_bosskill_b.mp3",
        "audio-lib/sora/sora_bosskill_c.mp3",
        "audio-lib/sora/sora_dash_giggle.mp3",
        "audio-lib/sora/sora_noway_a.mp3",
        "audio-lib/sora/sora_step_a.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit. sora_dash_giggle was deliberately retired from Flash Step; sora_noway_a was picked for an unplaced reaction, not a death line. Bosskill a/b/c are loaded, but their event is not dispatched.",
      "count": 6,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-sora-numbered",
      "category": "Voice / available takes",
      "name": "Sora - numbered unassigned takes",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/sora-lib/",
      "preview": "audio-lib/sora/sora-01.mp3",
      "previewFiles": [
        "audio-lib/sora/sora-02.mp3",
        "audio-lib/sora/sora-03.mp3",
        "audio-lib/sora/sora-04.mp3",
        "audio-lib/sora/sora-07.mp3",
        "audio-lib/sora/sora-09.mp3",
        "audio-lib/sora/sora-13.mp3",
        "audio-lib/sora/sora-14.mp3",
        "audio-lib/sora/sora-15.mp3",
        "audio-lib/sora/sora-16.mp3",
        "audio-lib/sora/sora-17.mp3",
        "audio-lib/sora/sora-18.mp3",
        "audio-lib/sora/sora-19.mp3",
        "audio-lib/sora/sora-20.mp3",
        "audio-lib/sora/sora-21.mp3",
        "audio-lib/sora/sora-22.mp3",
        "audio-lib/sora/sora-23.mp3",
        "audio-lib/sora/sora-24.mp3",
        "audio-lib/sora/sora-25.mp3",
        "audio-lib/sora/sora-26.mp3",
        "audio-lib/sora/sora-27.mp3",
        "audio-lib/sora/sora-28.mp3",
        "audio-lib/sora/sora-29.mp3",
        "audio-lib/sora/sora-30.mp3",
        "audio-lib/sora/sora-31.mp3",
        "audio-lib/sora/sora-32.mp3",
        "audio-lib/sora/sora-33.mp3",
        "audio-lib/sora/sora-34.mp3",
        "audio-lib/sora/sora-35.mp3",
        "audio-lib/sora/sora-36.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit.",
      "count": 30,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-pool-yui-numbered",
      "category": "Voice / available takes",
      "name": "Yui - numbered unassigned takes",
      "trigger": "Human audition / assignment",
      "status": "available-unused",
      "sourceType": "Existing generated character VO",
      "currentSource": "assets-src/incoming/vo-seedance/yui-lib/",
      "preview": "audio-lib/yui/yui-01.mp3",
      "previewFiles": [
        "audio-lib/yui/yui-02.mp3",
        "audio-lib/yui/yui-03.mp3",
        "audio-lib/yui/yui-04.mp3",
        "audio-lib/yui/yui-05.mp3",
        "audio-lib/yui/yui-06.mp3",
        "audio-lib/yui/yui-07.mp3",
        "audio-lib/yui/yui-08.mp3",
        "audio-lib/yui/yui-09.mp3"
      ],
      "evidence": [
        "scripts/build.mjs:78",
        "scripts/vo_roles.py",
        "scripts/vo-library.py"
      ],
      "notes": "Exact filenames retained for human selection. This current audition pool is build-copied and larger than the historical public library for Kaito and Sora. Not auditioned in this audit.",
      "count": 9,
      "work": "review",
      "priority": "P2",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "vo-live-sora-bosskill",
      "category": "Voice / runtime",
      "name": "Sora - Boss defeated",
      "trigger": "Boss defeated",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_bosskill.mp3, assets/vo/sora_bosskill2.mp3, assets/vo/sora_bosskill3.mp3, assets/vo/sora_bosskill4.mp3",
      "preview": "assets/vo/sora_bosskill.mp3",
      "previewFiles": [
        "assets/vo/sora_bosskill2.mp3",
        "assets/vo/sora_bosskill3.mp3",
        "assets/vo/sora_bosskill4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2562",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The last boss of an overlapping fight only, and never the kill that ends the night: that one belongs to the win read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "sora_bosskill1",
        "sora_bosskill2",
        "sora_bosskill3",
        "sora_bosskill4"
      ],
      "work": "keep",
      "priority": "",
      "brief": "Audition existing takes before requesting more. Record the exact chosen filename and edit notes. Asset presence does not mean an approved performance or a safe trigger."
    },
    {
      "id": "ambience.rooms",
      "category": "Ambience",
      "name": "Room-specific school ambience",
      "trigger": "Inside each map",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:1183"
      ],
      "notes": "Only common campus ambience is currently supplied to runtime. Optional quiet localized fluorescent buzz, pipes, wind; not a heavy always-on layer for every room.",
      "work": "source",
      "priority": "P3",
      "brief": "Quiet environmental beds per room: distant lockers/fluorescent buzz, library wood and paper, gym building creaks, cafeteria ventilation, pool water/tiles, detention cell creaks, boiler steam/pipes, lab electrical hum, rooftop wind. No music or voices.",
      "duration": "15–30 s seamless loops",
      "variants": "1 per room; start with 3 contrasting rooms",
      "search": "school room tone; fluorescent hum; boiler room ambience; pool water ambience; roof wind",
      "prompt": "One isolated supernatural anime battle game sound effect: Quiet environmental beds per room: distant lockers/fluorescent buzz, library wood and paper, gym building creaks, cafeteria ventilation, pool water/tiles, detention cell creaks, boiler steam/pipes, lab electrical hum, rooftop wind. No music or voices. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience. For ambience use a quiet seamless environmental loop instead of a transient.",
      "auditions": [
        {
          "id": "ambience-rooms__library",
          "batch": "anime-20260916",
          "style": "library",
          "label": "Library · paper and wood",
          "description": "Quiet paper, wood and empty shelves.",
          "file": "assets/library/auditions/anime-20260916/ambience-rooms__library.mp3",
          "sha256": "ac8003fce5a6cd8015d3a3ac6ebca51823a34a9f334bb5fb9517eee7d37c6cd2",
          "duration": 15,
          "loop": true,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ambience-rooms__boiler",
          "batch": "anime-20260916",
          "style": "boiler",
          "label": "Boiler · pipes and pressure",
          "description": "Contained pipe resonance and soft steam.",
          "file": "assets/library/auditions/anime-20260916/ambience-rooms__boiler.mp3",
          "sha256": "583dffed4101eb30f60e25374e7ba28b853df989d5c5f430f72f289aa9a92a7f",
          "duration": 15,
          "loop": true,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ambience-rooms__roof",
          "batch": "anime-20260916",
          "style": "roof",
          "label": "Rooftop · wind and wire",
          "description": "Gentle wind, wire fence and distant city air.",
          "file": "assets/library/auditions/anime-20260916/ambience-rooms__roof.mp3",
          "sha256": "934aeb2189430d5c37266a732a5e1be2ba4b254b5aef38b6e191f7a1b3b385a4",
          "duration": 15,
          "loop": true,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "bell.variant-02",
      "category": "Available world recordings",
      "name": "School bell alternate 02",
      "trigger": "Possible bell or metal-texture source; unused",
      "status": "available-unused",
      "sourceType": "recording",
      "currentSource": "assets-src/incoming/audio/school-bell-2026-05-18-23-46-27-utc/School Bell_02.wav",
      "evidence": [
        "scripts/bake-audio.py"
      ],
      "work": "review",
      "priority": "P3",
      "brief": "Local licensed master variant; audition before any edit. Original licensed master remains private.",
      "notes": "No public preview created for this raw source."
    },
    {
      "id": "bell.variant-03",
      "category": "Available world recordings",
      "name": "School bell alternate 03",
      "trigger": "Possible bell or metal-texture source; unused",
      "status": "available-unused",
      "sourceType": "recording",
      "currentSource": "assets-src/incoming/audio/school-bell-2026-05-18-23-46-27-utc/School Bell_03.wav",
      "evidence": [
        "scripts/bake-audio.py"
      ],
      "work": "review",
      "priority": "P3",
      "brief": "Local licensed master variant; audition before any edit. Original licensed master remains private.",
      "notes": "No public preview created for this raw source."
    },
    {
      "id": "cards.ground-drop",
      "category": "Boss rewards",
      "name": "Boss card appears",
      "trigger": "cardDrop ground event",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback. One sample replaces the procedural cue; no additional layer. Boss loot sounds at the death seal; one prize per kill.",
      "work": "review",
      "priority": "P3",
      "brief": "Brilliant metallic chime, pressure impact and short crystalline sheen for the one boss prize.",
      "duration": "2.2 s",
      "variants": 1,
      "search": "paper flutter; magic card drop; seal crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A small paper flutter and seal crack mark a boss card becoming collectible. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/sfx/combat/boss-loot-reveal.mp3",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/boss-loot-reveal.mp3"
        }
      ],
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json."
    },
    {
      "id": "cards.signature-proc",
      "category": "Boss rewards",
      "name": "Signature card major proc accent",
      "trigger": "Selected bossCardProc event",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:720"
      ],
      "notes": "Major proc identities absent. Optional only for low-frequency landmark effects; not every passive card tick.",
      "work": "source",
      "priority": "P3",
      "brief": "One compact cursed seal snap for a meaningful boss-card activation; gate repeated damage ticks.",
      "duration": "0.1–0.25 s",
      "variants": 3,
      "search": "cursed seal; energy snap; paper crack",
      "prompt": "One isolated supernatural anime battle game sound effect: One compact cursed seal snap for a meaningful boss-card activation; gate repeated damage ticks. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "cards-signature-proc__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/cards-signature-proc__blade.mp3",
          "sha256": "d7bd3f3868dc9a2b1eed6693ad648b43e89b98fc312f82628582c6a45ebbacb4",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-signature-proc__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/cards-signature-proc__curse.mp3",
          "sha256": "bde2720b67098ef9579e8d21a1932726ad566a07f28537482eb23c82cc671911",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-signature-proc__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/cards-signature-proc__kinetic.mp3",
          "sha256": "775fdf5b7c7ce23ecefe426c03e9f083ba190272f60443c9b4f2a4356aa51964",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "vo.boss.detention.death",
      "category": "Boss voices",
      "name": "DETENTION — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New DETENTION — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.detention.entry",
      "category": "Boss voices",
      "name": "DETENTION — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New DETENTION — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.exam.death",
      "category": "Boss voices",
      "name": "EXAM SEASON — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New EXAM SEASON — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.exam.entry",
      "category": "Boss voices",
      "name": "EXAM SEASON — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New EXAM SEASON — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.group.death",
      "category": "Boss voices",
      "name": "GROUP PROJECT — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New GROUP PROJECT — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.group.entry",
      "category": "Boss voices",
      "name": "GROUP PROJECT — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New GROUP PROJECT — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.janitor.death",
      "category": "Boss voices",
      "name": "THE JANITOR — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE JANITOR — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.janitor.entry",
      "category": "Boss voices",
      "name": "THE JANITOR — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE JANITOR — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.monitor.death",
      "category": "Boss voices",
      "name": "HALL MONITOR — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New HALL MONITOR — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.monitor.entry",
      "category": "Boss voices",
      "name": "HALL MONITOR — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New HALL MONITOR — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.parent.death",
      "category": "Boss voices",
      "name": "PARENT-TEACHER NIGHT — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New PARENT-TEACHER NIGHT — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.parent.entry",
      "category": "Boss voices",
      "name": "PARENT-TEACHER NIGHT — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New PARENT-TEACHER NIGHT — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.quiz.death",
      "category": "Boss voices",
      "name": "POP QUIZ — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New POP QUIZ — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.quiz.entry",
      "category": "Boss voices",
      "name": "POP QUIZ — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New POP QUIZ — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.substitute.death",
      "category": "Boss voices",
      "name": "THE SUBSTITUTE — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE SUBSTITUTE — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.substitute.entry",
      "category": "Boss voices",
      "name": "THE SUBSTITUTE — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE SUBSTITUTE — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.vice.death",
      "category": "Boss voices",
      "name": "THE VICE PRINCIPAL — death vocal",
      "trigger": "Proposed short voiced death punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2421",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE VICE PRINCIPAL — death vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.boss.vice.entry",
      "category": "Boss voices",
      "name": "THE VICE PRINCIPAL — entry vocal",
      "trigger": "Proposed short voiced entry punctuation",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2413",
        "src/audio.js:108"
      ],
      "notes": "No boss VO supplied or loaded. Pilot one pair first; optional nonverbal creature/character vocal is acceptable. Do not clone a real performer without consent.",
      "work": "source",
      "priority": "P3",
      "brief": "New THE VICE PRINCIPAL — entry vocal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.5–1.5 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "boss.spotlight.caught",
      "category": "Bosses",
      "name": "Searchlight catches player",
      "trigger": "Hall Monitor / Parent caught state turns true",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:1277"
      ],
      "notes": "Summons and shots have cues; the caught transition itself is silent. One short alarm snap, not a siren loop.",
      "work": "source",
      "priority": "P3",
      "brief": "A harsh short electrical contact and abrupt mechanical lock to mark spotlight acquisition.",
      "duration": "0.1–0.25 s",
      "variants": 2,
      "search": "electrical contact; mechanism lock; short alarm",
      "prompt": "One isolated supernatural anime battle game sound effect: A harsh short electrical contact and abrupt mechanical lock to mark spotlight acquisition. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "boss-spotlight-caught__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/boss-spotlight-caught__blade.mp3",
          "sha256": "3720b6d59d7e657f473c9c301afcef2007606e323c96bb75ec42c26bddb899c0",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "boss-spotlight-caught__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/boss-spotlight-caught__curse.mp3",
          "sha256": "9409b7d6674e2361b5825651105387539b37a3c52e4ba8fe39ab4810bf5d6e48",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "boss-spotlight-caught__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/boss-spotlight-caught__kinetic.mp3",
          "sha256": "f2db87ccb4db9ea19240365483991506f19257f2d01cd33314297f0ccb681154",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "vo.kaito.checkpoint",
      "category": "Character voices",
      "name": "Kaito — checkpoint exchange",
      "trigger": "Optional checkpoint exchange",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "The hour call-out itself now ships as the `bell` role (see vo-live-kaito-bell). This cue remains open only for a spoken exchange BETWEEN students at the checkpoint, which nothing dispatches yet.",
      "work": "source",
      "priority": "P3",
      "brief": "New Kaito — checkpoint exchange performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.kaito.heal",
      "category": "Character voices",
      "name": "Kaito — heal",
      "trigger": "Existing heal dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/kaito_heal.mp3, assets/vo/kaito_heal2.mp3, assets/vo/kaito_heal3.mp3, assets/vo/kaito_heal4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2385"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Austin - Timid and casual and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Kaito — heal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.kaito.shiki",
      "category": "Character voices",
      "name": "Kaito — summon callout",
      "trigger": "Optional summon callout",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "No dedicated runtime VO role or shipped recording. Optional, short and infrequent; preserve battle clarity.",
      "work": "source",
      "priority": "P3",
      "brief": "New Kaito — summon callout performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.kaito.tag",
      "category": "Character voices",
      "name": "Kaito — tag",
      "trigger": "Existing tag dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/kaito_tag.mp3, assets/vo/kaito_tag2.mp3, assets/vo/kaito_tag3.mp3, assets/vo/kaito_tag4.mp3, assets/vo/kaito_tag5.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2194"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 5 take(s) shipped in Austin - Timid and casual and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Kaito — tag performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.ren.checkpoint",
      "category": "Character voices",
      "name": "Ren — checkpoint exchange",
      "trigger": "Optional checkpoint exchange",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "The hour call-out itself now ships as the `bell` role (see vo-live-ren-bell). This cue remains open only for a spoken exchange BETWEEN students at the checkpoint, which nothing dispatches yet.",
      "work": "source",
      "priority": "P3",
      "brief": "New Ren — checkpoint exchange performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.ren.heal",
      "category": "Character voices",
      "name": "Ren — heal",
      "trigger": "Existing heal dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/ren_heal.mp3, assets/vo/ren_heal2.mp3, assets/vo/ren_heal3.mp3, assets/vo/ren_heal4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2385"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Harry - Fierce Warrior and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Ren — heal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.ren.shiki",
      "category": "Character voices",
      "name": "Ren — summon callout",
      "trigger": "Optional summon callout",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "No dedicated runtime VO role or shipped recording. Optional, short and infrequent; preserve battle clarity.",
      "work": "source",
      "priority": "P3",
      "brief": "New Ren — summon callout performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.ren.tag",
      "category": "Character voices",
      "name": "Ren — tag",
      "trigger": "Existing tag dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/ren_tag.mp3, assets/vo/ren_tag2.mp3, assets/vo/ren_tag3.mp3, assets/vo/ren_tag4.mp3, assets/vo/ren_tag5.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2194"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 5 take(s) shipped in Harry - Fierce Warrior and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Ren — tag performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.sora.checkpoint",
      "category": "Character voices",
      "name": "Sora — checkpoint exchange",
      "trigger": "Optional checkpoint exchange",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "The hour call-out itself now ships as the `bell` role (see vo-live-sora-bell). This cue remains open only for a spoken exchange BETWEEN students at the checkpoint, which nothing dispatches yet.",
      "work": "source",
      "priority": "P3",
      "brief": "New Sora — checkpoint exchange performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.sora.shiki",
      "category": "Character voices",
      "name": "Sora — summon callout",
      "trigger": "Optional summon callout",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "No dedicated runtime VO role or shipped recording. Optional, short and infrequent; preserve battle clarity.",
      "work": "source",
      "priority": "P3",
      "brief": "New Sora — summon callout performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.sora.tag",
      "category": "Character voices",
      "name": "Sora — tag",
      "trigger": "Existing tag dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/sora_tag.mp3, assets/vo/sora_tag2.mp3, assets/vo/sora_tag3.mp3, assets/vo/sora_tag4.mp3, assets/vo/sora_tag5.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2194"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 5 take(s) shipped in Tilly - Bright, Spirited, Naive, Scrappy and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Sora — tag performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.yui.checkpoint",
      "category": "Character voices",
      "name": "Yui — checkpoint exchange",
      "trigger": "Optional checkpoint exchange",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "The hour call-out itself now ships as the `bell` role (see vo-live-yui-bell). This cue remains open only for a spoken exchange BETWEEN students at the checkpoint, which nothing dispatches yet.",
      "work": "source",
      "priority": "P3",
      "brief": "New Yui — checkpoint exchange performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.yui.heal",
      "category": "Character voices",
      "name": "Yui — heal",
      "trigger": "Existing heal dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/yui_heal.mp3, assets/vo/yui_heal2.mp3, assets/vo/yui_heal3.mp3, assets/vo/yui_heal4.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2385"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 4 take(s) shipped in Zoe - Playful and Arrogant Magician and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Yui — heal performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.yui.shiki",
      "category": "Character voices",
      "name": "Yui — summon callout",
      "trigger": "Optional summon callout",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2429",
        "src/game.js:1641"
      ],
      "notes": "No dedicated runtime VO role or shipped recording. Optional, short and infrequent; preserve battle clarity.",
      "work": "source",
      "priority": "P3",
      "brief": "New Yui — summon callout performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "vo.yui.tag",
      "category": "Character voices",
      "name": "Yui — tag",
      "trigger": "Existing tag dispatch",
      "status": "in-game",
      "sourceType": "none",
      "currentSource": "assets/vo/yui_tag.mp3, assets/vo/yui_tag2.mp3, assets/vo/yui_tag3.mp3, assets/vo/yui_tag4.mp3, assets/vo/yui_tag5.mp3",
      "evidence": [
        "src/audio.js:15",
        "src/audio.js:108",
        "src/game.js:2194"
      ],
      "notes": "Answered by the cast book on 2026-09-22: 5 take(s) shipped in Zoe - Playful and Arrogant Magician and wired. The clone audition pool stays as history.",
      "work": "keep",
      "priority": "",
      "brief": "New Yui — tag performance. Short, close and forceful in the established character voice. Draft the exact line and approve the casting before recording; performance intent is not final dialogue.",
      "duration": "0.3–1.0 s",
      "variants": 3,
      "search": "Voice casting / directed performance; do not source unrelated stock dialogue."
    },
    {
      "id": "crew.checkpoint",
      "category": "Crew and survival",
      "name": "Room secured / next room door",
      "trigger": "School checkpoint / next room entry",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:1641",
        "src/game.js:1686"
      ],
      "notes": "Optional brief door/room seal texture. Existing clear bell and music transitions are present; no need for another full reward song.",
      "work": "source",
      "priority": "P3",
      "brief": "A warm settling breath and one short wooden stamp suggest recovery at a safe checkpoint.",
      "duration": "0.4–0.8 s",
      "variants": 2,
      "search": "soft exhale; wooden stamp; settle",
      "prompt": "One isolated supernatural anime battle game sound effect: A warm settling breath and one short wooden stamp suggest recovery at a safe checkpoint. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "crew-checkpoint__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/crew-checkpoint__blade.mp3",
          "sha256": "24aba9cb515ab1626c99db51bb4ecebca99d5efb16629a022f79f6a7ed63bbc7",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "crew-checkpoint__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/crew-checkpoint__curse.mp3",
          "sha256": "29a96f3b0127706617af3c4e0dae248dd2a2d731f68bcf692dde7d33f4983b7a",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "crew-checkpoint__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/crew-checkpoint__kinetic.mp3",
          "sha256": "dba2f1fbcf4ccd48640c33326ce79efa92c5bb5eb028bdef422823c148c26558",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "player.low-health",
      "category": "Crew and survival",
      "name": "Critical-health edge warning",
      "trigger": "Cross below low health threshold",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2375"
      ],
      "notes": "Some student hurt VO exists, but no separate warning. Consider one edge cue, never continuous heartbeat over every battle.",
      "work": "source",
      "priority": "P3",
      "brief": "A restrained physical heartbeat pair used on a threshold crossing, leaving room for threat audio.",
      "duration": "0.5–0.9 s",
      "variants": 2,
      "search": "muffled heartbeat; low pulse",
      "prompt": "One isolated supernatural anime battle game sound effect: A restrained physical heartbeat pair used on a threshold crossing, leaving room for threat audio. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "player-low-health__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/player-low-health__blade.mp3",
          "sha256": "9b33216bb3d7420fba30a728e37ed767d9a893d4fc8db42c24a333413d8f4150",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "player-low-health__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/player-low-health__curse.mp3",
          "sha256": "0c252ba029f614e24941caf9c27576f67e95f425f09354d4775f3999e3498858",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "player-low-health__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/player-low-health__kinetic.mp3",
          "sha256": "ffb7b5b713ac343b64aef76af965157f5752d6047ee9ab889467cd2b45ee82f0",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "weapon.blast",
      "category": "Dropped weapons",
      "name": "Weapon explosion / Nova Core release",
      "trigger": "weaponBlast event",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:2891"
      ],
      "notes": "Explosion visuals exist but no distinct event sound. Shared hits/crit/kills can be heard; this is missing explosion identity, not silent damage.",
      "work": "source",
      "priority": "P3",
      "brief": "Create a distinct cue for Weapon explosion / Nova Core release. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook.",
      "duration": "0.1–0.4 s",
      "variants": 2,
      "search": "Weapon explosion / Nova Core release; physical impact; short sound effect",
      "prompt": "One isolated supernatural anime battle game sound effect: Create a distinct cue for Weapon explosion / Nova Core release. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "weapon-blast__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/weapon-blast__blade.mp3",
          "sha256": "24f38a72d722cea4777201129c781dcd31a5e44c97bbf81b0d897979553f1613",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-blast__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/weapon-blast__curse.mp3",
          "sha256": "ff4f5fd69b0b78773df2585a918e20c9b475ea1a320f7fd44094fd9cee9a12fd",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-blast__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/weapon-blast__kinetic.mp3",
          "sha256": "d203daaf74e332caafcbff311cd151a9604f28c5d276c173a0fc6fabb5195c83",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "weapon.chain",
      "category": "Dropped weapons",
      "name": "Thunder Palm / Storm Relay arc",
      "trigger": "chain event with weaponId",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:2796"
      ],
      "notes": "No dedicated chain event audio; share a bounded short electric texture with Circuit Break as appropriate.",
      "work": "source",
      "priority": "P3",
      "brief": "Create a distinct cue for Thunder Palm / Storm Relay arc. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook.",
      "duration": "0.1–0.4 s",
      "variants": 2,
      "search": "Thunder Palm / Storm Relay arc; physical impact; short sound effect",
      "prompt": "One isolated supernatural anime battle game sound effect: Create a distinct cue for Thunder Palm / Storm Relay arc. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "weapon-chain__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/weapon-chain__blade.mp3",
          "sha256": "12f2f6bb5fec8a831bda9ac7a999dfcca83d32af056104f8a9aa1abb83b3f66c",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-chain__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/weapon-chain__curse.mp3",
          "sha256": "d57572fa6bf8ddd4c06302d14c95694f07e45e6e6cb6f5a9e5429a4a74407159",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-chain__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/weapon-chain__kinetic.mp3",
          "sha256": "2376325a15021bc696529d0cb8933e49679fce084e67a76d01a8fdcad9ddf82e",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "weapon.frost",
      "category": "Dropped weapons",
      "name": "Winter Thread ice contact",
      "trigger": "Weapon-specific hit / chill application",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3103"
      ],
      "notes": "Distinct ice crackle identity missing; generic hit remains active. No per-tick chill sound.",
      "work": "source",
      "priority": "P3",
      "brief": "Create a distinct cue for Winter Thread ice contact. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook.",
      "duration": "0.1–0.4 s",
      "variants": 2,
      "search": "Winter Thread ice contact; physical impact; short sound effect",
      "prompt": "One isolated supernatural anime battle game sound effect: Create a distinct cue for Winter Thread ice contact. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "weapon-frost__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/weapon-frost__blade.mp3",
          "sha256": "81dab269be743f9a122411598886e2dee4cf46063c21ec93ae2ebc14564e6894",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-frost__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/weapon-frost__curse.mp3",
          "sha256": "d4d696fb2b4536c693809044af185d48ae0f5aa81e1964fa7ac7877473df5c25",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-frost__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/weapon-frost__kinetic.mp3",
          "sha256": "e79ac19663de71a717245fd08a99181fc2ed514bdb577c576220b0802b87b364",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "weapon.impact",
      "category": "Dropped weapons",
      "name": "Elemental / heavy weapon contact variants",
      "trigger": "weaponImpact event",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3103"
      ],
      "notes": "Generic damage sound exists. Suggested fire crack, paper slice, pressure punch and metallic pierce accents; choose a few shared families rather than 12 simultaneous systems.",
      "work": "source",
      "priority": "P3",
      "brief": "Create a distinct cue for Elemental / heavy weapon contact variants. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook.",
      "duration": "0.1–0.4 s",
      "variants": 2,
      "search": "Elemental / heavy weapon contact variants; physical impact; short sound effect",
      "prompt": "One isolated supernatural anime battle game sound effect: Create a distinct cue for Elemental / heavy weapon contact variants. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "weapon-impact__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/weapon-impact__blade.mp3",
          "sha256": "9835a4ba02f113b12727b3a9a23116128b8655b95bdc5111e6013998994f2c3d",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-impact__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/weapon-impact__curse.mp3",
          "sha256": "5c4cf65b4bb5eca5cd5394382c72a28cc637d3d4daac714d57f9f76a4dfefd19",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "weapon-impact__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/weapon-impact__kinetic.mp3",
          "sha256": "d758df50b945a21213e6ff8cccd6bb69d9fd02945d734cdf8cf8290ff86e11c9",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "elite.bulwark.guard",
      "category": "Elites",
      "name": "Bulwark guard opens / closes",
      "trigger": "Guard/open phase transition",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:1952"
      ],
      "notes": "No dedicated event or cue; restrained shell/metal latch communicates vulnerability.",
      "work": "source",
      "priority": "P3",
      "brief": "A heavy shell latch and dry metal deflection mark the guard catching a strike; gate rapid repeated hits.",
      "duration": "0.1–0.25 s",
      "variants": 3,
      "search": "armor deflect; shell latch; metal block",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavy shell latch and dry metal deflection mark the guard catching a strike; gate rapid repeated hits. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "elite-bulwark-guard__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/elite-bulwark-guard__blade.mp3",
          "sha256": "938c0ed03ef07528e01fd4fca3a95815e5a1856cef6aceaaad398d216af7a9ad",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "elite-bulwark-guard__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/elite-bulwark-guard__curse.mp3",
          "sha256": "ff57c8fce92258f74a0524ee9daabdfc7874415c8c36bd7ff822442027a7ac0a",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "elite-bulwark-guard__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/elite-bulwark-guard__kinetic.mp3",
          "sha256": "cf2f4ed9d64aaa959a93e1b8fe8eab5519708f9c82185bbefacde8ef2db79128",
          "duration": 0.88,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "elite.pouncer.release",
      "category": "Elites",
      "name": "Pouncer leap release",
      "trigger": "Windup turns into charge",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:1969"
      ],
      "notes": "Warning exists; no distinct leap launch event. Impact still has existing smash cue.",
      "work": "source",
      "priority": "P3",
      "brief": "A sharp claw scuff and fast air tear mark the actual leap release, separate from its wind-up warning.",
      "duration": "0.1–0.25 s",
      "variants": 3,
      "search": "claw scuff; leap whoosh; air tear",
      "prompt": "One isolated supernatural anime battle game sound effect: A sharp claw scuff and fast air tear mark the actual leap release, separate from its wind-up warning. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "elite-pouncer-release__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/elite-pouncer-release__blade.mp3",
          "sha256": "e8721cb2ec10520a7f596905c0a8692350a9835a8de6bab45767fb7cd747c739",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "elite-pouncer-release__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/elite-pouncer-release__curse.mp3",
          "sha256": "eb04185b6fb08e92b78af03fb175df52a0f7af7a8c6a52a4c798b4a981f1929d",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "elite-pouncer-release__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/elite-pouncer-release__kinetic.mp3",
          "sha256": "aaba47f71982cfbb4f074773cc2cdf431df42852977aea76259a463ce7de2da4",
          "duration": 0.8,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "cards.flip",
      "category": "Menus and store",
      "name": "Card flip / seal break",
      "trigger": "Actual face-up reveal after successful card pull",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/ui.js:2205"
      ],
      "notes": "Purchase already has sound. Need short paper snap synchronized to reveal; skipping animation must not change rewards.",
      "work": "source",
      "priority": "P3",
      "brief": "A tactile single card turn with a dry paper edge.",
      "duration": "0.08–0.2 s",
      "variants": 3,
      "search": "card flip; paper flick",
      "prompt": "One isolated supernatural anime battle game sound effect: A tactile single card turn with a dry paper edge. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "cards-flip__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/cards-flip__blade.mp3",
          "sha256": "482150cfb61530483b4d901cde8618aba69847cc8cb8ca8cec56f8762811bda9",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-flip__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/cards-flip__curse.mp3",
          "sha256": "d8217374dbc9896c9df4589f463c9de34bf97787f6da195da137464c9589a746",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-flip__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/cards-flip__kinetic.mp3",
          "sha256": "c61baf2ba875841d723be0415829894bcff3f6199ecc7d3ff419798853410d00",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "cards.rare",
      "category": "Menus and store",
      "name": "Rare card reveal accent",
      "trigger": "Reveal of a genuinely rare card",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/ui.js:2744"
      ],
      "notes": "No distinct rarity cue. Brief powerful seal/impact variant; source after base flip is approved.",
      "work": "source",
      "priority": "P3",
      "brief": "A solid seal break with a restrained resonant glint for a rare reveal.",
      "duration": "0.3–0.7 s",
      "variants": 2,
      "search": "seal break; rare item reveal; metal glint",
      "prompt": "One isolated supernatural anime battle game sound effect: A solid seal break with a restrained resonant glint for a rare reveal. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "cards-rare__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/cards-rare__blade.mp3",
          "sha256": "e90658130c0904fa4e5aa6256b2a68b705250f2e8f6a405750a408195061c4a1",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-rare__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/cards-rare__curse.mp3",
          "sha256": "a79dc414c7bf29f225ae447c97002fbe607ed5442013075bd1b53683294ec7e4",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "cards-rare__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/cards-rare__kinetic.mp3",
          "sha256": "e5ed8811f80c18e68646063641b07f4346438dc5daef4a58d6f2e15972aa7491",
          "duration": 1.36,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "combo.clean-sweep.signature",
      "category": "Player combat",
      "name": "Clean Sweep signature accent",
      "trigger": "Successful Ren–Yui combo",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2428"
      ],
      "notes": "Current event reuses dash. Proposed bespoke handoff + pressure snap; retain double-cast suppression.",
      "work": "source",
      "priority": "P3",
      "brief": "A heavy Ren pressure hit and razor-like Yui filament snap land together as one decisive cut.",
      "duration": "0.3–0.6 s",
      "variants": 2,
      "search": "heavy air punch; wire snap; razor cut",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavy Ren pressure hit and razor-like Yui filament snap land together as one decisive cut. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "combo-clean-sweep-signature__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/combo-clean-sweep-signature__blade.mp3",
          "sha256": "141e0d675742e1a4282ffdd1aef7276eee4f51da2c792c4a619bbaf64d00d279",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "combo-clean-sweep-signature__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/combo-clean-sweep-signature__curse.mp3",
          "sha256": "75c7c17fd8dcb312ad49e7f9932985f2ceb974bec251f421ab105c4c176be404",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "combo-clean-sweep-signature__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/combo-clean-sweep-signature__kinetic.mp3",
          "sha256": "4df5e87843649bf7bc5efd6305a891fbc6af7e43ccd70ab1976bb3ee9121179e",
          "duration": 1.08,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "ready.domain",
      "category": "Readiness",
      "name": "Domain ready",
      "trigger": "Domain charge crosses fully ready",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3234",
        "src/game.js:2412"
      ],
      "notes": "One short edge cue; no repeated ready alarm. Requires edge detection; no distinct cue today.",
      "work": "source",
      "priority": "P3",
      "brief": "One restrained energized pressure click at the ready edge; no persistent alarm.",
      "duration": "0.12–0.25 s",
      "variants": 2,
      "search": "energy ready; power click; subtle pressure",
      "prompt": "One isolated supernatural anime battle game sound effect: One restrained energized pressure click at the ready edge; no persistent alarm. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "ready-domain__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/ready-domain__blade.mp3",
          "sha256": "9526fdf64c01cb3287f5a7cf53868028b400c032d4eef7ef5e7a7271c5cc83ce",
          "duration": 0.84,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-domain__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/ready-domain__curse.mp3",
          "sha256": "baf325cd21c1f857fa0350c14f80484a6547d713ebc8cacc3108d3b17e987205",
          "duration": 0.84,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-domain__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/ready-domain__kinetic.mp3",
          "sha256": "538360e3ff2cce5ee46eb287c75abf5ad5609a2944a36389a1167c662ffd529c",
          "duration": 0.84,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "ready.shiki",
      "category": "Readiness",
      "name": "Shikigami ready",
      "trigger": "Cooldown and mana permit summon",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:3747",
        "src/game.js:2429"
      ],
      "notes": "One restrained readiness accent after cooldown; avoid cue spam during mana oscillation.",
      "work": "source",
      "priority": "P3",
      "brief": "A restrained dry spirit-seal tick at the transition to ready.",
      "duration": "0.08–0.18 s",
      "variants": 2,
      "search": "seal tick; paper click; spirit ready",
      "prompt": "One isolated supernatural anime battle game sound effect: A restrained dry spirit-seal tick at the transition to ready. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "ready-shiki__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/ready-shiki__blade.mp3",
          "sha256": "1f2313cf86de7649a4473b41d9cf2f6d3e39db3acfd73dff6996de8d96affd48",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-shiki__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/ready-shiki__curse.mp3",
          "sha256": "70bc62910cffdcd21101911b6c7fc9a77d22e1f3ed8d054b8706e7a5e19efdd7",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-shiki__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/ready-shiki__kinetic.mp3",
          "sha256": "6e262a14a5fb35fd2d2a97f47298adc23f09884c62f92a1e28efb02af1db471b",
          "duration": 0.72,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "ready.special",
      "category": "Readiness",
      "name": "Special becomes affordable",
      "trigger": "Mana recovers above equipped-special cost",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2646"
      ],
      "notes": "Optional single regained-readiness cue with hysteresis; no per-mana-increment sound.",
      "work": "source",
      "priority": "P3",
      "brief": "A short clean latch with faint electrical grain at the ready edge.",
      "duration": "0.08–0.18 s",
      "variants": 2,
      "search": "soft latch; energy ready tick",
      "prompt": "One isolated supernatural anime battle game sound effect: A short clean latch with faint electrical grain at the ready edge. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "ready-special__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/ready-special__blade.mp3",
          "sha256": "c6c32207966172343823b81a04addc39e7f754fbe7cc8b456e9c9aebd0e4ef3f",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-special__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/ready-special__curse.mp3",
          "sha256": "3e643df77358ef957a15d5d2893cd7dfdfcbc54b871f390eeb350a13f6c6f11f",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-special__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/ready-special__kinetic.mp3",
          "sha256": "5e7de253678e8b54922d24b79d78af68324fdfc091fa92b126c2500df51d8535",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "ready.step",
      "category": "Readiness",
      "name": "Flash Step charge recharged",
      "trigger": "Spent dash charge completes refill",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/game.js:2954"
      ],
      "notes": "Optional soft mechanical lock-in; differentiate charged step from no-mana recharge denial.",
      "work": "source",
      "priority": "P3",
      "brief": "A very soft air tap for recharge completion; must survive repeated use without irritation.",
      "duration": "0.06–0.12 s",
      "variants": 2,
      "search": "soft air tap; subtle click",
      "prompt": "One isolated supernatural anime battle game sound effect: A very soft air tap for recharge completion; must survive repeated use without irritation. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "ready-step__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/ready-step__blade.mp3",
          "sha256": "d00fd9f82913323eb983d7eaad5fcd5579a3d33addc46bd105a9b4065fdcd49a",
          "duration": 0.64,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-step__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/ready-step__curse.mp3",
          "sha256": "ad174c395bfdba900e1b7a5ac443f6f7992195a4e6a4de9159a96aaa383f8435",
          "duration": 0.64,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "ready-step__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/ready-step__kinetic.mp3",
          "sha256": "fc259d920f387a4795ba6d204474a16d4b296b4167169a7ab4ea82e8f887248d",
          "duration": 0.64,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "special.circuit.chain",
      "category": "Specials",
      "name": "Circuit Break arc detail",
      "trigger": "Actual elchain links for Circuit Break",
      "status": "proposed-missing",
      "sourceType": "none",
      "currentSource": "No dedicated asset or cue currently supplied",
      "evidence": [
        "src/sim.js:836"
      ],
      "notes": "Cast already has its own cue; elchain visual links have no dedicated sound dispatch. Optional bounded electrical snap, never one sound per link.",
      "work": "source",
      "priority": "P3",
      "brief": "Create a distinct cue for Circuit Break arc detail. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook.",
      "duration": "0.1–0.4 s",
      "variants": 2,
      "search": "Circuit Break arc detail; physical impact; short sound effect",
      "prompt": "One isolated supernatural anime battle game sound effect: Create a distinct cue for Circuit Break arc detail. Keep it short, tactile and tied to the actual event; preserve the existing warning and voice hierarchy. The dedicated sound is not implemented. Existing presentation events may already provide the hook. Strong physical transient, audible midrange detail, controlled decay, clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "auditions": [
        {
          "id": "special-circuit-chain__blade",
          "batch": "anime-20260916",
          "style": "blade",
          "label": "Blade & Breath",
          "description": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise.",
          "file": "assets/library/auditions/anime-20260916/special-circuit-chain__blade.mp3",
          "sha256": "c4c27c8f8961be9238fed1e02fd35e191707cbfd00a35fde8457899fe7307ce3",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "special-circuit-chain__curse",
          "batch": "anime-20260916",
          "style": "curse",
          "label": "Cursed Resonance",
          "description": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie.",
          "file": "assets/library/auditions/anime-20260916/special-circuit-chain__curse.mp3",
          "sha256": "b07ba90a115ed49252a4f513053b43262e5873ba9a9b7a3648762809a199c326",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        },
        {
          "id": "special-circuit-chain__kinetic",
          "batch": "anime-20260916",
          "style": "kinetic",
          "label": "Kinetic Energy",
          "description": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile.",
          "file": "assets/library/auditions/anime-20260916/special-circuit-chain__kinetic.mp3",
          "sha256": "c2826c2a828a9e9af66ea5c3ae5cb1ebd293ddd53bcc13aafa5c0584403a44b0",
          "duration": 0.6802494331065759,
          "loop": false,
          "provenance": "assets/library/auditions/anime-20260916/provenance.json"
        }
      ]
    },
    {
      "id": "ambience.title",
      "category": "Ambience",
      "name": "Night campus ambience",
      "trigger": "Title intro and menu ambience",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/sfx/ambience.mp3",
      "evidence": [
        "src/audio.js:452",
        "src/game.js:266"
      ],
      "notes": "Recorded night ambience loops; not unique room ambience.",
      "work": "keep",
      "priority": "",
      "preview": "assets/sfx/ambience.mp3",
      "previewFiles": [],
      "previewNote": ""
    },
    {
      "id": "loot.bonus-drop",
      "category": "Boss rewards",
      "name": "Non-weapon boss bonus forms",
      "trigger": "bossRewardDrop event",
      "status": "in-game",
      "sourceType": "recorded",
      "currentSource": "ElevenLabs Sound Effects v2; mono runtime recording with procedural fallback",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js",
        "assets/sfx/combat/manifest.json"
      ],
      "notes": "Integrated for playthrough feedback. One sample replaces the procedural cue; no additional layer. Boss loot sounds at the death seal; one prize per kill.",
      "work": "review",
      "priority": "",
      "brief": "Brilliant metallic chime, pressure impact and short crystalline sheen for the one boss prize.",
      "preview": "assets/sfx/combat/boss-loot-reveal.mp3",
      "previewNote": "Live mono recording; final mix gain is defined in assets/sfx/combat/manifest.json.",
      "previewFiles": [
        {
          "label": "Live recording",
          "file": "assets/sfx/combat/boss-loot-reveal.mp3"
        }
      ],
      "duration": "2.2 s",
      "variants": 1
    },
    {
      "id": "boss.detention.attack",
      "category": "Bosses",
      "name": "DETENTION — attack sequence",
      "trigger": "cage -> cagedown",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: threatZone + enemyImpact(cage)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:148"
      ],
      "notes": "Kit: cage. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Bar/chain tension then cage collapse. Sustained tightening sound not currently supplied.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (chains pulled taut, iron bars bending and a cell-door slam) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.exam.attack",
      "category": "Bosses",
      "name": "EXAM SEASON — attack sequence",
      "trigger": "zone -> zonepop",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: threatZone + enemyImpact(zone)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:147"
      ],
      "notes": "Kit: zones. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Dry countdown ticks and compressed detonation. No persistent zone alarm loop.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (rapid mechanical clock ticks tightening into a dry desk slam) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.group.attack",
      "category": "Bosses",
      "name": "GROUP PROJECT — attack sequence",
      "trigger": "windup and enemyVolley(kind quiz)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: threatShot + enemyShot(quiz)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:149"
      ],
      "notes": "Kit: quiz. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Razor paper fan / chalk fracture; one accent per volley, not per bullet.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (overlapping paper slaps and staggered hand knocks converging into one impact) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.janitor.attack",
      "category": "Bosses",
      "name": "THE JANITOR — attack sequence",
      "trigger": "sweepwind -> sweep",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: threatSweep + enemyImpact(sweep)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:143"
      ],
      "notes": "Kit: sweep. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Metal drag, rising air cut and heavy mop-blade sweep.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (iron scrape on concrete into a brutal steel slam) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.monitor.attack",
      "category": "Bosses",
      "name": "HALL MONITOR — attack sequence",
      "trigger": "shoot(spit) and summon; caught state is otherwise silent",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: enemyShot(spit) + enemySummon",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:144"
      ],
      "notes": "Kit: spotlight. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Distorted whistle/searchlight snap, forceful projectile release and reinforcement rupture.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (harsh whistle breath, a baton crack and a heavy authority stamp) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.parent.attack",
      "category": "Bosses",
      "name": "PARENT-TEACHER NIGHT — attack sequence",
      "trigger": "shoot(spit) and summon; caught state is otherwise silent",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: enemyShot(spit) + enemySummon",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:150"
      ],
      "notes": "Kit: spotlight. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Distorted whistle/searchlight snap, forceful projectile release and reinforcement rupture.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (two stern percussive knocks, a sharp whistle breath and a resonant stamp) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.quiz.attack",
      "category": "Bosses",
      "name": "POP QUIZ — attack sequence",
      "trigger": "windup and enemyVolley(kind quiz)",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: threatShot + enemyShot(quiz)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:145"
      ],
      "notes": "Kit: quiz. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Razor paper fan / chalk fracture; one accent per volley, not per bullet.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (frantic paper flicks, a rising chalkboard scrape and a brittle fracture) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.substitute.attack",
      "category": "Bosses",
      "name": "THE SUBSTITUTE — attack sequence",
      "trigger": "vanish -> appear -> slam",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: enemySummon(vanish) + threatZone + enemyImpact(slam)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:146"
      ],
      "notes": "Kit: teleport. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Inward vacuum, air tear at reappearance, hard impact; slam already covers radial bullet release.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (reverse breath suction, a ripping air vacuum and a close impact) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "boss.vice.attack",
      "category": "Bosses",
      "name": "THE VICE PRINCIPAL — attack sequence",
      "trigger": "vanish -> appear -> slam",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: enemySummon(vanish) + threatZone + enemyImpact(slam)",
      "evidence": [
        "src/game.js:34",
        "src/game.js:2400",
        "src/config.js:151"
      ],
      "notes": "Kit: teleport. Shared family cues with positional panning; most attack events omit boss identity. Sourcing direction: Inward vacuum, air tear at reappearance, hard impact; slam already covers radial bullet release.",
      "work": "keep",
      "priority": "",
      "brief": "Use the boss material (a low pressure intake, twisting metal and a decisive gavel-like crack) in separate wind-up and release cuts. Shared warning/release cue rows below own the initial sourcing work; reuse those where appropriate."
    },
    {
      "id": "player.rally",
      "category": "Crew and survival",
      "name": "Rally recovery",
      "trigger": "rally event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('rally', '')",
      "evidence": [
        "src/combat-audio.js:54",
        "src/game.js:2463"
      ],
      "notes": "Brief rising confirmation; rate-limited.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved.",
      "preview": "assets/library/runtime-0c94f7a/rally.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "player.revive",
      "category": "Crew and survival",
      "name": "Second Heart / charter revival",
      "trigger": "revive event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.levelup",
      "evidence": [
        "src/audio.js:801",
        "src/game.js:2500"
      ],
      "notes": "Reuses level-up arpeggio; no unique revival sample.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "sfx-reference-combat",
      "category": "Effects / reference",
      "name": "Combat historical synth exports",
      "trigger": "Reference audition only",
      "status": "reference-only",
      "sourceType": "Historical procedural synthesis MP3 export",
      "currentSource": "assets/library/sfx/",
      "preview": "assets/library/sfx/hit.mp3",
      "previewFiles": [
        "assets/library/sfx/hit-crit.mp3",
        "assets/library/sfx/kill.mp3",
        "assets/library/sfx/kill-big.mp3",
        "assets/library/sfx/hurt.mp3",
        "assets/library/sfx/dash.mp3"
      ],
      "evidence": [
        "scripts/sound-library.py:17",
        "scripts/sound-library.py:45",
        "src/audio.js:114"
      ],
      "notes": "These MP3s are not runtime-loaded combat assets. They predate current combat-audio.js; boss-arrival and other replaced recipes are obsolete references, not current playback proof. Do not regenerate them silently.",
      "count": 6,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "sfx-reference-interface",
      "category": "Effects / reference",
      "name": "Interface historical synth exports",
      "trigger": "Reference audition only",
      "status": "reference-only",
      "sourceType": "Historical procedural synthesis MP3 export",
      "currentSource": "assets/library/sfx/",
      "preview": "assets/library/sfx/ui-click.mp3",
      "previewFiles": [
        "assets/library/sfx/ui-select.mp3",
        "assets/library/sfx/ui-deny.mp3",
        "assets/library/sfx/ui-buy.mp3"
      ],
      "evidence": [
        "scripts/sound-library.py:17",
        "scripts/sound-library.py:45",
        "src/audio.js:114"
      ],
      "notes": "These MP3s are not runtime-loaded combat assets. They predate current combat-audio.js; boss-arrival and other replaced recipes are obsolete references, not current playback proof. Do not regenerate them silently.",
      "count": 4,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "sfx-reference-pickups-progress",
      "category": "Effects / reference",
      "name": "Pickups & Progress historical synth exports",
      "trigger": "Reference audition only",
      "status": "reference-only",
      "sourceType": "Historical procedural synthesis MP3 export",
      "currentSource": "assets/library/sfx/",
      "preview": "assets/library/sfx/pickup-essence.mp3",
      "previewFiles": [
        "assets/library/sfx/pickup-coin.mp3",
        "assets/library/sfx/pickup-heal.mp3",
        "assets/library/sfx/levelup.mp3",
        "assets/library/sfx/upgrade.mp3",
        "assets/library/sfx/streak.mp3"
      ],
      "evidence": [
        "scripts/sound-library.py:17",
        "scripts/sound-library.py:45",
        "src/audio.js:114"
      ],
      "notes": "These MP3s are not runtime-loaded combat assets. They predate current combat-audio.js; boss-arrival and other replaced recipes are obsolete references, not current playback proof. Do not regenerate them silently.",
      "count": 6,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "sfx-reference-set-pieces",
      "category": "Effects / reference",
      "name": "Set Pieces historical synth exports",
      "trigger": "Reference audition only",
      "status": "reference-only",
      "sourceType": "Historical procedural synthesis MP3 export",
      "currentSource": "assets/library/sfx/",
      "preview": "assets/library/sfx/domain.mp3",
      "previewFiles": [
        "assets/library/sfx/boss-arrival.mp3",
        "assets/library/sfx/surge.mp3",
        "assets/library/sfx/death.mp3",
        "assets/library/sfx/win.mp3"
      ],
      "evidence": [
        "scripts/sound-library.py:17",
        "scripts/sound-library.py:45",
        "src/audio.js:114"
      ],
      "notes": "These MP3s are not runtime-loaded combat assets. They predate current combat-audio.js; boss-arrival and other replaced recipes are obsolete references, not current playback proof. Do not regenerate them silently.",
      "count": 5,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "sfx-reference-weapons",
      "category": "Effects / reference",
      "name": "Weapons historical synth exports",
      "trigger": "Reference audition only",
      "status": "reference-only",
      "sourceType": "Historical procedural synthesis MP3 export",
      "currentSource": "assets/library/sfx/",
      "preview": "assets/library/sfx/weapon-palm.mp3",
      "previewFiles": [
        "assets/library/sfx/weapon-needle.mp3",
        "assets/library/sfx/weapon-orb.mp3",
        "assets/library/sfx/weapon-volley.mp3"
      ],
      "evidence": [
        "scripts/sound-library.py:17",
        "scripts/sound-library.py:45",
        "src/audio.js:114"
      ],
      "notes": "These MP3s are not runtime-loaded combat assets. They predate current combat-audio.js; boss-arrival and other replaced recipes are obsolete references, not current playback proof. Do not regenerate them silently.",
      "count": 4,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "elite.bulwark.arrival",
      "category": "Elites",
      "name": "Bulwark arrival",
      "trigger": "eliteSpawn event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2439"
      ],
      "notes": "All elites share wave surge; no species-specific arrival recording.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "elite.bulwark.defeat",
      "category": "Elites",
      "name": "Bulwark defeated",
      "trigger": "eliteDown event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.upgrade",
      "evidence": [
        "src/audio.js:806",
        "src/game.js:2442"
      ],
      "notes": "All elites share upgrade confirmation, alongside ordinary damage/kill sounds.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "elite.conductor.arrival",
      "category": "Elites",
      "name": "Conductor arrival",
      "trigger": "eliteSpawn event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2439"
      ],
      "notes": "All elites share wave surge; no species-specific arrival recording.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "elite.conductor.defeat",
      "category": "Elites",
      "name": "Conductor defeated",
      "trigger": "eliteDown event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.upgrade",
      "evidence": [
        "src/audio.js:806",
        "src/game.js:2442"
      ],
      "notes": "All elites share upgrade confirmation, alongside ordinary damage/kill sounds.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "elite.pouncer.arrival",
      "category": "Elites",
      "name": "Pouncer arrival",
      "trigger": "eliteSpawn event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2439"
      ],
      "notes": "All elites share wave surge; no species-specific arrival recording.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "elite.pouncer.defeat",
      "category": "Elites",
      "name": "Pouncer defeated",
      "trigger": "eliteDown event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.upgrade",
      "evidence": [
        "src/audio.js:806",
        "src/game.js:2442"
      ],
      "notes": "All elites share upgrade confirmation, alongside ordinary damage/kill sounds.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "legacy.pause-drone",
      "category": "Legacy / unused",
      "name": "Paused meditation drone",
      "trigger": "Sound.pauseBed(true), currently never requested by Game",
      "status": "available-unused",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.pauseBed",
      "evidence": [
        "src/audio.js:1054",
        "src/game.js:271"
      ],
      "notes": "Method can synthesize a quiet three-note low drone, but runtime paths only call false. Chimes were explicitly removed in code. Do not label this as currently audible or source bowls to restore them.",
      "work": "reference",
      "priority": ""
    },
    {
      "id": "legacy.summon",
      "category": "Legacy / unused",
      "name": "Legacy Kuroinu summon synth",
      "trigger": "Former elective summon path",
      "status": "available-unused",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.summon",
      "evidence": [
        "src/audio.js:775",
        "src/game.js:2432"
      ],
      "notes": "Defined but no runtime call remains. Current four summons use combatRecipe shiki instead; not a newly integrated recording.",
      "work": "reference",
      "priority": ""
    },
    {
      "id": "ui.click",
      "category": "Menus and store",
      "name": "Menu activation / navigation",
      "trigger": "UI.button activation, keyboard/gamepad focus, common back/toggle controls",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.click",
      "evidence": [
        "src/audio.js:851",
        "src/ui.js:168"
      ],
      "notes": "Same square tick for most menus. Pointer-hover focus deliberately silent.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "ui.deny",
      "category": "Menus and store",
      "name": "Unavailable / insufficient resource",
      "trigger": "Invalid store action, exhausted mana, unready domain/shiki/step/tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.deny",
      "evidence": [
        "src/audio.js:853",
        "src/game.js:2445"
      ],
      "notes": "Shared low error tone across UI and gameplay refusals.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "ui.purchase",
      "category": "Menus and store",
      "name": "Purchase / card pull / slot / unlock / buyback",
      "trigger": "Successful in-game currency purchase commit",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.buy",
      "evidence": [
        "src/audio.js:854",
        "src/game.js:412"
      ],
      "notes": "Three ascending sine notes; no synchronized card reveal or rarity sting.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "ui.select",
      "category": "Menus and store",
      "name": "Select an owned elective",
      "trigger": "Choose an already-owned special in the store",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.select",
      "evidence": [
        "src/audio.js:852",
        "src/game.js:791"
      ],
      "notes": "Not a universal character-selection sound.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "music-annex",
      "category": "Music",
      "name": "ANNEX - Between Bells 5",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/annex.mp3",
      "preview": "assets/music/annex.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 5",
      "durationSeconds": 121.08108333333334,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss",
      "category": "Music",
      "name": "BOSS - Devil On The Run",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss.mp3",
      "preview": "assets/music/boss.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run",
      "durationSeconds": 120.93570833333334,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-01",
      "category": "Music",
      "name": "BOSS 01 - Devil On The Run loop 01",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-01.mp3",
      "preview": "assets/music/boss-01.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 01",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-02",
      "category": "Music",
      "name": "BOSS 02 - Devil On The Run loop 02",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-02.mp3",
      "preview": "assets/music/boss-02.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 02",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-03",
      "category": "Music",
      "name": "BOSS 03 - Devil On The Run loop 03",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-03.mp3",
      "preview": "assets/music/boss-03.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 03",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-04",
      "category": "Music",
      "name": "BOSS 04 - Devil On The Run loop 04",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-04.mp3",
      "preview": "assets/music/boss-04.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 04",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-05",
      "category": "Music",
      "name": "BOSS 05 - Devil On The Run loop 05",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-05.mp3",
      "preview": "assets/music/boss-05.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 05",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-06",
      "category": "Music",
      "name": "BOSS 06 - Devil On The Run loop 06",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-06.mp3",
      "preview": "assets/music/boss-06.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 06",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-07",
      "category": "Music",
      "name": "BOSS 07 - Devil On The Run loop 07",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-07.mp3",
      "preview": "assets/music/boss-07.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 07",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-08",
      "category": "Music",
      "name": "BOSS 08 - Devil On The Run loop 08",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-08.mp3",
      "preview": "assets/music/boss-08.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 08",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-09",
      "category": "Music",
      "name": "BOSS 09 - Devil On The Run loop 09",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-09.mp3",
      "preview": "assets/music/boss-09.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Devil On The Run loop 09",
      "durationSeconds": 11.2214375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-2",
      "category": "Music",
      "name": "Boss 2 - Boss 2",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-2.mp3",
      "preview": "assets/music/boss-new-2.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 2",
      "durationSeconds": 140.10379166666667,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-3",
      "category": "Music",
      "name": "Boss 3 - Boss 3",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-3.mp3",
      "preview": "assets/music/boss-new-3.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 3",
      "durationSeconds": 147.2323125,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-4",
      "category": "Music",
      "name": "Boss 4 - Boss 4",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-4.mp3",
      "preview": "assets/music/boss-new-4.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 4",
      "durationSeconds": 140.82360416666666,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-5",
      "category": "Music",
      "name": "Boss 5 - Boss 5",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-5.mp3",
      "preview": "assets/music/boss-new-5.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 5",
      "durationSeconds": 84.02760416666666,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-6",
      "category": "Music",
      "name": "Boss 6 - Boss 6",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-6.mp3",
      "preview": "assets/music/boss-new-6.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 6",
      "durationSeconds": 145.42116666666666,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-7",
      "category": "Music",
      "name": "Boss 7 - Boss 7",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-7.mp3",
      "preview": "assets/music/boss-new-7.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 7",
      "durationSeconds": 135.27404166666668,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-new-8",
      "category": "Music",
      "name": "Boss 8 - Boss 8",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-new-8.mp3",
      "preview": "assets/music/boss-new-8.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss 8",
      "durationSeconds": 128.95820833333335,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-boss-wow",
      "category": "Music",
      "name": "BOSS WOW — EXPERIMENTAL - Boss Experiments - WOW",
      "trigger": "Boss encounter rotation / fallback",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/boss-wow.mp3",
      "preview": "assets/music/boss-wow.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Boss Experiments - WOW",
      "durationSeconds": 126.891625,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-curfew",
      "category": "Music",
      "name": "CURFEW - Between Bells 3",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/curfew.mp3",
      "preview": "assets/music/curfew.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 3",
      "durationSeconds": 154.66602083333333,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-detention",
      "category": "Music",
      "name": "DETENTION - Between Bells 2",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/detention.mp3",
      "preview": "assets/music/detention.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 2",
      "durationSeconds": 136.298375,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-drive",
      "category": "Music",
      "name": "DRIVE - Night Drive Synthwave",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/drive.mp3",
      "preview": "assets/music/drive.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Night Drive Synthwave",
      "durationSeconds": 144.25,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-lockers",
      "category": "Music",
      "name": "LOCKERS - Between Bells 4",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/lockers.mp3",
      "preview": "assets/music/lockers.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 4",
      "durationSeconds": 170.95522916666667,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-night",
      "category": "Music",
      "name": "NIGHT - Between Bells",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/night.mp3",
      "preview": "assets/music/night.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells",
      "durationSeconds": 182.34372916666666,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-rooftop",
      "category": "Music",
      "name": "ROOFTOP - Between Bells 7",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/rooftop.mp3",
      "preview": "assets/music/rooftop.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 7",
      "durationSeconds": 123.09558333333334,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-stairwell",
      "category": "Music",
      "name": "STAIRWELL - Between Bells 6",
      "trigger": "Level music shuffle",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/stairwell.mp3",
      "preview": "assets/music/stairwell.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Between Bells 6",
      "durationSeconds": 167.61697916666665,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "music-title",
      "category": "Music",
      "name": "TITLE - Gangsta",
      "trigger": "Title/menu",
      "status": "in-game",
      "sourceType": "Authored song / prepared MP3 loop",
      "currentSource": "assets/music/title.mp3",
      "preview": "assets/music/title.mp3",
      "previewFiles": [],
      "evidence": [
        "assets/music/catalog.json",
        "src/audio.js:8",
        "docs/MUSIC-ENGINE.md"
      ],
      "notes": "Intro/loop bounds come from the current catalog. Original boss-01..09 cues rotate across encounters; old library notes tying one cue to a specific boss are historical.",
      "sourceTitle": "Gangsta",
      "durationSeconds": 139.20583333333335,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-clap",
      "category": "Music / reactive accents",
      "name": "Clap",
      "trigger": "Below-40% boss pressure",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/clap.wav",
      "preview": "assets/music/boss-score/clap.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 0.36,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-drum",
      "category": "Music / reactive accents",
      "name": "Drum",
      "trigger": "Below-40% boss pressure",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/drum.wav",
      "preview": "assets/music/boss-score/drum.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 0.42,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-knock",
      "category": "Music / reactive accents",
      "name": "Knock",
      "trigger": "Below-40% boss pressure",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/knock.wav",
      "preview": "assets/music/boss-score/knock.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 0.38,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-metal",
      "category": "Music / reactive accents",
      "name": "Metal",
      "trigger": "Below-40% boss pressure",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/metal.wav",
      "preview": "assets/music/boss-score/metal.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 0.36,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-paper",
      "category": "Music / reactive accents",
      "name": "Paper",
      "trigger": "Below-40% boss pressure",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/paper.wav",
      "preview": "assets/music/boss-score/paper.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 0.28,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-resolve",
      "category": "Music / reactive accents",
      "name": "Resolve",
      "trigger": "Last living boss defeat ending",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/resolve.wav",
      "preview": "assets/music/boss-score/resolve.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 2.75,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-resolve-cage",
      "category": "Music / reactive accents",
      "name": "Resolve Cage",
      "trigger": "Last living boss defeat ending",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/resolve-cage.wav",
      "preview": "assets/music/boss-score/resolve-cage.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 1.9,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "boss-score-resolve-impact",
      "category": "Music / reactive accents",
      "name": "Resolve Impact",
      "trigger": "Last living boss defeat ending",
      "status": "in-game",
      "sourceType": "Original synthesized and baked mono WAV",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "evidence": [
        "assets/music/boss-score.json",
        "scripts/bake-boss-score.py:1",
        "src/boss-score.js",
        "docs/MUSIC-ENGINE.md:3"
      ],
      "notes": "Already used by the reactive boss score. Reuse is a creative option, but these are generated textures rather than recorded combat foley.",
      "durationSeconds": 1.65,
      "work": "keep",
      "priority": ""
    },
    {
      "id": "pickup.frag",
      "category": "Pickups",
      "name": "Coins",
      "trigger": "pickup event, kind frag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.pickup",
      "evidence": [
        "src/audio.js:757",
        "src/game.js:2385"
      ],
      "notes": "Coin and heal use different pitches; heal may add Sora VO.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "pickup.heal",
      "category": "Pickups",
      "name": "Heart healing",
      "trigger": "pickup event, kind heal",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.pickup",
      "evidence": [
        "src/audio.js:757",
        "src/game.js:2385"
      ],
      "notes": "Coin and heal use different pitches; heal may add Sora VO.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "pickup.mana",
      "category": "Pickups",
      "name": "Purple mana orb",
      "trigger": "pickup kind ce",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('mana', '')",
      "evidence": [
        "src/combat-audio.js:52",
        "src/game.js:2386"
      ],
      "notes": "Distinct procedural mana pair; no recorded orb sound.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved.",
      "preview": "assets/library/runtime-0c94f7a/mana.mp3",
      "previewNote": "Current synth recipe captured in isolation at 0c94f7a; no music/VO. Encoded to mono for reference, not a recorded replacement."
    },
    {
      "id": "pickup.xp",
      "category": "Pickups",
      "name": "Blue / golden XP flame",
      "trigger": "pickup event, kind xp",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.pickup",
      "evidence": [
        "src/audio.js:757",
        "src/game.js:2385"
      ],
      "notes": "XP colors share same cue; gold has no dedicated higher-value sound.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "combo.clean-sweep",
      "category": "Player combat",
      "name": "Ren–Yui Clean Sweep",
      "trigger": "cleansweep event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.dash",
      "evidence": [
        "src/audio.js:767",
        "src/game.js:2428"
      ],
      "notes": "Reuses dash; suppresses duplicate same-batch primary cone cue.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "progress.bank",
      "category": "Progress and rewards",
      "name": "Level banked",
      "trigger": "banked event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.upgrade",
      "evidence": [
        "src/audio.js:806",
        "src/game.js:2451"
      ],
      "notes": "Upgrade confirmation while gameplay continues.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "progress.level",
      "category": "Progress and rewards",
      "name": "Level reached",
      "trigger": "level event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.levelup",
      "evidence": [
        "src/audio.js:801",
        "src/game.js:2449"
      ],
      "notes": "Rising square arpeggio and triangle body.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "progress.streak",
      "category": "Progress and rewards",
      "name": "Kill streak milestone",
      "trigger": "Every fifth streak kill starting at five",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.streak",
      "evidence": [
        "src/audio.js:901",
        "src/game.js:2364"
      ],
      "notes": "Pitch increases with streak; 120ms gate.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "progress.upgrade",
      "category": "Progress and rewards",
      "name": "Upgrade chosen",
      "trigger": "Commit a level-up choice or store improvement",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.upgrade",
      "evidence": [
        "src/audio.js:806",
        "src/game.js:2281"
      ],
      "notes": "Shared two-part tonal confirmation.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "boss.detention.music-ending",
      "category": "Reactive boss score",
      "name": "DETENTION — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-cage.wav",
      "evidence": [
        "assets/music/boss-score.json:5873",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-cage.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.detention.music-pressure",
      "category": "Reactive boss score",
      "name": "DETENTION — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/knock.wav; assets/music/boss-score/metal.wav",
      "evidence": [
        "assets/music/boss-score.json:5873",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/knock.wav",
      "previewFiles": [
        "assets/music/boss-score/metal.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.exam.music-ending",
      "category": "Reactive boss score",
      "name": "EXAM SEASON — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "evidence": [
        "assets/music/boss-score.json:5853",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.exam.music-pressure",
      "category": "Reactive boss score",
      "name": "EXAM SEASON — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/drum.wav; assets/music/boss-score/clap.wav",
      "evidence": [
        "assets/music/boss-score.json:5853",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/drum.wav",
      "previewFiles": [
        "assets/music/boss-score/clap.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.group.music-ending",
      "category": "Reactive boss score",
      "name": "GROUP PROJECT — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "evidence": [
        "assets/music/boss-score.json:5893",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.group.music-pressure",
      "category": "Reactive boss score",
      "name": "GROUP PROJECT — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/clap.wav; assets/music/boss-score/paper.wav",
      "evidence": [
        "assets/music/boss-score.json:5893",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/clap.wav",
      "previewFiles": [
        "assets/music/boss-score/paper.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.janitor.music-ending",
      "category": "Reactive boss score",
      "name": "THE JANITOR — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve.wav",
      "evidence": [
        "assets/music/boss-score.json:5773",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.janitor.music-pressure",
      "category": "Reactive boss score",
      "name": "THE JANITOR — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/drum.wav; assets/music/boss-score/metal.wav",
      "evidence": [
        "assets/music/boss-score.json:5773",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/drum.wav",
      "previewFiles": [
        "assets/music/boss-score/metal.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.monitor.music-ending",
      "category": "Reactive boss score",
      "name": "HALL MONITOR — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "evidence": [
        "assets/music/boss-score.json:5793",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.monitor.music-pressure",
      "category": "Reactive boss score",
      "name": "HALL MONITOR — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/knock.wav; assets/music/boss-score/metal.wav",
      "evidence": [
        "assets/music/boss-score.json:5793",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/knock.wav",
      "previewFiles": [
        "assets/music/boss-score/metal.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.parent.music-ending",
      "category": "Reactive boss score",
      "name": "PARENT-TEACHER NIGHT — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-cage.wav",
      "evidence": [
        "assets/music/boss-score.json:5913",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-cage.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.parent.music-pressure",
      "category": "Reactive boss score",
      "name": "PARENT-TEACHER NIGHT — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/drum.wav; assets/music/boss-score/knock.wav",
      "evidence": [
        "assets/music/boss-score.json:5913",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/drum.wav",
      "previewFiles": [
        "assets/music/boss-score/knock.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.quiz.music-ending",
      "category": "Reactive boss score",
      "name": "POP QUIZ — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "evidence": [
        "assets/music/boss-score.json:5813",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.quiz.music-pressure",
      "category": "Reactive boss score",
      "name": "POP QUIZ — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/paper.wav; assets/music/boss-score/clap.wav",
      "evidence": [
        "assets/music/boss-score.json:5813",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/paper.wav",
      "previewFiles": [
        "assets/music/boss-score/clap.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.substitute.music-ending",
      "category": "Reactive boss score",
      "name": "THE SUBSTITUTE — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-cage.wav",
      "evidence": [
        "assets/music/boss-score.json:5833",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-cage.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.substitute.music-pressure",
      "category": "Reactive boss score",
      "name": "THE SUBSTITUTE — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/knock.wav; assets/music/boss-score/paper.wav",
      "evidence": [
        "assets/music/boss-score.json:5833",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/knock.wav",
      "previewFiles": [
        "assets/music/boss-score/paper.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.vice.music-ending",
      "category": "Reactive boss score",
      "name": "THE VICE PRINCIPAL — defeat musical ending",
      "trigger": "Final living boss defeated during a compatible boss song",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/resolve-impact.wav",
      "evidence": [
        "assets/music/boss-score.json:5933",
        "src/boss-score.js:181"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/resolve-impact.wav",
      "previewFiles": [],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "boss.vice.music-pressure",
      "category": "Reactive boss score",
      "name": "THE VICE PRINCIPAL — low-health pressure",
      "trigger": "Boss HP at or below configured danger fraction, compatible boss song playing",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "assets/music/boss-score/drum.wav; assets/music/boss-score/metal.wav",
      "evidence": [
        "assets/music/boss-score.json:5933",
        "src/boss-score.js:152"
      ],
      "notes": "Existing original baked small WAV palette; boss-specific asset/rate/gain profile. Pressure follows measured positions in the actual song; song rotation is independent of boss identity. Do not source replacement full music for this cue.",
      "work": "keep",
      "priority": "",
      "preview": "assets/music/boss-score/drum.wav",
      "previewFiles": [
        "assets/music/boss-score/metal.wav"
      ],
      "previewNote": "Isolated layer. In-game pitch, timing and gain depend on the current song and boss."
    },
    {
      "id": "bell.clear",
      "category": "Time and waves",
      "name": "Room cleared bell",
      "trigger": "Actual clear announcement after exorcism finishes",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/sfx/bell.mp3",
      "evidence": [
        "src/audio.js:880",
        "src/game.js:1880"
      ],
      "notes": "Same school-bell recording. Method has procedural bell fallback if asset absent; win fallback adds major resolve. Only final room is First Bell.",
      "work": "keep",
      "priority": "",
      "preview": "assets/sfx/bell.mp3",
      "previewFiles": [],
      "previewNote": ""
    },
    {
      "id": "bell.held",
      "category": "Time and waves",
      "name": "Held bell",
      "trigger": "Room-end bell while a boss still stands",
      "status": "in-game",
      "sourceType": "recording",
      "currentSource": "assets/sfx/bell.mp3",
      "evidence": [
        "src/audio.js:862",
        "src/game.js:2483"
      ],
      "notes": "Same school-bell recording. Method has procedural bell fallback if asset absent; win fallback adds major resolve. Only final room is First Bell.",
      "work": "keep",
      "priority": "",
      "preview": "assets/sfx/bell.mp3",
      "previewFiles": [],
      "previewNote": ""
    },
    {
      "id": "time.bell-warning",
      "category": "Time and waves",
      "name": "Approaching bell warning",
      "trigger": "warnAt toast in the frame loop",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2738"
      ],
      "notes": "Reuses wave surge; only final room ends at First Bell.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "time.recoil",
      "category": "Time and waves",
      "name": "Wave-clearing recoil",
      "trigger": "recoil event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.dash",
      "evidence": [
        "src/audio.js:767",
        "src/game.js:2493"
      ],
      "notes": "Reuses dash as outward breath.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "time.skip",
      "category": "Time and waves",
      "name": "Night time skip",
      "trigger": "skip event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.dash",
      "evidence": [
        "src/audio.js:767",
        "src/game.js:2446"
      ],
      "notes": "Reuses dash.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "time.turntable",
      "category": "Time and waves",
      "name": "Time Stop record slowdown / release",
      "trigger": "Intentional time stop and level-up wind-down / resume",
      "status": "in-game",
      "sourceType": "music",
      "currentSource": "Current playing music through Sound.platter playback-rate ramps",
      "evidence": [
        "src/audio.js:917",
        "src/game.js:2675"
      ],
      "notes": "An effect on the actual music source, not a separate sound sample. Preserve existing pitch/rate handoff.",
      "work": "keep",
      "priority": ""
    },
    {
      "id": "wave.graduate",
      "category": "Time and waves",
      "name": "Difficulty graduation",
      "trigger": "graduate event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/audio.js: Sound.surge",
      "evidence": [
        "src/audio.js:847",
        "src/game.js:2457"
      ],
      "notes": "Reuses wave surge.",
      "work": "keep",
      "priority": "",
      "brief": "Keep this functional confirmation for now. Revisit only after the main combat palette is approved."
    },
    {
      "id": "vo-reference-kaito",
      "category": "Voice / reference",
      "name": "Kaito original voice reference",
      "trigger": "Casting / continuity reference",
      "status": "reference-only",
      "sourceType": "Historical VO mashup and still-image video",
      "currentSource": "assets/library/mashup-kaito.mp3",
      "preview": "assets/library/mashup-kaito.mp3",
      "previewFiles": [
        "assets/library/reference-kaito.mp4"
      ],
      "evidence": [
        "assets/library/manifest.json",
        "scripts/sound-library.py:108"
      ],
      "notes": "Preserved reference; contains a mix of clips and does not establish current runtime selections.",
      "count": 2,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "vo-reference-ren",
      "category": "Voice / reference",
      "name": "Ren original voice reference",
      "trigger": "Casting / continuity reference",
      "status": "reference-only",
      "sourceType": "Historical VO mashup and still-image video",
      "currentSource": "assets/library/mashup-ren.mp3",
      "preview": "assets/library/mashup-ren.mp3",
      "previewFiles": [
        "assets/library/reference-ren.mp4"
      ],
      "evidence": [
        "assets/library/manifest.json",
        "scripts/sound-library.py:108"
      ],
      "notes": "Preserved reference; contains a mix of clips and does not establish current runtime selections.",
      "count": 2,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "vo-reference-sora",
      "category": "Voice / reference",
      "name": "Sora original voice reference",
      "trigger": "Casting / continuity reference",
      "status": "reference-only",
      "sourceType": "Historical VO mashup and still-image video",
      "currentSource": "assets/library/mashup-sora.mp3",
      "preview": "assets/library/mashup-sora.mp3",
      "previewFiles": [
        "assets/library/reference-sora.mp4"
      ],
      "evidence": [
        "assets/library/manifest.json",
        "scripts/sound-library.py:108"
      ],
      "notes": "Preserved reference; contains a mix of clips and does not establish current runtime selections.",
      "count": 2,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "vo-reference-yui",
      "category": "Voice / reference",
      "name": "Yui original voice reference",
      "trigger": "Casting / continuity reference",
      "status": "reference-only",
      "sourceType": "Historical VO mashup and still-image video",
      "currentSource": "assets/library/mashup-yui.mp3",
      "preview": "assets/library/mashup-yui.mp3",
      "previewFiles": [
        "assets/library/reference-yui.mp4"
      ],
      "evidence": [
        "assets/library/manifest.json",
        "scripts/sound-library.py:108"
      ],
      "notes": "Preserved reference; contains a mix of clips and does not establish current runtime selections.",
      "count": 2,
      "work": "reference",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-dash",
      "category": "Voice / runtime",
      "name": "Kaito - Flash Step",
      "trigger": "Flash Step",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_dash.mp3, assets/vo/kaito_dash2.mp3, assets/vo/kaito_dash3.mp3, assets/vo/kaito_dash4.mp3",
      "preview": "assets/vo/kaito_dash.mp3",
      "previewFiles": [
        "assets/vo/kaito_dash2.mp3",
        "assets/vo/kaito_dash3.mp3",
        "assets/vo/kaito_dash4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2543",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Rate limited to 2.6s; never ducks the music. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "kaito_dash1",
        "kaito_dash2",
        "kaito_dash3",
        "kaito_dash4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-death",
      "category": "Voice / runtime",
      "name": "Kaito - Expelled",
      "trigger": "Expelled",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_death.mp3, assets/vo/kaito_death2.mp3, assets/vo/kaito_death3.mp3, assets/vo/kaito_death4.mp3, assets/vo/kaito_death5.mp3",
      "preview": "assets/vo/kaito_death.mp3",
      "previewFiles": [
        "assets/vo/kaito_death2.mp3",
        "assets/vo/kaito_death3.mp3",
        "assets/vo/kaito_death4.mp3",
        "assets/vo/kaito_death5.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2656",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Plays into the death cinematic. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 5,
      "sourceStems": [
        "kaito_death1",
        "kaito_death2",
        "kaito_death3",
        "kaito_death4",
        "kaito_death5"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-domain",
      "category": "Voice / runtime",
      "name": "Kaito - Domain cast",
      "trigger": "Domain cast",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_domain.mp3, assets/vo/kaito_domain2.mp3, assets/vo/kaito_domain3.mp3, assets/vo/kaito_domain4.mp3",
      "preview": "assets/vo/kaito_domain.mp3",
      "previewFiles": [
        "assets/vo/kaito_domain2.mp3",
        "assets/vo/kaito_domain3.mp3",
        "assets/vo/kaito_domain4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2546",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Speaks as the caster, who during a link is not always the student on the floor. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "kaito_domain1",
        "kaito_domain2",
        "kaito_domain3",
        "kaito_domain4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-hurt",
      "category": "Voice / runtime",
      "name": "Kaito - Damage taken",
      "trigger": "Damage taken",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_hurt.mp3, assets/vo/kaito_hurt2.mp3",
      "preview": "assets/vo/kaito_hurt.mp3",
      "previewFiles": [
        "assets/vo/kaito_hurt2.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2512",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A bite of at least 8% of max HP, or the hit that crosses under a third. 5s apart, does not duck. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 2,
      "sourceStems": [
        "kaito_hurt1",
        "kaito_hurt2"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-win",
      "category": "Voice / runtime",
      "name": "Kaito - First Bell",
      "trigger": "First Bell",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_win.mp3, assets/vo/kaito_win2.mp3, assets/vo/kaito_win3.mp3",
      "preview": "assets/vo/kaito_win.mp3",
      "previewFiles": [
        "assets/vo/kaito_win2.mp3",
        "assets/vo/kaito_win3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The whole night survived; the finale only. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "kaito_win1",
        "kaito_win2",
        "kaito_win3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-dash",
      "category": "Voice / runtime",
      "name": "Ren - Flash Step",
      "trigger": "Flash Step",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_dash.mp3, assets/vo/ren_dash2.mp3, assets/vo/ren_dash3.mp3, assets/vo/ren_dash4.mp3",
      "preview": "assets/vo/ren_dash.mp3",
      "previewFiles": [
        "assets/vo/ren_dash2.mp3",
        "assets/vo/ren_dash3.mp3",
        "assets/vo/ren_dash4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2543",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Rate limited to 2.6s; never ducks the music. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_dash1",
        "ren_dash2",
        "ren_dash3",
        "ren_dash4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-death",
      "category": "Voice / runtime",
      "name": "Ren - Expelled",
      "trigger": "Expelled",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_death.mp3, assets/vo/ren_death2.mp3, assets/vo/ren_death3.mp3, assets/vo/ren_death4.mp3",
      "preview": "assets/vo/ren_death.mp3",
      "previewFiles": [
        "assets/vo/ren_death2.mp3",
        "assets/vo/ren_death3.mp3",
        "assets/vo/ren_death4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2656",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Plays into the death cinematic. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_death1",
        "ren_death2",
        "ren_death3",
        "ren_death4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-domain",
      "category": "Voice / runtime",
      "name": "Ren - Domain cast",
      "trigger": "Domain cast",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_domain.mp3, assets/vo/ren_domain2.mp3, assets/vo/ren_domain3.mp3, assets/vo/ren_domain4.mp3, assets/vo/ren_domain5.mp3, assets/vo/ren_domain6.mp3, assets/vo/ren_domain7.mp3, assets/vo/ren_domain8.mp3",
      "preview": "assets/vo/ren_domain.mp3",
      "previewFiles": [
        "assets/vo/ren_domain2.mp3",
        "assets/vo/ren_domain3.mp3",
        "assets/vo/ren_domain4.mp3",
        "assets/vo/ren_domain5.mp3",
        "assets/vo/ren_domain6.mp3",
        "assets/vo/ren_domain7.mp3",
        "assets/vo/ren_domain8.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2546",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Speaks as the caster, who during a link is not always the student on the floor. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 8,
      "sourceStems": [
        "ren_domain1",
        "ren_domain2",
        "ren_domain3",
        "ren_domain4",
        "ren_domain5",
        "ren_domain6",
        "ren_domain7",
        "ren_domain8"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-win",
      "category": "Voice / runtime",
      "name": "Ren - First Bell",
      "trigger": "First Bell",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_win.mp3, assets/vo/ren_win2.mp3, assets/vo/ren_win3.mp3",
      "preview": "assets/vo/ren_win.mp3",
      "previewFiles": [
        "assets/vo/ren_win2.mp3",
        "assets/vo/ren_win3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The whole night survived; the finale only. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "ren_win1",
        "ren_win2",
        "ren_win3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-dash",
      "category": "Voice / runtime",
      "name": "Sora - Flash Step",
      "trigger": "Flash Step",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_dash.mp3, assets/vo/sora_dash2.mp3, assets/vo/sora_dash3.mp3, assets/vo/sora_dash4.mp3, assets/vo/sora_dash5.mp3",
      "preview": "assets/vo/sora_dash.mp3",
      "previewFiles": [
        "assets/vo/sora_dash2.mp3",
        "assets/vo/sora_dash3.mp3",
        "assets/vo/sora_dash4.mp3",
        "assets/vo/sora_dash5.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2543",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Rate limited to 2.6s; never ducks the music. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 5,
      "sourceStems": [
        "sora_dash1",
        "sora_dash2",
        "sora_dash3",
        "sora_dash4",
        "sora_dash5"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-death",
      "category": "Voice / runtime",
      "name": "Sora - Expelled",
      "trigger": "Expelled",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_death.mp3, assets/vo/sora_death2.mp3, assets/vo/sora_death3.mp3, assets/vo/sora_death4.mp3, assets/vo/sora_death5.mp3, assets/vo/sora_death6.mp3",
      "preview": "assets/vo/sora_death.mp3",
      "previewFiles": [
        "assets/vo/sora_death2.mp3",
        "assets/vo/sora_death3.mp3",
        "assets/vo/sora_death4.mp3",
        "assets/vo/sora_death5.mp3",
        "assets/vo/sora_death6.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2656",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Plays into the death cinematic. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 6,
      "sourceStems": [
        "sora_death1",
        "sora_death2",
        "sora_death3",
        "sora_death4",
        "sora_death5",
        "sora_death6"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-domain",
      "category": "Voice / runtime",
      "name": "Sora - Domain cast",
      "trigger": "Domain cast",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_domain.mp3, assets/vo/sora_domain2.mp3, assets/vo/sora_domain3.mp3, assets/vo/sora_domain4.mp3",
      "preview": "assets/vo/sora_domain.mp3",
      "previewFiles": [
        "assets/vo/sora_domain2.mp3",
        "assets/vo/sora_domain3.mp3",
        "assets/vo/sora_domain4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2546",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Speaks as the caster, who during a link is not always the student on the floor. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "sora_domain1",
        "sora_domain2",
        "sora_domain3",
        "sora_domain4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-heal",
      "category": "Voice / runtime",
      "name": "Sora - Heart pickup or Vitality",
      "trigger": "Heart pickup or Vitality",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_heal.mp3, assets/vo/sora_heal2.mp3, assets/vo/sora_heal3.mp3, assets/vo/sora_heal4.mp3, assets/vo/sora_heal5.mp3, assets/vo/sora_heal6.mp3, assets/vo/sora_heal7.mp3",
      "preview": "assets/vo/sora_heal.mp3",
      "previewFiles": [
        "assets/vo/sora_heal2.mp3",
        "assets/vo/sora_heal3.mp3",
        "assets/vo/sora_heal4.mp3",
        "assets/vo/sora_heal5.mp3",
        "assets/vo/sora_heal6.mp3",
        "assets/vo/sora_heal7.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2408",
        "src/game.js:2523",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A heart off the ground and the Vitality card share the read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 7,
      "sourceStems": [
        "sora_heal1",
        "sora_heal2",
        "sora_heal3",
        "sora_heal4",
        "sora_heal5",
        "sora_heal6",
        "sora_heal7"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-hurt",
      "category": "Voice / runtime",
      "name": "Sora - Damage taken",
      "trigger": "Damage taken",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_hurt.mp3, assets/vo/sora_hurt2.mp3, assets/vo/sora_hurt3.mp3, assets/vo/sora_hurt4.mp3",
      "preview": "assets/vo/sora_hurt.mp3",
      "previewFiles": [
        "assets/vo/sora_hurt2.mp3",
        "assets/vo/sora_hurt3.mp3",
        "assets/vo/sora_hurt4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2512",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A bite of at least 8% of max HP, or the hit that crosses under a third. 5s apart, does not duck. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "sora_hurt1",
        "sora_hurt2",
        "sora_hurt3",
        "sora_hurt4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-win",
      "category": "Voice / runtime",
      "name": "Sora - First Bell",
      "trigger": "First Bell",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_win.mp3, assets/vo/sora_win2.mp3, assets/vo/sora_win3.mp3",
      "preview": "assets/vo/sora_win.mp3",
      "previewFiles": [
        "assets/vo/sora_win2.mp3",
        "assets/vo/sora_win3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The whole night survived; the finale only. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "sora_win1",
        "sora_win2",
        "sora_win3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-death",
      "category": "Voice / runtime",
      "name": "Yui - Expelled",
      "trigger": "Expelled",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_death.mp3, assets/vo/yui_death2.mp3, assets/vo/yui_death3.mp3, assets/vo/yui_death4.mp3, assets/vo/yui_death5.mp3",
      "preview": "assets/vo/yui_death.mp3",
      "previewFiles": [
        "assets/vo/yui_death2.mp3",
        "assets/vo/yui_death3.mp3",
        "assets/vo/yui_death4.mp3",
        "assets/vo/yui_death5.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2656",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Plays into the death cinematic. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 5,
      "sourceStems": [
        "yui_death1",
        "yui_death2",
        "yui_death3",
        "yui_death4",
        "yui_death5"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-domain",
      "category": "Voice / runtime",
      "name": "Yui - Domain cast",
      "trigger": "Domain cast",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_domain.mp3, assets/vo/yui_domain2.mp3, assets/vo/yui_domain3.mp3, assets/vo/yui_domain4.mp3, assets/vo/yui_domain5.mp3",
      "preview": "assets/vo/yui_domain.mp3",
      "previewFiles": [
        "assets/vo/yui_domain2.mp3",
        "assets/vo/yui_domain3.mp3",
        "assets/vo/yui_domain4.mp3",
        "assets/vo/yui_domain5.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2546",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Speaks as the caster, who during a link is not always the student on the floor. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 5,
      "sourceStems": [
        "yui_domain1",
        "yui_domain2",
        "yui_domain3",
        "yui_domain4",
        "yui_domain5"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-win",
      "category": "Voice / runtime",
      "name": "Yui - First Bell",
      "trigger": "First Bell",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_win.mp3, assets/vo/yui_win2.mp3, assets/vo/yui_win3.mp3",
      "preview": "assets/vo/yui_win.mp3",
      "previewFiles": [
        "assets/vo/yui_win2.mp3",
        "assets/vo/yui_win3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The whole night survived; the finale only. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "yui_win1",
        "yui_win2",
        "yui_win3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "special.backdraft",
      "category": "Specials",
      "name": "Ren: Backdraft cast",
      "trigger": "elective event id backdraft",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'backdraft')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Ren's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A short air-pressure intake and dry flame ignition.",
      "duration": "0.1–0.4 s",
      "variants": 3,
      "search": "air punch; body blow; flame ignition",
      "prompt": "One isolated supernatural anime battle game sound effect: A short air-pressure intake and dry flame ignition. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/elective-backdraft.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.backdraft.release",
      "category": "Specials",
      "name": "Ren: Backdraft release",
      "trigger": "backdraftHit event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('secondaryImpact', 'backdraft')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Ren's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A heavy forward body blow with a compressed-air crack and tight flame rush.",
      "duration": "0.15–0.4 s",
      "variants": 3,
      "search": "air punch; body blow; flame ignition",
      "prompt": "One isolated supernatural anime battle game sound effect: A heavy forward body blow with a compressed-air crack and tight flame rush. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/secondaryImpact-backdraft.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.binding_stitch",
      "category": "Specials",
      "name": "Yui: Binding Stitch cast",
      "trigger": "elective event id binding_stitch",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'binding_stitch')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Yui's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A precise needle flick with taut metallic filament tension.",
      "duration": "0.1–0.4 s",
      "variants": 3,
      "search": "wire snap; needle flick; razor shear",
      "prompt": "One isolated supernatural anime battle game sound effect: A precise needle flick with taut metallic filament tension. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/elective-binding_stitch.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.binding_stitch.release",
      "category": "Specials",
      "name": "Yui: Binding Stitch release",
      "trigger": "stitchSnap event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('secondaryImpact', 'binding_stitch')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Yui's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A dry wire snap and razor shear; a compact hit that can represent several simultaneous targets.",
      "duration": "0.15–0.4 s",
      "variants": 3,
      "search": "wire snap; needle flick; razor shear",
      "prompt": "One isolated supernatural anime battle game sound effect: A dry wire snap and razor shear; a compact hit that can represent several simultaneous targets. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/secondaryImpact-binding_stitch.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.dead_zone",
      "category": "Specials",
      "name": "Kaito: Dead Zone cast",
      "trigger": "elective event id dead_zone",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'dead_zone')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Kaito's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A low inward vacuum pull with electrical grain.",
      "duration": "0.1–0.4 s",
      "variants": 3,
      "search": "vacuum suction; electrical collapse; thunder crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A low inward vacuum pull with electrical grain. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/elective-dead_zone.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.dead_zone.release",
      "category": "Specials",
      "name": "Kaito: Dead Zone release",
      "trigger": "voidBurst event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('secondaryImpact', 'dead_zone')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Kaito's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A brief pressure collapse followed by an electrical thunder crack.",
      "duration": "0.15–0.4 s",
      "variants": 3,
      "search": "vacuum suction; electrical collapse; thunder crack",
      "prompt": "One isolated supernatural anime battle game sound effect: A brief pressure collapse followed by an electrical thunder crack. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/secondaryImpact-dead_zone.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.curtain_call",
      "category": "Specials",
      "name": "Sora: Curtain Call cast",
      "trigger": "elective event id curtain_call",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('elective', 'curtain_call')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Sora's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A fast dry paper slip and close air cut.",
      "duration": "0.1–0.4 s",
      "variants": 3,
      "search": "paper tear; paper flick; slicing air",
      "prompt": "One isolated supernatural anime battle game sound effect: A fast dry paper slip and close air cut. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/elective-curtain_call.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "special.curtain_call.release",
      "category": "Specials",
      "name": "Sora: Curtain Call release",
      "trigger": "curtainBurst event",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('secondaryImpact', 'curtain_call')",
      "evidence": [
        "src/combat-audio.js",
        "src/game.js:2446",
        "src/secondary-combat.js"
      ],
      "notes": "Wired locally for Sora's signature secondary. Distinct cast and release; shared voice limits and directional placement. Procedural first pass for playthrough review.",
      "work": "replace",
      "priority": "P2",
      "brief": "A radial tearing-paper burst with sharp talisman flicks and a tight air impact.",
      "duration": "0.15–0.4 s",
      "variants": 3,
      "search": "paper tear; paper flick; slicing air",
      "prompt": "One isolated supernatural anime battle game sound effect: A radial tearing-paper burst with sharp talisman flicks and a tight air impact. Strong physical transient, audible midrange detail, controlled decay and a clean end. No music, speech, melodic chimes, comic pitch slides or background ambience.",
      "preview": "assets/library/runtime-secondaries-510b384b/secondaryImpact-curtain_call.mp3",
      "previewNote": "Current procedural recipe captured through the production WebAudio path at 35e7387 + hero secondaries; mono isolated reference, not a recorded replacement or listening approval."
    },
    {
      "id": "crew.ren-yui.threadbreaker",
      "category": "Specials",
      "name": "Ren + Yui: Threadbreaker",
      "trigger": "crewLink event after an eligible Binding Stitch-to-Ren tag",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('crewLink', 'ren-yui')",
      "runtimeRecipe": {
        "kind": "crewLink",
        "id": "ren-yui"
      },
      "evidence": [
        "src/crew-link.js: strikeCrewLink",
        "src/game.js: _dispatchEvents crewLink",
        "src/combat-audio.js: combatRecipe crewLink"
      ],
      "notes": "Added 2026-09-21. Authored WebAudio noise and tone layers: brief thread tension, a sharp air cut and a low impact. One cue replaces ordinary tag, hit and small-kill accents for this event batch. A simultaneous Janitor seal break shares the link impact; a boss death keeps its own defeat presentation. No recorded dialogue or standalone preview has been produced for this cue.",
      "work": "replace",
      "priority": "P2",
      "brief": "Fine taut thread tension snaps into a forceful close-range anime punch. One clear impact with a tight warm tail; leave the music readable.",
      "duration": "0.25–0.4 s",
      "variants": 3,
      "search": "thread tension snap; anime punch; energy impact"
    },
    {
      "id": "boss.janitor.seal-break",
      "category": "Bosses",
      "name": "Janitor: seal break",
      "trigger": "janitorBreak event after a deliberate Special or Threadbreaker interrupts the exposed sweep seal",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('bossBreak', 'janitor')",
      "runtimeRecipe": {
        "kind": "bossBreak",
        "id": "janitor"
      },
      "evidence": [
        "src/boss-encounter.js: tryBreakJanitor",
        "src/game.js: _dispatchEvents janitorBreak",
        "src/combat-audio.js: combatRecipe bossBreak"
      ],
      "notes": "Added 2026-09-21. Authored WebAudio fracture noise with a short falling low tone. Suppressed when Threadbreaker already owns the impact or the boss dies in the same event batch. No generated asset, boss spoken line or standalone preview has been produced for this cue.",
      "work": "replace",
      "priority": "P2",
      "brief": "A compact supernatural seal fracture with a dry material crack and brief low resonance. The sound should clearly reward interrupting the boss without resembling an entrance crash.",
      "duration": "0.2–0.35 s",
      "variants": 3,
      "search": "magic seal break; material crack; anime counter impact"
    },
    {
      "id": "environment.library.falling-stacks",
      "category": "Environment",
      "name": "Library: Falling Stacks",
      "trigger": "schoolFixtureStacks event after a deliberate aim-and-fire hold on the marked shelf",
      "status": "in-game",
      "sourceType": "procedural",
      "currentSource": "src/combat-audio.js: combatRecipe('fallingStacks', 'library')",
      "runtimeRecipe": {
        "kind": "fallingStacks",
        "id": "library"
      },
      "evidence": [
        "src/school-fixture.js: stepStacks",
        "src/game.js: _dispatchEvents schoolFixtureStacks",
        "src/combat-audio.js: combatRecipe fallingStacks"
      ],
      "notes": "Added 2026-09-28. One short wooden thump and two paper accents, spatially positioned at the shelf. Three bounded voices end within 0.3s; pause cancels delayed audio. No generated asset or standalone recorded audition; listen in a fresh Library run.",
      "work": "review",
      "priority": "P2"
    },
    {
      "id": "vo-live-ren-hurt",
      "category": "Voice / runtime",
      "name": "Ren - Damage taken",
      "trigger": "Damage taken",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_hurt.mp3, assets/vo/ren_hurt2.mp3, assets/vo/ren_hurt3.mp3, assets/vo/ren_hurt4.mp3",
      "preview": "assets/vo/ren_hurt.mp3",
      "previewFiles": [
        "assets/vo/ren_hurt2.mp3",
        "assets/vo/ren_hurt3.mp3",
        "assets/vo/ren_hurt4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2512",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A bite of at least 8% of max HP, or the hit that crosses under a third. 5s apart, does not duck. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_hurt1",
        "ren_hurt2",
        "ren_hurt3",
        "ren_hurt4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-tag",
      "category": "Voice / runtime",
      "name": "Ren - Student tagged in",
      "trigger": "Student tagged in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_tag.mp3, assets/vo/ren_tag2.mp3, assets/vo/ren_tag3.mp3, assets/vo/ren_tag4.mp3, assets/vo/ren_tag5.mp3, assets/vo/ren_tag6.mp3",
      "preview": "assets/vo/ren_tag.mp3",
      "previewFiles": [
        "assets/vo/ren_tag2.mp3",
        "assets/vo/ren_tag3.mp3",
        "assets/vo/ren_tag4.mp3",
        "assets/vo/ren_tag5.mp3",
        "assets/vo/ren_tag6.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2311",
        "src/game.js:2653",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Party tag and the forced swap both speak; a knockout swap stays silent. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 6,
      "sourceStems": [
        "ren_tag1",
        "ren_tag2",
        "ren_tag3",
        "ren_tag4",
        "ren_tag5",
        "ren_tag6"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-heal",
      "category": "Voice / runtime",
      "name": "Ren - Heart pickup or Vitality",
      "trigger": "Heart pickup or Vitality",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_heal.mp3, assets/vo/ren_heal2.mp3, assets/vo/ren_heal3.mp3",
      "preview": "assets/vo/ren_heal.mp3",
      "previewFiles": [
        "assets/vo/ren_heal2.mp3",
        "assets/vo/ren_heal3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2408",
        "src/game.js:2523",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A heart off the ground and the Vitality card share the read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "ren_heal1",
        "ren_heal2",
        "ren_heal3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-bosskill",
      "category": "Voice / runtime",
      "name": "Ren - Boss defeated",
      "trigger": "Boss defeated",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_bosskill.mp3, assets/vo/ren_bosskill2.mp3, assets/vo/ren_bosskill3.mp3, assets/vo/ren_bosskill4.mp3",
      "preview": "assets/vo/ren_bosskill.mp3",
      "previewFiles": [
        "assets/vo/ren_bosskill2.mp3",
        "assets/vo/ren_bosskill3.mp3",
        "assets/vo/ren_bosskill4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2562",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The last boss of an overlapping fight only, and never the kill that ends the night: that one belongs to the win read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_bosskill1",
        "ren_bosskill2",
        "ren_bosskill3",
        "ren_bosskill4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-bell",
      "category": "Voice / runtime",
      "name": "Ren - Hour or period cleared",
      "trigger": "Hour or period cleared",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_bell.mp3, assets/vo/ren_bell2.mp3, assets/vo/ren_bell3.mp3, assets/vo/ren_bell4.mp3",
      "preview": "assets/vo/ren_bell.mp3",
      "previewFiles": [
        "assets/vo/ren_bell2.mp3",
        "assets/vo/ren_bell3.mp3",
        "assets/vo/ren_bell4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The night goes on. Shares the win cue slot 0.95s after the bell. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_bell1",
        "ren_bell2",
        "ren_bell3",
        "ren_bell4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-dash",
      "category": "Voice / runtime",
      "name": "Yui - Flash Step",
      "trigger": "Flash Step",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_dash.mp3, assets/vo/yui_dash2.mp3",
      "preview": "assets/vo/yui_dash.mp3",
      "previewFiles": [
        "assets/vo/yui_dash2.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2543",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Rate limited to 2.6s; never ducks the music. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 2,
      "sourceStems": [
        "yui_dash1",
        "yui_dash2"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-hurt",
      "category": "Voice / runtime",
      "name": "Yui - Damage taken",
      "trigger": "Damage taken",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_hurt.mp3, assets/vo/yui_hurt2.mp3, assets/vo/yui_hurt3.mp3, assets/vo/yui_hurt4.mp3",
      "preview": "assets/vo/yui_hurt.mp3",
      "previewFiles": [
        "assets/vo/yui_hurt2.mp3",
        "assets/vo/yui_hurt3.mp3",
        "assets/vo/yui_hurt4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2512",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A bite of at least 8% of max HP, or the hit that crosses under a third. 5s apart, does not duck. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "yui_hurt1",
        "yui_hurt2",
        "yui_hurt3",
        "yui_hurt4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-tag",
      "category": "Voice / runtime",
      "name": "Yui - Student tagged in",
      "trigger": "Student tagged in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_tag.mp3, assets/vo/yui_tag2.mp3, assets/vo/yui_tag3.mp3, assets/vo/yui_tag4.mp3",
      "preview": "assets/vo/yui_tag.mp3",
      "previewFiles": [
        "assets/vo/yui_tag2.mp3",
        "assets/vo/yui_tag3.mp3",
        "assets/vo/yui_tag4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2311",
        "src/game.js:2653",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Party tag and the forced swap both speak; a knockout swap stays silent. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "yui_tag1",
        "yui_tag2",
        "yui_tag3",
        "yui_tag4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-heal",
      "category": "Voice / runtime",
      "name": "Yui - Heart pickup or Vitality",
      "trigger": "Heart pickup or Vitality",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_heal.mp3, assets/vo/yui_heal2.mp3",
      "preview": "assets/vo/yui_heal.mp3",
      "previewFiles": [
        "assets/vo/yui_heal2.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2408",
        "src/game.js:2523",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A heart off the ground and the Vitality card share the read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 2,
      "sourceStems": [
        "yui_heal1",
        "yui_heal2"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-bosskill",
      "category": "Voice / runtime",
      "name": "Yui - Boss defeated",
      "trigger": "Boss defeated",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_bosskill.mp3, assets/vo/yui_bosskill2.mp3, assets/vo/yui_bosskill3.mp3, assets/vo/yui_bosskill4.mp3",
      "preview": "assets/vo/yui_bosskill.mp3",
      "previewFiles": [
        "assets/vo/yui_bosskill2.mp3",
        "assets/vo/yui_bosskill3.mp3",
        "assets/vo/yui_bosskill4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2562",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The last boss of an overlapping fight only, and never the kill that ends the night: that one belongs to the win read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "yui_bosskill1",
        "yui_bosskill2",
        "yui_bosskill3",
        "yui_bosskill4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-bell",
      "category": "Voice / runtime",
      "name": "Yui - Hour or period cleared",
      "trigger": "Hour or period cleared",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_bell.mp3, assets/vo/yui_bell2.mp3, assets/vo/yui_bell3.mp3",
      "preview": "assets/vo/yui_bell.mp3",
      "previewFiles": [
        "assets/vo/yui_bell2.mp3",
        "assets/vo/yui_bell3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The night goes on. Shares the win cue slot 0.95s after the bell. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "yui_bell1",
        "yui_bell2",
        "yui_bell3"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-tag",
      "category": "Voice / runtime",
      "name": "Kaito - Student tagged in",
      "trigger": "Student tagged in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_tag.mp3, assets/vo/kaito_tag2.mp3, assets/vo/kaito_tag3.mp3, assets/vo/kaito_tag4.mp3, assets/vo/kaito_tag5.mp3",
      "preview": "assets/vo/kaito_tag.mp3",
      "previewFiles": [
        "assets/vo/kaito_tag2.mp3",
        "assets/vo/kaito_tag3.mp3",
        "assets/vo/kaito_tag4.mp3",
        "assets/vo/kaito_tag5.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2311",
        "src/game.js:2653",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Party tag and the forced swap both speak; a knockout swap stays silent. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 5,
      "sourceStems": [
        "kaito_tag1",
        "kaito_tag2",
        "kaito_tag3",
        "kaito_tag4",
        "kaito_tag5"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-heal",
      "category": "Voice / runtime",
      "name": "Kaito - Heart pickup or Vitality",
      "trigger": "Heart pickup or Vitality",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_heal.mp3",
      "preview": "assets/vo/kaito_heal.mp3",
      "previewFiles": [],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2408",
        "src/game.js:2523",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. A heart off the ground and the Vitality card share the read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 1,
      "sourceStems": [
        "kaito_heal1"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-bosskill",
      "category": "Voice / runtime",
      "name": "Kaito - Boss defeated",
      "trigger": "Boss defeated",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_bosskill.mp3, assets/vo/kaito_bosskill2.mp3, assets/vo/kaito_bosskill3.mp3, assets/vo/kaito_bosskill4.mp3",
      "preview": "assets/vo/kaito_bosskill.mp3",
      "previewFiles": [
        "assets/vo/kaito_bosskill2.mp3",
        "assets/vo/kaito_bosskill3.mp3",
        "assets/vo/kaito_bosskill4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2562",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The last boss of an overlapping fight only, and never the kill that ends the night: that one belongs to the win read. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "kaito_bosskill1",
        "kaito_bosskill2",
        "kaito_bosskill3",
        "kaito_bosskill4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-bell",
      "category": "Voice / runtime",
      "name": "Kaito - Hour or period cleared",
      "trigger": "Hour or period cleared",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_bell.mp3, assets/vo/kaito_bell2.mp3, assets/vo/kaito_bell3.mp3, assets/vo/kaito_bell4.mp3",
      "preview": "assets/vo/kaito_bell.mp3",
      "previewFiles": [
        "assets/vo/kaito_bell2.mp3",
        "assets/vo/kaito_bell3.mp3",
        "assets/vo/kaito_bell4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The night goes on. Shares the win cue slot 0.95s after the bell. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "kaito_bell1",
        "kaito_bell2",
        "kaito_bell3",
        "kaito_bell4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-tag",
      "category": "Voice / runtime",
      "name": "Sora - Student tagged in",
      "trigger": "Student tagged in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_tag.mp3, assets/vo/sora_tag2.mp3, assets/vo/sora_tag3.mp3, assets/vo/sora_tag4.mp3",
      "preview": "assets/vo/sora_tag.mp3",
      "previewFiles": [
        "assets/vo/sora_tag2.mp3",
        "assets/vo/sora_tag3.mp3",
        "assets/vo/sora_tag4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:2311",
        "src/game.js:2653",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Party tag and the forced swap both speak; a knockout swap stays silent. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "sora_tag1",
        "sora_tag2",
        "sora_tag3",
        "sora_tag4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-bell",
      "category": "Voice / runtime",
      "name": "Sora - Hour or period cleared",
      "trigger": "Hour or period cleared",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_bell.mp3, assets/vo/sora_bell2.mp3, assets/vo/sora_bell3.mp3, assets/vo/sora_bell4.mp3",
      "preview": "assets/vo/sora_bell.mp3",
      "previewFiles": [
        "assets/vo/sora_bell2.mp3",
        "assets/vo/sora_bell3.mp3",
        "assets/vo/sora_bell4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1989",
        "src/game.js:2962",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. The night goes on. Shares the win cue slot 0.95s after the bell. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "sora_bell1",
        "sora_bell2",
        "sora_bell3",
        "sora_bell4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-ren-entry",
      "category": "Voice / runtime",
      "name": "Ren - The club walks in",
      "trigger": "The club walks in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Harry - Fierce Warrior)",
      "currentSource": "assets/vo/ren_entry.mp3, assets/vo/ren_entry2.mp3, assets/vo/ren_entry3.mp3, assets/vo/ren_entry4.mp3",
      "preview": "assets/vo/ren_entry.mp3",
      "previewFiles": [
        "assets/vo/ren_entry2.mp3",
        "assets/vo/ren_entry3.mp3",
        "assets/vo/ren_entry4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1232",
        "src/game.js:1841",
        "src/game.js:2890",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Once per room, 1.1s after the arrival card so the line is not fighting the sting. Plays over a card, so it may breathe. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "ren_entry1",
        "ren_entry2",
        "ren_entry3",
        "ren_entry4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-yui-entry",
      "category": "Voice / runtime",
      "name": "Yui - The club walks in",
      "trigger": "The club walks in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Zoe - Playful and Arrogant Magician)",
      "currentSource": "assets/vo/yui_entry.mp3, assets/vo/yui_entry2.mp3, assets/vo/yui_entry3.mp3, assets/vo/yui_entry4.mp3",
      "preview": "assets/vo/yui_entry.mp3",
      "previewFiles": [
        "assets/vo/yui_entry2.mp3",
        "assets/vo/yui_entry3.mp3",
        "assets/vo/yui_entry4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1232",
        "src/game.js:1841",
        "src/game.js:2890",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Once per room, 1.1s after the arrival card so the line is not fighting the sting. Plays over a card, so it may breathe. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "yui_entry1",
        "yui_entry2",
        "yui_entry3",
        "yui_entry4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-kaito-entry",
      "category": "Voice / runtime",
      "name": "Kaito - The club walks in",
      "trigger": "The club walks in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Austin - Timid and casual)",
      "currentSource": "assets/vo/kaito_entry.mp3, assets/vo/kaito_entry2.mp3, assets/vo/kaito_entry3.mp3, assets/vo/kaito_entry4.mp3",
      "preview": "assets/vo/kaito_entry.mp3",
      "previewFiles": [
        "assets/vo/kaito_entry2.mp3",
        "assets/vo/kaito_entry3.mp3",
        "assets/vo/kaito_entry4.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1232",
        "src/game.js:1841",
        "src/game.js:2890",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Once per room, 1.1s after the arrival card so the line is not fighting the sting. Plays over a card, so it may breathe. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 4,
      "sourceStems": [
        "kaito_entry1",
        "kaito_entry2",
        "kaito_entry3",
        "kaito_entry4"
      ],
      "work": "keep",
      "priority": ""
    },
    {
      "id": "vo-live-sora-entry",
      "category": "Voice / runtime",
      "name": "Sora - The club walks in",
      "trigger": "The club walks in",
      "status": "in-game",
      "sourceType": "ElevenLabs library voice (the locked cast: Tilly - Bright, Spirited, Naive, Scrappy)",
      "currentSource": "assets/vo/sora_entry.mp3, assets/vo/sora_entry2.mp3, assets/vo/sora_entry3.mp3",
      "preview": "assets/vo/sora_entry.mp3",
      "previewFiles": [
        "assets/vo/sora_entry2.mp3",
        "assets/vo/sora_entry3.mp3"
      ],
      "evidence": [
        "src/audio.js:19",
        "src/audio.js:27",
        "src/audio.js:120",
        "src/audio.js:426",
        "src/audio.js:462",
        "src/game.js:1232",
        "src/game.js:1841",
        "src/game.js:2890",
        "scripts/cast-vo.py",
        "scripts/voice-cast.json"
      ],
      "notes": "Shipped playback files, loaded and dispatched. Once per room, 1.1s after the arrival card so the line is not fighting the sting. Plays over a card, so it may breathe. vo() rolls between the base read and the alternates that are decoded, so the line never repeats back to back.",
      "count": 3,
      "sourceStems": [
        "sora_entry1",
        "sora_entry2",
        "sora_entry3"
      ],
      "work": "keep",
      "priority": ""
    }
  ],
  "auditionBatches": [
    {
      "id": "anime-20260916",
      "name": "Anime battle auditions",
      "date": "2026-09-16",
      "prompts": "assets/library/anime-audition-prompts.json",
      "provenance": "assets/library/auditions/anime-20260916/provenance.json",
      "styles": [
        {
          "id": "blade",
          "name": "Blade & Breath",
          "brief": "Dry anime foley: fine material detail and sculpted air. Close, warm, precise."
        },
        {
          "id": "curse",
          "name": "Cursed Resonance",
          "brief": "Occult anime: inward suction, hollow overtones, soft spectral decay. Eerie."
        },
        {
          "id": "kinetic",
          "name": "Kinetic Energy",
          "brief": "Battle anime: energized sweep, tight midrange pulse, smooth low punch. Agile."
        }
      ],
      "note": "81 takes for 27 cues. All proposed non-vocal roles covered. Source auditions only; runtime files unchanged. Level matched among this batch, not against older references."
    }
  ]
}
