Repository navigation
Releases: openzebra/rlm.pi
Releases · openzebra/rlm.pi
Release list
v0.3.31
v0.3.31 — Restore sub-LLM fan-out, fix elision stub echo-spam, rlmBudget per-call reset, anchored state-fence parser
2026-10-31 · commit cc77fab · 22 files, +124/−57 · bugfix release
Fixed
- Sub-agent fan-out restored after the v0.3.29 prompt compaction (
prompts/native.ts,prompts/glossary.ts,prompts/system.ts) — dropping themap_files/llm_batchworked examples collapsed sub-LLM calls from ~800/session to single digits. TheE2/E3examples are back next toE1, the delegation worked example fans acontextslice throughllm_batch, and the orchestrator addendum no longer reads as "don't use leaf workers for reading". - Children no longer steered away from leaf fan-out (
bridge/handlers/rlm-query.ts) —CHILD_PROMPT_ADDENDUMtold sub-RLM runs to usellm_query/llm_batchonly for >8K-char chunks and to distrust their verdicts, so child runs read files in Python loops. It now asks formap_files/llm_batchfan-out with self-audited borderline counts. - Elision stub echo-spam (
core/root-context.ts) — elided assistant turns with tool calls no longer get the… turn elided — durable facts live in Σ…synthetic text block injected next to the calls. Models copied the stub verbatim (up to 79% of turns for Kimi), re-seeding the archive and teaching later turns to repeat it. - Trivial child final answers recovered (
sandbox/py/worker.py,prompts/glossary.ts) — finalizing withanswer["content"] = "done"/"ready"while the real report sits inanswersnow substitutes the collected reports. The glossary spells out thatanswer["content"]must carry the full text, never a status word. rlmBudgetno longer starves a whole session (tool/repl-tool.ts) — the demotion budget resets at every rootrepl()call (done-claim cache preserved) instead of once per user turn; previously, after the 8thrlm_queryin a long multi-call turn, every later child run silently demoted to a leaf for the rest of the session. Demoted leaves report their model again (displayModel, dropped in v0.3.29).- State-fence parser anchored to line starts (
text/parsing.ts) — an inlinestate mention in prose no longer opens a phantom fence and produces `malformedstate fencerejects;STATE_FENCE/UNCLOSED_STATE_FENCE/HAS_STATE_FENCEmatch only fences that start a line.ROOT_IDLE_DEGRADE_TURNS` drops 6 → 3, so models that never emit state blocks (Kimi: 0 of ~1,570 turns) shed the fence instruction twice as fast.
New Contributors
Full Changelog: v0.3.28...v0.3.31
v0.3.28
What's Changed
- release: v0.3.24 — role-aware thinking level in model picker by @hicaru in #30
- fix(rlm): per-print stdout budget — fair formatting + print-boundary … by @hicaru in #31
- fix(state): tolerate concatenated JSON objects in one fence and array values for [+] by @52mzd in #33
- feat(ui): Σ fence 折叠显示 + 显示层 zh/en 双语(displayLocale 设置) by @52mzd in #34
- Fix/pr34 review by @hicaru in #35
Full Changelog: v0.3.23...v0.3.28
v0.3.23
v0.3.22
v0.3.21
What's Changed
- fix(rlm): elideStalePayloads must preserve toolCall blocks in stale assistant turns by @xulongwu4 in #22
- Rlm plan p0p4 by @hicaru in #23
- Rlm plan p0p4 by @hicaru in #24
- Rlm plan p0p4 by @hicaru in #25
- Feat/recall archive by @hicaru in #26
- Feat/knowlange recall by @hicaru in #27
New Contributors
- @xulongwu4 made their first contribution in #22
Full Changelog: v0.3.19...v0.3.21