KN-86 Knamp Reliability Fixes
Objective
Section titled “Objective”Fix the four regressions found after the Knamp merge without changing the player’s public behavior or adding a second display backend.
Design
Section titled “Design”Fallback presentation
Section titled “Fallback presentation”--panic-screen will use the emulator host’s existing SDL lifecycle and
present_frame path. It will force screen-only presentation, render the fault
card, present it once, and poll SDL events until exit. This keeps the device on
the only live KMSDRM-capable path instead of calling the headless runtime
presentation stubs. A one-shot smoke action will exercise the same setup,
render, present, and teardown sequence under the dummy SDL video driver.
Station ring reset
Section titled “Station ring reset”Ring cursors remain monotonically increasing across track changes. The audio consumer will publish its new read cursor with compare-and-swap, so a callback that captured the outgoing track’s cursor cannot overwrite the reset cursor. The ring remains static and masked for bounded access. A test-only callback will let the station test pause the consumer immediately before its commit, perform a track change, and prove that the incoming track starts at its first sample.
Knamp launcher identity
Section titled “Knamp launcher identity”Launcher tables will use knamp as their lookup key while keeping
WAVAMPSTER and station player as the displayed name and purpose. The
Knamp icon remains the same tile under the new key. Lisp regressions will
assert all three lookups.
Warning hygiene
Section titled “Warning hygiene”The new comments will avoid embedded /* text so the shared manifest and
cartridge loader compile without the warnings introduced by this change.
Verification
Section titled “Verification”- Add a red test for each behavior before its implementation.
- Run the focused runtime, UI, and emulator smoke tests.
- Run the full runtime CTest suite, UI CTest suite, SDK tests, and the provisioning syntax check before opening the draft PR.