Skip to content

Commit 9b34000

Browse files
release: v1.13.4 — protect compress tool calls from being compressed (#186)
Version bump 1.13.3 → 1.13.4. Contains PR #185 (compress-call protection fix). Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
1 parent 89e427e commit 9b34000

5 files changed

Lines changed: 48 additions & 1 deletion

File tree

‎README.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,14 @@ For the complete list with root cause analysis, see the [bug tracker](https://gi
472472

473473
## Changelog
474474

475+
### v1.13.4 — Protect Compress Tool Calls from Being Compressed (PR #185)
476+
477+
**Problem**: Sequential compressions ate previous summaries. Each compress tool call (which carries the summary in its `summary` parameter) lives a few messages after the range it compressed. When the model issued a new compress whose range started right after the previous one's end, the previous compress call fell inside the new range and was pruned — destroying the accumulated summary chain. Evidence from `ses_07562b88`: 113 messages → 6 messages in one compress call because all previous compress call anchors (b5–b10) were inside the new range.
478+
479+
**Fix**: Added `"compress"` to `COMPRESS_DEFAULT_PROTECTED_TOOLS` in `lib/config.ts`. This makes `filterProtectedToolMessages` hard-exclude compress tool call messages from compression ranges (Bug 39 mechanism). The compress call survives intact in visible context; only surrounding non-protected messages are compressed. Also synced stale `["skill"]` defaults in `dcp.schema.json`, `README.md`, and `README.zh-CN.md` to `["skill", "compress"]`. Users can opt out with `compress.protectedTools: ["skill"]`.
480+
481+
Files: `lib/config.ts`, `dcp.schema.json`, `README.md`, `README.zh-CN.md`. Tests: `tests/protect-compress-calls.test.ts` (6 new tests). 843 pass.
482+
475483
### v1.13.3 — Quality Gate Enforcement + E2E Test Framework + protectedTools Fix (PRs #173, #174, #175, #177, #179)
476484

477485
**Problem**: (1) Compressions with extremely low retention (<1%) or near-zero keyword recall passed silently, causing severe context loss. (2) No end-to-end test infrastructure existed to verify ACP compression through the real opencode→LLM pipeline. (3) `compress.protectedTools` merged with inherited defaults instead of replacing them — an explicit `[]` still protected the inherited set.

‎README.zh-CN.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,14 @@ ACP 在首次启动时自动将配置从 `dcp.jsonc` 迁移到 `acp.jsonc`,将
440440

441441
## 更新日志
442442

443+
### v1.13.4 — 保护 compress 工具调用不被压缩(PR #185)
444+
445+
**问题**:顺序压缩会吞噬之前的 summary。每个 compress 工具调用(在其 `summary` 参数中携带摘要)位于其压缩范围之后几条消息处。当模型发出新的 compress,其范围紧接前一个范围的结尾开始时,前一个 compress 调用落入新范围内并被裁剪——摧毁累积的摘要链。`ses_07562b88` 的证据:113 条消息在一次 compress 调用中变为 6 条,因为所有之前的 compress 调用锚点(b5–b10)都在新范围内。
446+
447+
**修复**:在 `lib/config.ts` 的 `COMPRESS_DEFAULT_PROTECTED_TOOLS` 中添加 `"compress"`。这使得 `filterProtectedToolMessages` 硬排除 compress 工具调用消息不进入压缩范围(Bug 39 机制)。compress 调用完整保留在可见上下文中;只有周围的非受保护消息被压缩。同时将 `dcp.schema.json`、`README.md` 和 `README.zh-CN.md` 中过时的 `["skill"]` 默认值同步为 `["skill", "compress"]`。用户可通过 `compress.protectedTools: ["skill"]` 退出。
448+
449+
文件:`lib/config.ts`、`dcp.schema.json`、`README.md`、`README.zh-CN.md`。测试:`tests/protect-compress-calls.test.ts`(6 个新测试)。843 pass。
450+
443451
### v1.13.3 — 质量门禁 + E2E 测试框架 + protectedTools 修复(PR #173, #174, #175, #177, #179)
444452

445453
**问题**:(1)极低保留率(<1%)或接近零关键词召回的压缩会静默通过,导致严重的上下文丢失。(2)缺少端到端测试基础设施来验证 ACP 通过真实 opencode→LLM 管道的压缩行为。(3)`compress.protectedTools` 与继承的默认值合并而非替换——显式 `[]` 仍会保护继承的集合。
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# REQ: Release v1.13.4
2+
3+
Release PR for the compress-call protection fix (PR #185).
4+
5+
## What's in this release
6+
7+
- **PR #185**: `fix: protect compress tool calls from being compressed`
8+
- Added `"compress"` to `COMPRESS_DEFAULT_PROTECTED_TOOLS` in `lib/config.ts`
9+
- 6 new tests in `tests/protect-compress-calls.test.ts`
10+
- Synced stale defaults in `dcp.schema.json`, `README.md`, `README.zh-CN.md`
11+
12+
## Version bump
13+
14+
1.13.3 → 1.13.4 (patch — bug fix)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# WORKLOG: Release v1.13.4
2+
3+
## Steps
4+
5+
1. Created release branch `2026-07-25_release-v1.13.4` from merged master (89e427e)
6+
2. Bumped version: 1.13.3 → 1.13.4 in `package.json`
7+
3. Added changelog entries to `README.md` and `README.zh-CN.md`
8+
4. Created devlog entry
9+
5. Verified: typecheck + test + build
10+
11+
## CI flow on merge
12+
13+
1. Push to master → `release.yml` detects release branch merge
14+
2. Creates `v1.13.4` tag
15+
3. Runs `npm ci` → `npm run check:package` → `npm test`
16+
4. Publishes to npm with `--tag latest`
17+
5. Creates GitHub Release

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://json.schemastore.org/package.json",
33
"name": "opencode-acp",
4-
"version": "1.13.3",
4+
"version": "1.13.4",
55
"type": "module",
66
"description": "Active Context Pruning — model-driven context management for OpenCode (hardened fork of DCP with 35 bug fixes)",
77
"main": "./dist/index.js",

0 commit comments

Comments
 (0)