Forum teuk.org

🪄 Lumos, the Restricted Section, and Accio Evidence: Three New Chapters for Mediabot

in Mediabot · started by TeuK · 7h ago

TeuK · 7h ago

Mediabot v3 · 3.6dev · 13 October 2026

A bot that remembers a conversation and answers questions is useful. A bot that explains its own commands, respects the person asking, and knows when its sources are insufficient is much more useful.

The latest three Mediabot commits tackle those everyday details: clearer IRC replies, trustworthy local knowledge, and better researched answers. Think of them as three spells for the AI council—without pretending that a wand can turn a plausible answer into a proven fact. 📚✨

🔗 MB819 — Lumos for Replies and Source Links

The first chapter started with something painfully familiar: a reasonably useful answer followed by an enormous wall of URLs, or a sentence containing literal \n artifacts instead of readable text.

MB819 gives the collective AI route a presentation suited to IRC:

  • Up to two answer messages, followed by one compact sources message for researched replies.
  • Source URLs shortened through the configured teuk.org ShortURL service.
  • Accepted short links displayed in light blue and underlined, with a formatting reset after each link.
  • A 400-byte UTF-8 payload limit per message, including formatting controls.
  • 1.5 seconds between lines by default to keep delivery measured.

The links come from retrieved evidence metadata. The model does not get to invent a convenient URL and call it a source. Shortening also checks the destination; when the private service is unavailable, the original source URL remains the fallback if it fits the message budget.

Accidental serialized line-break and bullet artifacts are cleaned up in provider prose. Meaningful quoted escapes and code-like paths retain their meaning.

The result gives the answer room to breathe, with compact references for anyone who wants to investigate further. 🔎

📖 MB820 — Open the Command Grimoire, Guard the Restricted Section

Mediabot should be able to explain Mediabot. Asking a language model to guess its command syntax is a strange way to achieve that.

MB820 adds natural-language consultation of the bot’s actual running command registry:

mediabot: what is the syntax of addcmd?
mediabot: how do I use rss?

These questions use built-in help metadata. Public syntax remains available like normal help, while privileged commands retain their normal execution checks. Knowing the spell is not permission to cast it.

Channel state belongs on a different shelf:

mediabot: is +Hailo enabled on this channel?
mediabot: is +Spark enabled on #i/o?

A protected chanset answer requires a bot-authenticated identity and fresh authorization: Administrator or above, or channel level 450 or above on the target channel. It is delivered privately by NOTICE. Access is checked again before delayed delivery, so a revoked right cannot quietly remain valid for the rest of a queued reply.

The requester’s nickname, IRC operator status, or a claim inside the question does not grant access. Protected results stay out of AI provider prompts and shared conversation memory. The natural-language route reads one requested flag; it does not change settings or execute commands. 🛡️

This chapter also fixes the council’s introduction. The pilot’s configured contributors—OpenAI gpt-4o and Anthropic claude-sonnet-5-5—are described as parallel contributors, with OpenAI preferred for synthesis. A provider can fail, and synthesis can fall back.

That is a description of the configured setup, not a claim that every provider successfully answered every question. Mediabot also stops inventing a training cutoff when none has been verified. The council combines responses; it is not a jointly trained model.

🌐 MB821 — Accio Evidence, with a Closer Look at the Page

Readable links alone cannot rescue a vague answer. The third chapter focuses on what the research actually brings back, and how that material reaches the synthesis.

🧭 Follow the Subject, Not the Fastest Owl

Contributors propose research queries using the conversation context. MB821 chooses them in configured provider order, rather than letting whichever callback arrives first determine the search. A second contributor’s query can guide one broader attempt.

Short follow-ups retain the previous user’s subject when needed. Earlier assistant claims are context, not evidence.

Subject-specific official sources can receive preference when they are already in the operator’s configured domain list. Research remains bounded: at most two searches and one extraction batch, with up to three retrieved sources.

🗓️ Keep the Dates Honest

“Recent,” “today,” and “this week” now guide publication-date filtering. Recent examples use a rolling 30-day window; an explicitly requested publication year uses that calendar interval.

An incident year is not automatically a publication year. The date a page was retrieved is not the date its event happened. Unknown publication dates stay unknown, and dated results after the current UTC day are excluded.

Sources are ranked using bounded query overlap, publication dates, and configured domain preferences. Extraction then looks for useful matching passages beyond navigation-heavy page prefixes, rather than simply feeding the beginning of a page to the model.

📚 A Reference Must Point to Something Real

For the shared researched-synthesis path, unverified factual contributor drafts are left out of the synthesis evidence. The model receives the retrieved material and must return:

  • One or two existing source IDs.
  • An evidence status: supported, partial, or insufficient.
  • A short verbatim supporting passage for each selected source.

Mediabot checks that those passages actually occur in the selected source text, allowing limited whitespace, Unicode, and typographic-quote normalization. Invented source IDs or invented passages are rejected.

If required evidence fields are missing, there is at most one format correction using the same research. The bot does not repeat the whole search or attach arbitrary links to an uncited answer.

Partial evidence gets an explicit qualification at the beginning. Insufficient evidence replaces the confident draft with an honest statement that the requested detail is not established, while retaining the checked references.

The synthesis is also instructed to favor named, dated examples, mechanisms, and consequences where the material supports them—useful detail for a question such as:

mediabot: what recent phishing campaigns have targeted people in France?
mediabot: what did the official sources establish about those incidents?

These are example prompts, not claims about particular incidents.

An important boundary remains: a real quoted passage is an evidence anchor, not proof that every sentence in the answer follows from it. Interpretation still needs scrutiny. The native OpenAI web-search fallback uses its tool citation metadata; it does not receive the same local extracted-passage validation.

💬 A Better Landing on IRC

MB821 also rebalances very short trailing answer lines at sentence or word boundaries. A reply ending with a lonely word gets a more readable layout while retaining the formatter’s byte limits, compact sources, and pacing.

Protected local answers keep the command and authorization behavior validated in MB820.

🧪 The Rehearsal Before the Great Hall

All three commits passed their full suites on teuk.org before publication:

Chapter Commit Full-suite assertions passed
MB819 — Reply presentation 115675c 22,639 / 22,639
MB820 — Local knowledge and rights 09a7434 22,713 / 22,713
MB821 — Researched answer quality 5cc6d1a 22,801 / 22,801

MB821 also passed 977 focused assertions and 8,258 fast-lane assertions on the development host. The focused checks cover source dates, query selection, passage matching, failure handling, citation bounds, provider formatting, and IRC delivery behavior.

MB819 and MB820 have already received live acceptance on the pilot. At the time of this article, MB821 is committed and pushed; its production update and live researched-answer acceptance are the next step. Automated tests establish behavior against controlled cases. Real questions on #i/o will show whether the answers are concrete, useful, and appropriately qualified.

The next question can still start simply:

mediabot: ...

Behind that familiar line, the grimoire is clearer, the restricted shelves are guarded, and the council has a stronger obligation to show where its claims came from. 🦉📖

🔗 Read the Three Chapters

You must be logged in to reply.