From a93917b12e509ada095a043573fcd7748b8dbd6a Mon Sep 17 00:00:00 2001 From: Ivan Kuznetsov Date: Wed, 22 Jul 2026 21:35:00 +0100 Subject: [PATCH] fix(llm-wiki): let bounded drains complete --- .claude-plugin/marketplace.json | 2 +- docs/agent-compatibility.md | 2 +- plugin-surfaces.json | 2 +- plugin-surfaces.lock.json | 4 ++-- plugins/llm-wiki/.claude-plugin/plugin.json | 2 +- plugins/llm-wiki/.codex-plugin/plugin.json | 2 +- plugins/llm-wiki/CHANGELOG.md | 10 ++++++++++ plugins/llm-wiki/README.md | 3 +++ plugins/llm-wiki/openclaw.plugin.json | 2 +- plugins/llm-wiki/package.json | 2 +- .../llm-wiki/templates/install-systemd-scheduler.sh | 4 +++- tests/test_llm_wiki_openclaw.py | 1 + 12 files changed, 26 insertions(+), 10 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 7d87a6e..e5909aa 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -13,7 +13,7 @@ "name": "llm-wiki", "source": "./plugins/llm-wiki", "description": "Create and query project wikis with optional maintenance automation.", - "version": "0.3.3", + "version": "0.3.4", "author": { "name": "ivankuznetsov", "url": "https://github.com/ivankuznetsov" diff --git a/docs/agent-compatibility.md b/docs/agent-compatibility.md index 7c90933..c4424cc 100644 --- a/docs/agent-compatibility.md +++ b/docs/agent-compatibility.md @@ -35,7 +35,7 @@ plugin directory so a copied package does not depend on the repository root. | Agent Reviewer | `0.3.1` | Stable | `skills/agent-reviewer/SKILL.md` | agents, references, scripts, eval harness | | Agent SEO | `2.0.1` | Stable | `skills/seo/SKILL.md` | agents, context, data sources, hooks, scripts | | Agent Writing | `0.5.2` | Stable | `skills/writing/SKILL.md` | agents, voice/style context | -| LLM Wiki | `0.3.3` | Stable | five files under `skills/` | assets, consent-gated maintenance templates | +| LLM Wiki | `0.3.4` | Stable | five files under `skills/` | assets, consent-gated maintenance templates | | Screenote | `3.0.1` | Stable | `skills/{screenote,snapshot,feedback}/SKILL.md` | CLI launcher, references, evals | ## Plugin invocations diff --git a/plugin-surfaces.json b/plugin-surfaces.json index 1e2447a..66d0218 100644 --- a/plugin-surfaces.json +++ b/plugin-surfaces.json @@ -174,7 +174,7 @@ { "name": "llm-wiki", "path": "plugins/llm-wiki", - "version": "0.3.3", + "version": "0.3.4", "stability": "stable", "metadata": { "display_name": "LLM Wiki", diff --git a/plugin-surfaces.lock.json b/plugin-surfaces.lock.json index 05ef47a..39809db 100644 --- a/plugin-surfaces.lock.json +++ b/plugin-surfaces.lock.json @@ -636,7 +636,7 @@ } }, "llm-wiki": { - "version": "0.3.3", + "version": "0.3.4", "canonical": { "skills/bootstrap/SKILL.md": { "sha256": "6e446e783ac32d2f605f036891fcee29651aca14696065f2753cec13eab58a16", @@ -722,7 +722,7 @@ }, "templates": { "exists": true, - "sha256": "ad03c9d5a6457d631a1556039484c119e81a89d5eff6f3953e93be7014c61452", + "sha256": "eadb377a0defb2c14f3abb3a63bbf9ce836e8035045f96a2f25a4836540df411", "files": [ "templates/compile-log.sh", "templates/install-systemd-scheduler.sh", diff --git a/plugins/llm-wiki/.claude-plugin/plugin.json b/plugins/llm-wiki/.claude-plugin/plugin.json index 7a17ff5..2ab1283 100644 --- a/plugins/llm-wiki/.claude-plugin/plugin.json +++ b/plugins/llm-wiki/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "llm-wiki", - "version": "0.3.3", + "version": "0.3.4", "description": "Create and query project wikis with optional maintenance automation.", "author": { "name": "ivankuznetsov", diff --git a/plugins/llm-wiki/.codex-plugin/plugin.json b/plugins/llm-wiki/.codex-plugin/plugin.json index 37f3041..50318ab 100644 --- a/plugins/llm-wiki/.codex-plugin/plugin.json +++ b/plugins/llm-wiki/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "llm-wiki", - "version": "0.3.3", + "version": "0.3.4", "description": "Create and query project wikis with optional maintenance automation.", "author": { "name": "ivankuznetsov", diff --git a/plugins/llm-wiki/CHANGELOG.md b/plugins/llm-wiki/CHANGELOG.md index 0d44920..5bc14d2 100644 --- a/plugins/llm-wiki/CHANGELOG.md +++ b/plugins/llm-wiki/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to **llm-wiki** are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/), and the project adheres to [Semantic Versioning](https://semver.org/). +## [0.3.4] - 2026-07-22 + +### Fixed + +- Allow the managed Linux service four hours for a valid three-batch drain, + covering each batch's bounded agent and QMD phases without weakening the + memory, swap, or machine-wide serialization limits. +- Vendor the standalone llm-wiki 0.1.18 scheduler-timeout fix across Claude, + Codex, Pi, and OpenClaw surfaces. + ## [0.3.3] - 2026-07-22 ### Fixed diff --git a/plugins/llm-wiki/README.md b/plugins/llm-wiki/README.md index ef6b8db..f032457 100644 --- a/plugins/llm-wiki/README.md +++ b/plugins/llm-wiki/README.md @@ -235,6 +235,9 @@ runner starts only when both `automation_enabled` and retry leaves it open. Pass a full source SHA instead of `all` to restore one quarantined record. - Scheduled maintenance drains the same durable queue used by commit hooks. It + allows four hours for up to three batches, covering each batch's 30-minute + agent limit and two separate 15-minute QMD phases while retaining the 4 GiB + memory cap, no-swap policy, and machine-wide provider lock. fetches, merges, and pushes only `origin/llm-wiki/refresh`; it never writes to or pushes the protected default branch. A publication failure retains the local refresh commit and queued state for a later retry. diff --git a/plugins/llm-wiki/openclaw.plugin.json b/plugins/llm-wiki/openclaw.plugin.json index 558c6b6..539df93 100644 --- a/plugins/llm-wiki/openclaw.plugin.json +++ b/plugins/llm-wiki/openclaw.plugin.json @@ -2,7 +2,7 @@ "id": "llm-wiki", "name": "LLM Wiki", "description": "Create and query project wikis with optional maintenance automation.", - "version": "0.3.3", + "version": "0.3.4", "skills": [ "./openclaw/skills" ], diff --git a/plugins/llm-wiki/package.json b/plugins/llm-wiki/package.json index 05f71e9..1d0c75c 100644 --- a/plugins/llm-wiki/package.json +++ b/plugins/llm-wiki/package.json @@ -1,6 +1,6 @@ { "name": "llm-wiki", - "version": "0.3.3", + "version": "0.3.4", "type": "module", "description": "Create and query project wikis with optional maintenance automation.", "homepage": "https://github.com/ivankuznetsov/llm-wiki", diff --git a/plugins/llm-wiki/templates/install-systemd-scheduler.sh b/plugins/llm-wiki/templates/install-systemd-scheduler.sh index 53c97b3..a35814c 100755 --- a/plugins/llm-wiki/templates/install-systemd-scheduler.sh +++ b/plugins/llm-wiki/templates/install-systemd-scheduler.sh @@ -100,7 +100,9 @@ Type=oneshot Environment=LLM_WIKI_GLOBAL_LOCK_HELD=1 WorkingDirectory=$encoded_root ExecStart=$encoded_flock --nonblock --conflict-exit-code 0 %t/llm-wiki-refresh.lock $encoded_runner --project $encoded_root --drain -TimeoutStartSec=45min +# A scheduled drain may run three batches. Each batch permits a 30-minute +# agent plus two independently bounded 15-minute QMD phases. +TimeoutStartSec=4h MemoryMax=4G MemorySwapMax=0 UNIT diff --git a/tests/test_llm_wiki_openclaw.py b/tests/test_llm_wiki_openclaw.py index 6ae9e1f..5cb5dd6 100644 --- a/tests/test_llm_wiki_openclaw.py +++ b/tests/test_llm_wiki_openclaw.py @@ -374,6 +374,7 @@ def test_scheduler_reconciles_linked_worktrees_and_stops_disabled_units(self): timer_text = timer.read_text(encoding="utf-8") self.assertIn("MemoryMax=4G", service_text) self.assertIn("MemorySwapMax=0", service_text) + self.assertIn("TimeoutStartSec=4h", service_text) self.assertIn("%t/llm-wiki-refresh.lock", service_text) self.assertNotIn("Persistent=", timer_text)