Adventure: gate live beats on [adventure], not posting.enabled

posting.enabled governs the RSS pipeline's Matrix chatter. Adventure facts
are push-based -- they arrive from gogobee at ingest, are never polled,
classified or paced, and are excluded from the round-robin rotation -- so
folding them under the same flag made 'news on the web only, adventure live
in the games room' inexpressible. Gate advPost on [adventure].enabled + a
configured channel instead; a nil poster still shuts off both the live beats
and the digest loop.
This commit is contained in:
prosolis
2026-07-11 08:25:29 -07:00
parent 10bcc78c51
commit 82d1c6ebeb

13
main.go
View File

@@ -267,11 +267,16 @@ func main() {
// Adapter: the web ingest handler posts priority adventure beats live to // Adapter: the web ingest handler posts priority adventure beats live to
// Matrix through the same queue everything else uses (bypasses pacing). // Matrix through the same queue everything else uses (bypasses pacing).
// PostNow doesn't consult posting.enabled, so gate here: with posting off, //
// adventure stays website-only like every other channel (nil poster also // Adventure carries its own enable switch and is push-based: facts arrive
// keeps the digest loop from starting). // from gogobee at ingest, they are not polled, classified or paced, and they
// never enter the round-robin rotation. So it is gated on [adventure] alone,
// NOT on posting.enabled — that flag governs the RSS pipeline's chatter, and
// an operator running "news on the web only, adventure live in the games
// room" is a legitimate configuration. A nil poster (adventure off, or no
// channel) still keeps both the live beats and the digest loop shut.
var advPost web.PriorityPoster var advPost web.PriorityPoster
if postingEnabled { if cfg.Adventure.Enabled && cfg.Adventure.Channel != "" {
advPost = func(p web.AdvPost) { advPost = func(p web.AdvPost) {
queue.PostNow(poster.QueueItem{ queue.PostNow(poster.QueueItem{
GUID: p.GUID, GUID: p.GUID,