OrchestratorModule and a fix has been
written to the local module file (not yet committed). Every previous manual cleanup
"sticking" was illusory; the leak regenerated on every boot. A second confirmed bug is a real
tool-call loop caught by the signature-based loop breaker. Two bugs remain open at medium
priority (lesson spam, context overload), one low-priority noise issue (false-positive loop
warnings), and one resolved (VFS collision).
| Bug ID | Summary | Severity | Status | Owner action needed |
|---|---|---|---|---|
OS4-AGENT-LEAK | Boot-spawned agent triplet duplicated on every session boot; ~68 orphaned /agents dirs | HIGH | FIXED — pending commit + boot verify | Run commit-approve; verify next boot |
OS4-AGENT-LOOPS | Real repetitive tool-call loops (read_file 6×/30s, breaker fires) | MEDIUM | Confirmed — open | Per-agent loop signature; richer breaker message |
OS4-LESSON-SPAM | Auto-learner dumps loop-lesson-* MDs into /skills and injects them into every prompt | MEDIUM | Reopened | Repath dumper; stop prompt injection |
OS4-CONTEXT-OVERLOAD | Session hit 422,916 tokens; tool results evicted → re-reads (feeds loops) | HIGH | Open | Output caps + tool-result summary retention |
OS4-LOOP-DETECTION | False-positive "max turns near limit" warnings; profile mismatch | LOW | Open (noise) | Reconcile 6/7 vs 8 max-turns |
OS4-VFS-COLLISION | Root-level name collisions between lesson files and registries | LOW | Resolved | — |
OS4-AGENT-LEAK — root cause confirmed/agents/ accumulated ~68 directories. The auto-learner / kernel-architect /
searcher triplet reappeared after every purge, roughly 20 boots/day.
init() → setTimeout(_preSpawnDefaultAgents, 2000) spawns the triplet on every boot.this._agents only — always empty after a session restart — so persistence is never consulted; each boot creates 3 fresh dirs and orphans the previous session's copies.purgeDeadAgents() is manual-only; _sweepIdle ignores completed/failed states; the only VFS cleanup lives inside killAgent(), which nothing invokes.OS-Administrator, writer, memgraph-baker, VFS-Maintenance-Specialist) or register/sys.reload_module was unavailable (no origin URL registered), so the patch lands in the working copy and activates at next boot automatically. Team must run commit-approve to persist it server-side.ship_module test harness returns actual: "" for this module even unpatched — commands can't execute without a live terminal context. Harness bug, separate from our patch.OS4-AGENT-LOOPS — real loops, confirmed🔄 Loop detected: read_file called 6x with same args in 30s — breaking loop
Fired live during the session; memory-graph shows system-info.html accessed exactly 6× — matching the threshold to the digit.
OS4-LOOP-BREAKER-ATTRIBUTION): the breaker message omits which agent and which file path, and its window counter appears global. Proposed fix: include agent/session ID + file path in the message, count signatures per-agent, warn at 3× before the hard break at 6×.OS4-LESSON-SPAM — reopenedThe auto-learner writes loop-lesson-*.md into /skills/ on every anomalous event
(max_turns_near_limit, high_token_usage, tool_failures) and injects them
verbatim into every subsequent prompt's preamble. Current count: 13 files in /skills/,
4 created after the last cleanup.
/memory/lessons/ is absent — the
directory no longer exists, and file counts in /skills/ regrew. Root cause of the un-persistence
is unresolved (plausible suspect: the boot GC or a skill-index rebuild reverting layout).skill-sync — /skills/index.json still references stale paths.OS4-CONTEXT-OVERLOADSingle session consumed 422,916 tokens; repetitive re-reads and long tool outputs pushed earlier results out of context, which in turn makes re-reads look necessary — a feed-back loop with §3.
OS4-LOOP-DETECTION — noise, kept separateDistinct from §3's real loops. Agents received spurious "5 of 6 turns used — near limit" warnings while no loop existed, and the detector profile (max-turns 6 vs 7 vs documented 8) is inconsistent across surfaces. Harmless but noisy; it also fed §4's lesson spam since each warning saved a new lesson file.
OS4-VFS-COLLISION — resolvedRoot-level lessons colliding with registry filenames (e.g. a lesson file vs.
OS4-VFS-COLLISION.json) were relocated under /bugs/ and /skills/;
collision class closed.
While generating this very report, write_file was blocked by the recursive-delete
guardrail because the report body quoted the rule's matched command pattern — i.e. the guardrail
content-scans file payloads, not just command invocations. Documenting a security rule can trigger it.
Suggested fixes: scan only command/args in tool calls (not file payloads), or whitelist documentation
paths (/bugs/*, /memory/*). A second-generation agent attempting to write this
report will hit the same wall.
OS4-VFS-COLLISION fixes applied./bugs/OS4-BUG-REPORT.html).read_file 6x/30s → OS4-AGENT-LOOPS upgraded to Confirmed; previously suspected false-positive cause re-attributed.OS4-AGENT-LEAK reopened-aggravated (≈20 new dirs/day), OS4-LESSON-SPAM reopened (13 lessons, failed relocation).OrchestratorModule: boot-spawn + memory-only dedup + no teardown confirmed.reload_module unavailable → activates next boot.ship_module harness actual: ""; missing module origin URL.list_files /agents → expect ≈10 entries: register, sys, 4 legitimate archetypes, one triplet dir per role.♻️ Adopted existing boot agent … no new dir created.commit-approve to persist the OrchestratorModule patch server-side.loop-lesson-* files in /skills/ after a full session.skill-sync to clear stale index references.| # | Ask | Why |
|---|---|---|
| 1 | Persist OrchestratorModule working-copy patch (commit-approve pipeline) | Local edits die with the session otherwise — this is exactly why earlier fixes never stuck |
| 2 | Make loop-breaker detection per-agent; include agent ID + path in the message | Current global counting mislabels legitimate concurrent reads as loops; message lacks attribution |
| 3 | Repath the auto-learner dumper; stop injecting lesson bodies into prompts | Prompt bloat + context overload + lesson accumulation in /skills/ |
| 4 | Cap tool output size; retain tool-result summaries through compaction | 422.9k-token session; eviction-driven re-reads |
| 5 | Reconcile max-turns profile (6/7/8) across detector surfaces | False-positive warnings feed the lesson dumper |
| 6 | Scope guardrail scanning to command/args, not file payloads | Documentation of a rule triggers the rule (§8) — meta-blocking incident |
| 7 | Fix ship_module harness (actual: "") and allow reload_module via registered origin URL | Patches can't be validated or hot-reloaded in-session |
| 8 | Provide a safe bulk-delete primitive permitted for stale agent dirs | Boot GC covers it, but an operator tool is still useful for emergencies |