• docs/superpowers/specs/2026-07-08-syncmoo1-sfx-audio-design.md

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jul 9 01:55:11 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5b22fcff57fe8acdd12ae0ab
    Modified Files:
    docs/superpowers/specs/2026-07-08-syncmoo1-sfx-audio-design.md
    Log Message:
    syncmoo1: spec -- fix the s_ rationale, flag the transcode-version gap

    Two corrections to the SFX audio spec, both found by checking what the
    other doors actually do rather than assuming.

    The spec claimed the "s_" prefix keeps the sfx and music namespaces from aliasing. It does not, and nothing needs to: cache_name() already
    separates them by sub-directory (<prefix>/sfx/<leaf> vs
    <prefix>/music/<key>). The prefix is a legibility tag, which is what SyncDuke's own comment says of its "<trackname>_<hash>" scheme -- "the
    name just makes the cache files readable". Keep "s_", drop the false
    reason.

    More usefully: termgfx does not ship our VOC verbatim. sfx_store_bytes() transcodes it to an 8-bit WAV, so s_<hash> names the SOURCE bytes, not
    the cached ones. Music already solved this -- mus_key() appends _v<MUS_RENDER_VER> so the name changes when the renderer does. SFX have
    no such tag. Harmless today, because every session re-Stores and the
    Store overwrites; it becomes a stale-audio bug the moment step 3 makes name-presence mean "skip the upload". Step 3 now says the leaf must gain
    its own transcode-version tag (s_<hash8>_v<n>, 13 chars, inside the
    16-byte bound termgfx enforces) before, or with, widening the C;L glob.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jul 9 01:55:11 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/01f7dea9c9e7fc2a8ca46204
    Modified Files:
    docs/superpowers/specs/2026-07-08-syncmoo1-sfx-audio-design.md
    Log Message:
    syncmoo1: spec -- repair the step-3 follow-on, state both preconditions

    The previous commit inserted the transcode-version note into the step-3
    heading and left the old sentence's tail orphaned: a paragraph beginning
    " Only safe once step 2 lands:" with no subject.

    Rewrite the section so it names both of step 3's preconditions, which are independent and easy to conflate:

    1. Step 2 must land first -- the C;L skip is name-presence, so it is
    only correct once SyncDOOM's and SyncDuke's SFX names are
    content-addressed rather than keyed on a WAD/GRP-dependent id.

    2. The SFX leaf must gain a transcode-version tag. termgfx Stores a
    WAV transcoded from our VOC, so s_<hash> names the source bytes and
    not the cached ones; music already appends _v<MUS_RENDER_VER> for
    exactly this reason.

    Docs only.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net