Skip to content

Releases: openzebra/rlm.pi

v0.3.31

Choose a tag to compare

@hicaru hicaru released this 31 Oct 16:32

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 the map_files / llm_batch worked examples collapsed sub-LLM calls from ~800/session to single digits. The E2/E3 examples are back next to E1, the delegation worked example fans a context slice through llm_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_ADDENDUM told sub-RLM runs to use llm_query / llm_batch only for >8K-char chunks and to distrust their verdicts, so child runs read files in Python loops. It now asks for map_files / llm_batch fan-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 with answer["content"] = "done" / "ready" while the real report sits in answers now substitutes the collected reports. The glossary spells out that answer["content"] must carry the full text, never a status word.
  • rlmBudget no longer starves a whole session (tool/repl-tool.ts) — the demotion budget resets at every root repl() call (done-claim cache preserved) instead of once per user turn; previously, after the 8th rlm_query in 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 inline state mention in prose no longer opens a phantom fence and produces `malformed state 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

Choose a tag to compare

@hicaru hicaru released this 06 Oct 21:54

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

Choose a tag to compare

@hicaru hicaru released this 20 Sep 19:58
050c704

What's Changed

Full Changelog: v0.3.22...v0.3.23

v0.3.22

Choose a tag to compare

@hicaru hicaru released this 17 Sep 18:50

Full Changelog: v0.3.21...v0.3.22

v0.3.21

Choose a tag to compare

@hicaru hicaru released this 13 Sep 22:27

What's Changed

New Contributors

Full Changelog: v0.3.19...v0.3.21

v0.3.19

Choose a tag to compare

@hicaru hicaru released this 09 Sep 13:55

Full Changelog: v0.3.18...v0.3.19

v0.3.18

Choose a tag to compare

@hicaru hicaru released this 07 Sep 21:46

What's Changed

Full Changelog: v0.3.17...v0.3.18