Skip to content

KN-86 Knamp Reliability Fixes

Fix the four regressions found after the Knamp merge without changing the player’s public behavior or adding a second display backend.

--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.

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.

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.

The new comments will avoid embedded /* text so the shared manifest and cartridge loader compile without the warnings introduced by this change.

  • 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.