Skip to content

Commit c24b538

Browse files
docs: v0.31.4 release notes
Co-authored-by: Alfonso [Magic Context] <288211368+alfonso-magic-context@users.noreply.github.com>
1 parent 2862b64 commit c24b538

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

.alfonso/release-notes/v0.31.4.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# v0.31.4
2+
3+
Maintenance release: 14 fix batches from two internal audit waves plus one user-reported bug.
4+
5+
## Fixed
6+
7+
### Compaction not triggering after threshold (#218)
8+
A session whose previous turn ended with an interrupted or partially-aborted tool call could get stuck: every subsequent pass was classified as mid-turn, so the compaction threshold never fired and queued context reductions never applied. A newer real user message now ends the stale turn on both OpenCode and Pi. Additionally, `doctor --issue` reports no longer redact plain numeric settings like `execute_threshold_tokens` (redaction now applies only to string values under secret-like keys).
9+
10+
### Workspace memory sharing
11+
Two security fixes: malformed workspace `share_categories` now fails closed to sharing nothing (instead of sharing everything), and primary agents can no longer update, archive, or merge another project's memories through shared categories — shared visibility is read-only; mutations require ownership.
12+
13+
### Project config trust boundaries
14+
Project-level (`.cortexkit/magic-context.jsonc`) configs can no longer override `historian.model` / `historian.fallback_models` (a cloned repository could otherwise route background LLM work to a repo-chosen model on your credentials), and project-level execute thresholds now only apply when they delay compaction relative to your user config, never advance it. Dreamer task tuning and `memory.enabled` remain project-configurable.
15+
16+
### Dreamer reliability
17+
Dreamer task manifests (verify / map-memories / classify) are now fail-closed: a truncated or malformed model response is rejected and retried instead of partially applied. Lease-guarded writes use immediate transactions so concurrent OpenCode and Pi processes cannot double-commit. Retrospective scanning no longer permanently skips older sessions on large backlogs, and file-change verification catches same-second commits.
18+
19+
### Historian and wrapup coordination
20+
`/ctx-recomp` can no longer race a live `/ctx-wrapup` into concurrent compartment mutation. The boundary staleness fingerprint now hashes content (same-length edits are detected). Wrapup correctly treats a final chunk followed only by filtered noise as final, and waits at most 10 minutes for a busy compartment lease instead of indefinitely.
21+
22+
### Cache stability
23+
Two-pass tool reclaim and smart-drops now ride a hard m[0] fold on defer passes (previously spilled to a second cache bust). Image stripping replays its frozen set on every pass, including sessions that never had a compaction watermark. Channel-2 nudge delivery uses per-claim tokens so concurrent processes cannot double-deliver, and synthetic todo state never anchors to an errored/aborted assistant message (which some providers drop from the wire, orphaning the tool pair).
24+
25+
### Storage integrity
26+
Memory embeddings are skipped when content changed while the embedding request was in flight (stale-vector guard). The message search index recovers failed incremental writes even after later successes advanced its watermark. Cross-process duplicate memory writes are now idempotent.
27+
28+
### Other fixes
29+
- TUI/RPC: WebSocket re-hello no longer leaks notification sinks (lost TUI actions), reconnects detect a restarted server, upgrades require token auth before accepting the socket, and per-session cursors stop cross-session notification pruning.
30+
- Pi todowrite: foreign-extension tool outputs are validated fail-closed before capture; overlay output capped.
31+
- Smart notes: network check lifecycle hardened (tarpit responses can no longer hold the sandbox lock past budget; terminal rejections no longer retry).
32+
- CLI doctor: honors `PI_CODING_AGENT_DIR` everywhere, atomic JSONL migration writes, issue-report body-limit postcondition.
33+
- Pi E2E parity: 8 cache-invariant scenarios and a Pi-native subagent isolation test ported from the OpenCode suite.

0 commit comments

Comments
 (0)