audio_start_music already wraps its work in try/catch and returns 0 on failure (src/audio.eigs), so a runtime lacking the audio_music_* builtins degrades gracefully. audio_game_init (src/audio.eigs:39, called bare at tidepool.eigs:144) does not — on a runtime without the SFX builtins it would throw and take down startup, an asymmetry with the music path.
Fix: give audio_game_init the same defensive try/catch (return gracefully on failure) so the game still runs (silently) without audio, mirroring audio_start_music.
Acceptance: with audio builtins present, SFX still initialize; a missing builtin can't crash startup; make test green.
Low severity (the pinned runtime has audio), but good defensive symmetry. See CONTRIBUTING.md.
audio_start_musicalready wraps its work intry/catchand returns 0 on failure (src/audio.eigs), so a runtime lacking theaudio_music_*builtins degrades gracefully.audio_game_init(src/audio.eigs:39, called bare attidepool.eigs:144) does not — on a runtime without the SFX builtins it would throw and take down startup, an asymmetry with the music path.Fix: give
audio_game_initthe same defensivetry/catch(return gracefully on failure) so the game still runs (silently) without audio, mirroringaudio_start_music.Acceptance: with audio builtins present, SFX still initialize; a missing builtin can't crash startup;
make testgreen.Low severity (the pinned runtime has audio), but good defensive symmetry. See CONTRIBUTING.md.