VersionControl:PRs/magenta/414

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Revision as of 16:06, 9 November 2026 by DrivingThatTrain (talk | contribs) (cryptograss/magenta#414, as GitHub has it)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
magenta#414: A page changed on PickiPedia reaches hunter's poller at once, not five minutes on
State 🟣 merged 2026-11-07 02:23:13
Worked on by magent, justin
Moods #interfaces
Deploy not said
Branch wiki-push-hunter → main, by magent-cryptograss
Opened · last pushed 2026-11-06 22:57:38 · 2026-11-06 22:57:22
The last gap in the push scheme (#404, pickipedia#175, maybelle-config#279): each emergent's runner on hunter keeps its own copies of the wake's pages (`poller/wiki_rules.WikiTexts`: Cryptograss:Emergents/Wake, Cryptograss:Moods/Dials, the pronouns list) for five minutes, and the hooks on maybelle never reached them.

Now:
- The pulse carries `wiki.seq`, the newest wiki hook run's id (`services/wiki_hooks.seq`). One cheap query; the poller already asks for the pulse every second.
- `/api/wiki-hooks/?since=<id>` answers the runs after that id, oldest first.
- The poller (`MoodPoller.follow_wiki`, in `cycle`) asks for those runs only when the seq moves on, and forgets its copy of each changed title (`WikiTexts.forget`). The next wake reads the edit. Every change is in that log, pushed or swept, hooked or not (#404 logs a `forget` row for the rest).
- The seq is kept in the poller's state across restarts; the first look only learns where the log stands. The runs endpoint failing leaves the TTL to it and asks again next cycle.
- A line on `/wiki-hooks/` saying so.

Tests: `WikiTexts.forget`, the API's `since` and the pulse's `seq`, and three poller cycle tests (forgotten once and only when the seq moves; no texts or an older pulse asks nothing; the endpoint down asks again).

Redeploy maybelle, then hunter (the pulse first, so the poller has something to follow; the poller without it keeps the five-minute clock).
Worked on by: magent and justin, in #interfaces