Repository navigation
0.17.0 — munin loop fixed
Munin loop fixed (incident report 2026-10-12)
Two sessions on glm-5.3-flash fell into an unstoppable repetition loop — 30 consecutive munin_search / 33 consecutive identical munin_get calls — each time intending munin_store (stated in thinking dozens of times) but unable to emit it even once. Both sessions lost their session-end memories.
Root cause (verified in pi 1.1.0 core): munin_store was a deferred tool, and a deferred tool's declaration depends on the mutable active-tools set that plan-mode baselines, /plan-approve new, and branch restores snapshot-replace. Once dropped, a model cannot emit a tool absent from its request's tool array and loops on the always-declared read neighbors.
Fixes
munin_storepromoted DIRECT — declared in every configured session (plan mode still blocks it viaBLOCKED_TOOLS). Registry tier test guards against silent re-deferral.- Consecutive-call loop dampener on the munin read tools — 3rd identical-args call or 6th same-tool call (any args) returns guidance ("call munin_store directly") instead of executing. Resets on a different munin tool, any non-munin tool call (protocol-compliant sessions never dampen), session start, and after guidance fires.
- Protocol header + skill text aligned: "munin_search/munin_get/munin_store are always declared".
Live-verified post-reload: schema declaration without tool_search, both dampener rules, and the non-munin reset (4 probes).
Full changelog: https://github.com/ceulen-dev/ceulen/blob/main/CHANGELOG.md