This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summaryUpdates wave-9, persist_boost, and bash across a mixed release.
Full changelog
Queued bug-hunt tail (wave-9) + CI test-isolation repair
A file-sharded verify-then-fix fleet cleared the WAVE8 queued MED/LOW findings.
Each finding was reproduced before fixing; STALE findings were refuted with
evidence rather than "fixed". Reviewed by a 3-reviewer council (2 Opus + 1
Sonnet) to unanimous approve. local-ci 84/84 on a quiet box.
CI / test-isolation:
- The two
loki internal phase1-hooksH2 batch-abort tests stubbed
learnings_writer via Bun'smock.module, a GLOBAL registry with no reliable
per-test revert (mock.restore()does not touch it). Under cross-file test
discovery ordering on Linux the throwing stub leaked into the learnings_writer
suite, producing a nondeterministic CI red on the Tests and Coverage workflows
(green on macOS where readdir order differs). Replaced with a module-local
test seam reset deterministically in afterEach. Production behavior unchanged.
Memory subsystem:
- Consolidation no longer inflates pattern confidence on idempotent re-runs: the
+0.05 merge boost is now gated on genuinely new source_episodes, so
re-running consolidate() over an unchanged episode set is a no-op for
confidence (was ratcheting +0.05 per run). - Retrieval-time importance boost is now persisted to disk via a lock-spanning
read-mutate-write keyed by id+source (mirrors the decay path), closing the
"use it or lose it" asymmetry where decay persisted but the boost never did.
Persistence is opt-in (persist_boost): only the autonomous RARV loop reinforces
importance; manual surfaces (loki memory CLI, dashboard, MCP) do not silently
inflate it. A failed boost-write never breaks retrieval.
Dashboard / migration:
- The terminal migration phase (verify) can now be advanced and completed via
POST /api/migration/{id}/advance with only from_phase (it has no successor, so
to_phase and the phase gate are meaningless for it). Previously the endpoint
required to_phase and ran the gate for every phase, so verify could never be
completed via the API and overall_status could never reach "completed". The
409/idempotency semantics for already-advanced phases are preserved.
CLI / runtime (bash):
loki status --jsonno longer crashes on a malformed status file: the
JSON-error fallback was dead underset -e(a bare python3 call aborted the
function before the fallback ran); it is now guarded so a parse error degrades
to an honest error object.loki explain --json,loki heal, andloki onboardpass values to their
python helpers via the environment instead of interpolating raw bash values
intopython3 -cheredocs, fixing a quote/apostrophe-injection class that
silently degraded output (e.g. a project path containing an apostrophe).- Removed the dead
invoke_with_timeouthelper and its unused spawn-config vars
from run.sh (never wired to the provider invocation; kept route parity with
the Bun side, which has no such wrapper). - Checkpoint pruning now deletes the matching
refs/loki/cp/<id>git refs (and
their anchored stash commits) for pruned checkpoints, which previously leaked
unbounded.
Refuted (verified STALE, no change): a PERPETUAL_MODE gate in run.sh (compounding
it would disable the completion council on every default run) and the crash.ts
global unhandledRejection handler (intentional, documented fail-fast).
Breaking Changes
- Removed dead `invoke_with_timeout` helper and its unused spawn-config vars from run.sh.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Loki Mode
Multi-agent autonomous SDLC framework. Spec to deployed app. PRD, GitHub issue, OpenAPI/JSON/YAML, or one-line brief. 5 AI providers, 11 quality gates.
Related context
Related tools
Beta — feedback welcome: [email protected]