• src/doors/syncdoom/README.md syncdoom.c xtrn/syncdoom/syncdoom.example

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jun 21 00:59:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/aca73d11b58ef35374d9da33
    Modified Files:
    src/doors/syncdoom/README.md syncdoom.c xtrn/syncdoom/syncdoom.example.ini
    Log Message:
    syncdoom: AIMD auto-depth controller, stable depth, lag relabel, cap 8

    Follow-up to dfd77154e. Live VPN testing showed the base-minus-penalty auto depth oscillating 4/5<->1 on a jittery link, and the depth-1 dips were a slideshow. Rework the controller and the supporting RTT measurement.

    - auto depth is now a delay-based AIMD controller with a dead-band and a rate
    limit (max_inflight is a pure getter; auto_depth_update runs per DSR report):
    probe up one when the round-trip is clean (<1.25x baseline), ease down when it
    queues, HOLD in between -> it SETTLES at the link's sustainable depth instead
    of hunting. Heavy queuing eases down (no longer slams to 1). Validated: holds
    high on a fat VPN, stable on LAN, no oscillation.
    - RTT baseline integrity: a reclaimed frame's late DSR report could be
    mis-matched to a freshly-sent one, reading absurdly low and collapsing the
    ceiling to depth 1 (the "manual cycle -> dips to 1 -> slow crawl back" bug).
    Two guards: skip exactly the reports owed by reclaimed frames (g_dsr_stale),
    and ignore any sample far below the smoothed RTT.
    - g_rt_high (renamed from the misleading "g_remote"): the frame round-trip is
    network latency PLUS the client's decode/render time, so a LAN with non-instant
    JXL decode legitimately has a ~50ms round-trip. Once it's non-trivial, floor
    depth at 2 (depth 1 there only caps the frame rate) -- latched, so a corrupted
    sample can never strand a remote player at depth 1.
    - Relabel the displayed/logged "RTT" -> "lag": it isn't pure ping (includes
    decode), so "lag" is honest. Overlay, Ctrl-T popup, exit telemetry.
    - Raise the depth cap 5 -> 8 (DEPTH_MAX; DSR ring widened to 16). On a high-
    latency link frame rate ~= depth/round-trip, so 5 left fps on the table (e.g.
    ~19fps at depth 5 / 230ms); depth 8 reaches the 35fps sim cap there. auto
    climbs to ~6 on such a link on its own; 7-8 are manual. Docs updated.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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