From 63defd11f2451d3bb48e6c577b25416d56d8b741 Mon Sep 17 00:00:00 2001 From: Lex Date: Fri, 28 Aug 2026 17:46:20 +0800 Subject: [PATCH 1/3] chore: record delivery binding for release-notes-v1-0-35 --- .specgit.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.specgit.yaml b/.specgit.yaml index da464b8fa..3ccbb4917 100644 --- a/.specgit.yaml +++ b/.specgit.yaml @@ -1,8 +1,10 @@ version: 1 -delivery: giant-summary-guard +delivery: release-notes-v1-0-35 context: kind: branch - branch: feat/458-giant-summary-guard + branch: docs/460-release-notes-v1-0-35 issues: - - 458 -pr: 459 + - 460 +issueKinds: + - issue: 460 + kind: kind::docs From 97818040393849f27593c557a5a35ae78ff2c4ce Mon Sep 17 00:00:00 2001 From: Lex Date: Fri, 28 Aug 2026 17:47:09 +0800 Subject: [PATCH 2/3] chore: record delivery binding for release-notes-v1-0-35 --- .specgit.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.specgit.yaml b/.specgit.yaml index 3ccbb4917..61d705851 100644 --- a/.specgit.yaml +++ b/.specgit.yaml @@ -8,3 +8,4 @@ issues: issueKinds: - issue: 460 kind: kind::docs +pr: 461 From 13e82698267266ec70f7554684abbef5e510fa0f Mon Sep 17 00:00:00 2001 From: Lex Date: Fri, 28 Aug 2026 17:48:51 +0800 Subject: [PATCH 3/3] docs: release notes v1.0.35 --- .github/releases/v1.0.35.md | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/releases/v1.0.35.md diff --git a/.github/releases/v1.0.35.md b/.github/releases/v1.0.35.md new file mode 100644 index 000000000..f5298c483 --- /dev/null +++ b/.github/releases/v1.0.35.md @@ -0,0 +1,42 @@ +## opencode {VERSION} + +{Prerelease/Stable} release from `{branch}` branch. Giant `summary.diffs` snapshots (37.8MB measured in the wild) can no longer starve the event loop into an unkillable state: message summaries are capped at 256KB at every write path, and oversized legacy rows are stripped on read - the session that triggered the original kill -9 now reopens cleanly. + +--- + +### ๐Ÿ› Bug Fixes + +- **ESC could not cancel a session fed a giant upstream diff, #458 (PR #459)**: `SessionSummary.summarize` wrote the full `snapshot.diffFull` output into the user message's `summary.diffs` with no size limit, so one upstream-sync turn injected a 37.8MB payload; every `message.updated` then re-serialized it into the event table (single events measured at 37.87MB, the shared DB grew to 10GB) and SSE broadcast, driving the in-process TUI into an allocation storm that starved the event loop - the abort HTTP request never got scheduled and only `kill -9` recovered it. Three guards now share `MAX_SUMMARY_DIFF_BYTES = 256KB`: source truncation in `summarize`, a write guard in `toRow`, and a read guard in `fromRow` that strips oversized legacy `summary_diffs` while keeping the additions/deletions/files stats (diffs are display-only metadata; the LLM context itself was only 695KB). Byte accounting matches the JSON serialization exactly, and round-trips are idempotent. + +--- + +### โš™๏ธ CI / Engineering + +- **specgit-accept re-aligned with the main-line harness (PR #459)**: a `specgit init --force` version refresh had reverted the workflow to the template's workspace-local CLI install (`npm install --no-save`), which dies on this bun workspace's `catalog:` protocol (EUNSUPPORTEDPROTOCOL, #434 redux), and to a `yaml`-importing wait step the global install cannot resolve. Restored the verified shape: `npm install -g specgit@^0.5.0`, regex-based policy parsing, main-only trigger, and the deviation is now recorded in AGENTS.md's local-specializations list so the next re-init re-applies it. + +--- + +### ๐Ÿงช Test Summary + +``` +CI gates on main at the delivery merge (PR #459): +Typecheck: pass +Unit Tests (linux): pass +E2E Tests (linux): pass +E2E Tests (windows): pass +SpecGit Acceptance: pass +dag-core gate: 52 pass / 0 fail +new guard tests: 7/7 pass (summary-diff-guard.test.ts) +``` + +--- + +### ๐Ÿ” Verification + +- Delivery carried an accepted SpecGit verdict (`specgit finish` exit 0) on the final head after anchor-fresh CI, via a DAG workflow (map -> coding -> verify -> review -> synthesize) with a PASS review verdict (0 blocking; 3 INFO suggestions all absorbed into the final commit: shared helper, byte-accounting comment, pinned boundary tests). +- `test/session/summary-diff-guard.test.ts` runs the real service graph (`Session.node` + real `Database.node`, only `Snapshot.diffFull` stubbed): source truncation keeps the leading files within budget, the read guard strips legacy oversized rows while preserving stats, in-budget round-trips are lossless, and empty/single-oversized/exact-capacity boundaries are pinned. +- Deliberately deferred (tracked in #458): abort-path resilience against a starved event loop, and an event-loop lag watchdog. + +--- + +**Full changelog:** [`{previous_tag}`...`{current_tag}`](https://github.com/LeXwDeX/OpenCode-GraphAgent/compare/{previous_tag}...{current_tag})