• ctrl/chat_llm.ini exec/chat_llm.js chat_llm_irc.js

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, June 11, 2026 15:38:02
    https://gitlab.synchro.net/main/sbbs/-/commit/135f08f0f5e1146d28b3c9ed
    Modified Files:
    ctrl/chat_llm.ini exec/chat_llm.js chat_llm_irc.js
    Log Message:
    chat_llm: stop the IRC guru volunteering wrong/unsolicited answers

    Two changes to make the guru a far more reluctant, more accurate
    unprompted participant on IRC, prompted by live #synchronet logs where
    it (a) answered questions one user had explicitly aimed at another, and
    (b) confidently restated others' mistakes as fact.

    1. directed_at_other() (chat_llm_irc.js): a question addressed to a
    specific other participant ("nelgin: why are you changing ip?") is a
    person-to-person exchange, not a room question -- the bot no longer
    arms an intervention on it. is_nick_ping only caught a BARE "Nick?";
    this catches "Nick: <content>" / "Nick, <content>" where Nick is a
    seen channel member that isn't the bot.

    2. Two-layer confidence gate for unprompted interventions only (direct
    questions are answered best-effort as before):
    - In-prompt SKIP escape: the volunteering generation is told to answer
    only if the retrieved docs explicitly support a correct answer and
    to never restate an asker's assumption as fact; otherwise it emits
    SKIP and the bot stays silent (and persists nothing). No extra
    round-trip. (ctx.volunteering -> build_messages; is_volunteer_abstain
    nulls the reply in chat_session.)
    - 14B fact-check (verify_volunteer_answer): a 7B feels "grounded" off a
    merely-related chunk and confirms false premises anyway (observed: a
    bogus mods/exec load path off a chunk about mods shadowing exec). Any
    non-declined answer is fact-checked by a stronger model that must
    return VERIFIED; fails closed (any error/ambiguity -> silence). Reuses
    relay_rewrite_model, kept transient (keep_alive 0) so the warm chat
    model isn't evicted. New ini knobs: intervention_verify[_model|_prompt].

    Also adds an anti-sycophancy clause to the IRC grounding for all replies:
    don't agree with or repeat a user's claim unless the docs support it.

    Live-validated: the false-premise "mods/exec" question now abstains
    (3/3), an ungroundable question abstains, and legitimate groundable
    questions (SBBSecho, transfer protocols, BinkP) still answer.

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

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