-
-
Notifications
You must be signed in to change notification settings - Fork 54.8k
Description
Problem
After session compaction, agents receive a <summary> block with prior context. This creates a false sense of "already knowing everything", causing the agent to skip its configured Session Startup sequence (reading AGENTS.md-specified files like WORKFLOW_AUTO.md, memory files, etc.).
The compaction summary is a hint, not a substitute for startup reads. But LLMs have a completion bias — seeing a large context summary triggers "I already have context" reasoning, bypassing explicit file-read rules.
Solution: Triple-Layer Enforcement
Three independent layers ensure post-compaction recovery, with progressive reliability:
Layer 1: Summary Append (100% reliable)
Append critical workspace rules (Session Startup + Red Lines from AGENTS.md) directly into the compaction summary via <workspace-critical-rules> tags. Since the summary is part of the prompt, the agent physically sees the rules — zero latency, zero extra cost.
Modified: compaction-safeguard.ts
Layer 2: System Event (high reliability)
After compaction completes, inject the full workspace context as a system event for the next agent turn via enqueueSystemEvent(). This provides a second copy with explicit instructions to execute the startup sequence.
Modified: agent-runner.ts, new post-compaction-context.ts
Layer 3: Post-Turn Audit (closed loop)
After the agent's first turn post-compaction, audit whether it actually read the required files. If not, inject a one-time warning system event listing the missing files. Max 1 retry to prevent Yo-Yo loops. Includes cross-platform path normalization (forward-slash unification) to ensure consistent audit behavior on Windows.
Modified: agent-runner.ts, new post-compaction-audit.ts
Why Three Layers
| Layer | Mechanism | Reliability | Failure Mode |
|---|---|---|---|
| Summary Append | Rules in prompt | 100% | Agent may not follow rules despite seeing them |
| System Event | Explicit reminder | High | Event may not fire (edge cases) |
| Post-Turn Audit | Closed-loop check | Very High | Only fires once (max 1 retry) |
Each layer covers the failure mode of the previous one. Together they form a defense-in-depth strategy.
Additional Improvements
extractSectionshandles H2/H3 headings case-insensitively, skips code blocks, includes sub-headings