You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
decisions.md grows unbounded in active Squad projects. A real-world Squad deployment (MMO project) reached 145KB / 2,219 lines / ~35K tokens — and every agent reads the entire file at spawn time.
Impact
Context waste: Every agent burns ~35K tokens reading decisions before doing any work
Slower spawns: More data to parse = slower agent startup
Higher cost: Wasted tokens = wasted money on every agent interaction
Reduced capacity: Less room in the context window for actual task work
Compounding problem: Active projects generate 5-15 decisions/session; grows ~1-2KB/session
Root Cause Analysis
The current architecture has a write/read asymmetry:
Writes are incremental: Agents write small decisions to decisions/inbox/, Scribe merges them — this works great
Reads are monolithic: Every agent reads the ENTIRE decisions.md at spawn — this doesn't scale
Soft guideline, not enforced by code; Scribe (haiku) often skips it
Scribe deduplication
scribe-charter.md:37-47
Handles exact dupes, but most decisions are unique
Nap skill
.squad/skills/nap/
On-demand only; user must know to invoke it
History 12KB rule
squad.agent.md:871
Only covers agent history.md, NOT decisions.md
Proposed Solutions
A. Changes to Squad Core (code/governance changes)
A1. Hard size enforcement in Scribe spawn prompt
Add explicit, measurable enforcement to the Scribe spawn template:
5. DECISIONS ARCHIVE (MANDATORY):
a. Measure decisions.md size (wc -c or equivalent)
b. If >20KB OR >100 entries:
- Move entries older than 14 days to decisions-archive.md
- Move entries with "Status: Implemented" regardless of age
- Keep only entries from the last 14 days that are NOT implemented
c. After archival, verify size is <20KB. If still over, archive entries >7 days old.
d. Log: "📦 Archived {N} decisions ({old_size} → {new_size})"
A2. Decision index / summary section
Add a compact index at the top of decisions.md that agents can scan quickly:
## Decision Index (auto-generated by Scribe)| ID | Date | Topic | Status | By ||----|------|-------|--------|----|| D-42 | 2026-03-20 | Use JWT for auth | Active | Ripley || D-41 | 2026-03-18 | Postgres over MySQL | Implemented | Dallas |
...
## Active Decisions (details below)### 2026-03-20: Use JWT for auth
...
Agents reading decisions.md can scan the index (~2KB) and only deep-read entries relevant to their task.
A3. Scoped decision reads in spawn prompts
Instead of "Read .squad/decisions.md", change the spawn template to:
Read .squad/decisions.md — focus on the Decision Index at the top.
Only deep-read entries relevant to your current task domain: {task_domain}
This gives agents permission to skim rather than consuming every entry.
A4. decisions.md size check in squad nap
The nap skill already checks history.md (15KB) and total .squad/ (1MB). Add:
decisions.md >20KB → trigger archival
Make this part of the automated nap cycle, not just on-demand
Problem
decisions.mdgrows unbounded in active Squad projects. A real-world Squad deployment (MMO project) reached 145KB / 2,219 lines / ~35K tokens — and every agent reads the entire file at spawn time.Impact
Root Cause Analysis
The current architecture has a write/read asymmetry:
decisions/inbox/, Scribe merges them — this works greatdecisions.mdat spawn — this doesn't scaleEvidence from User Report
Current Mechanisms (and why they're insufficient)
squad.agent.md:869scribe-charter.md:37-47.squad/skills/nap/squad.agent.md:871Proposed Solutions
A. Changes to Squad Core (code/governance changes)
A1. Hard size enforcement in Scribe spawn prompt
Add explicit, measurable enforcement to the Scribe spawn template:
A2. Decision index / summary section
Add a compact index at the top of
decisions.mdthat agents can scan quickly:Agents reading decisions.md can scan the index (~2KB) and only deep-read entries relevant to their task.
A3. Scoped decision reads in spawn prompts
Instead of "Read .squad/decisions.md", change the spawn template to:
This gives agents permission to skim rather than consuming every entry.
A4.
decisions.mdsize check insquad napThe nap skill already checks history.md (15KB) and total .squad/ (1MB). Add:
decisions.md>20KB → trigger archivalA5. Configurable thresholds in
.squad/config.jsonAllow users to tune archival behavior:
{ "decisions": { "maxSizeKB": 20, "archiveAfterDays": 14, "autoArchiveImplemented": true, "maxEntries": 100 } }B. User-implementable solutions (ceremonies, skills, practices)
B1. "Decisions Cleanup" Ceremony
Users can add to
.squad/ceremonies.md:B2. "Decisions Hygiene" Skill
Users can create
.squad/skills/decisions-hygiene/SKILL.md:Patterns:
Status: Implementedwhen work is done[auth],[api],[ui]for filteringdecisions cleanupceremony weekly in active projectsB3. Session-start size check
Users can add to their Lead's charter or a personal agent:
B4. Ralph integration
Add a decisions size check to Ralph's idle-watch:
Success Criteria
decisions.mdstays under 20KB (~5K tokens) in steady stateLabels
squad,enhancement,squad:lead