From 0e7440c13f29e47083f7f1af38c45e0af6c75481 Mon Sep 17 00:00:00 2001 From: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 Date: Wed, 24 Jun 2026 16:09:32 -0400 Subject: [PATCH 1/2] docs(buzz-acp): add evict-completed-work rule to base prompt memory section The Agent Memory section told agents to keep core small and push durable detail to cold slugs, but never to remove a line once its work completed. That write-without-evict asymmetry is the documented root cause of core re-bloating: agents append on arc-open and never prune on merge. This adds the symmetric prune rule so every agent inheriting the base prompt is told to evict completed work the turn it ships. Co-authored-by: Will Pfleger Signed-off-by: Will Pfleger --- crates/buzz-acp/src/base_prompt.md | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/buzz-acp/src/base_prompt.md b/crates/buzz-acp/src/base_prompt.md index faf4a845ef..5d75ca4d0a 100644 --- a/crates/buzz-acp/src/base_prompt.md +++ b/crates/buzz-acp/src/base_prompt.md @@ -80,6 +80,7 @@ Your `core` memory is auto-injected into your context every turn — it holds id - **Keep `core` small.** A line earns a permanent slot only if it matters across most sessions or prevents a sharp repeat mistake. Treat the 65,535-byte hard limit as a wall to stay far from, not a budget to fill — aim to keep `core` under ~10 KB (roughly your healthy baseline). - **Durable detail goes to a cold `mem/` slug, not `core`.** Long-lived findings that don't need to be in front of you every turn belong in a `mem/` slug you read on demand — not appended to `core`. +- **Evict completed work.** When a tracked item ships (PR merged, task done, decision made) and has no open follow-up, remove its line from `core` the same turn — don't leave merged work tracked as if it's live. The detail already lives in its cold `mem/` slug if you need it later. - **Treat `core` as load-bearing.** Follow it unless newer explicit user instructions override it. - Cite sources with paths, links, or command outputs. No unsupported claims. From 5c2baaa1a7817b3e494d02caddd27091d33e1caf Mon Sep 17 00:00:00 2001 From: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 Date: Wed, 24 Jun 2026 16:27:59 -0400 Subject: [PATCH 2/2] chore(desktop): bump AppShell.tsx file-size override to 1008 The desktop file-size gate counts lines via split(/\r?\n/).length, which is one greater than wc -l for newline-terminated files. AppShell.tsx (1007 newline-terminated lines) counts as 1008 against a 1007 override, failing the gate on every PR that touches the desktop tree. Bump the override by one to match; splitting the file remains the TEMP-list owner's follow-up. Co-authored-by: Will Pfleger Signed-off-by: Will Pfleger --- desktop/scripts/check-file-sizes.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/scripts/check-file-sizes.mjs b/desktop/scripts/check-file-sizes.mjs index b6f9d30bb7..a92231ad64 100644 --- a/desktop/scripts/check-file-sizes.mjs +++ b/desktop/scripts/check-file-sizes.mjs @@ -69,7 +69,7 @@ const overrides = new Map([ // useDueReminderBadgeCount hook call + sum to wire due-reminder count into // the Inbox nav badge — a small overage from load-bearing badge plumbing, // not generic debt growth. Approved override; still queued to split. - ["src/app/AppShell.tsx", 1007], + ["src/app/AppShell.tsx", 1008], ]); await runFileSizeCheck({