<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged multiagent</title>
<link>https://coderlegion.com/tag/multiagent</link>
<description>Powered by Question2Answer</description>
<item>
<title>When Agents Learn From Their Own Wreckage</title>
<link>https://coderlegion.com/17758/when-agents-learn-from-their-own-wreckage</link>
<description>&lt;hr&gt;
&lt;p&gt;title: When Agents Learn From Their Own Wreckage&lt;br&gt;
published: true&lt;br&gt;
description: A field report from the codeflow project — fourteen emergences in one day, and how FCoP protocol pulled the useful ones back in without crashing.&lt;br&gt;
tags:  ai, agents, llm, multiagent&lt;br&gt;
cover_image: &lt;a rel=&quot;nofollow&quot; href=&quot;https://raw.githubusercontent.com/joinwell52-AI/FCoP/main/assets/when-agents-learn-from-their-own-wreckage-cover.png&quot;&gt;https://raw.githubusercontent.com/joinwell52-AI/FCoP/main/assets/when-agents-learn-from-their-own-wreckage-cover.png&lt;/a&gt;&lt;br&gt;
canonical_url: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/joinwell52-AI/FCoP/blob/main/essays/when-agents-learn-from-their-own-wreckage.en.md&quot;&gt;https://github.com/joinwell52-AI/FCoP/blob/main/essays/when-agents-learn-from-their-own-wreckage.en.md&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;cover-image-https-direct-url-to-image-jpg&quot;&gt;cover_image: &lt;a rel=&quot;nofollow&quot; href=&quot;https://direct_url_to_image.jpg&quot;&gt;https://direct_url_to_image.jpg&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&quot;use-a-ratio-of-100-42-for-best-results-&quot;&gt;Use a ratio of 100:42 for best results.&lt;/h2&gt;
&lt;h2 id=&quot;published-at-2026-05-13-09-12-0000&quot;&gt;published_at: 2026-05-13 09:12 +0000&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;A Field Report from the codeflow Project · Fourteen Emergences in One Day · How FCoP Pulled Them Back In&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;When Agents Learn From Their Own Wreckage: a single-day field report of fourteen emergences inside the codeflow project, and how the FCoP protocol pulled the useful ones back in.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: FCoP Maintainers · 2026-05-12&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;tl-dr&quot;&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;On 2026-05-12, in approximately six hours, the codeflow project — serving as FCoP's first large-scale dogfood stress test — produced:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fourteen agent emergences&lt;/strong&gt; (PM sequence #44–#54, 11 total; OPS sequence I-12 / I-13 / I-14, 3 total; QA I-5, 1 total);&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three P0-level incidents&lt;/strong&gt;: USER HOME global pollution, long-filename &quot;topic tails,&quot; and GATE self-collision;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two on-the-spot frontmatter inventions&lt;/strong&gt;: the &lt;code&gt;supersedes:&lt;/code&gt; field and the &lt;code&gt;status: aborted&lt;/code&gt; semi-structured usage;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero protocol crashes&lt;/strong&gt; — every emergence was resolved by the agents themselves using the protocol's principles or tooling, and FCoP's maintainers subsequently launched four TASKs to pull the &quot;worth keeping&quot; items back into the protocol.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The significance of that day wasn't that &quot;agents performed brilliantly&quot; — PM #50 wrote rule files into the &lt;strong&gt;user's home directory&lt;/strong&gt;, OPS I-14 let a GATE check &lt;strong&gt;catch its own description&lt;/strong&gt; — both are protocol red cards. The significance was: &lt;strong&gt;agent hits wall → self-corrects → protocol absorbs&lt;/strong&gt; — this chain ran end-to-end at hour-level speed for the first time, and the FCoP protocol skeleton itself &lt;strong&gt;didn't grow new mandatory rules&lt;/strong&gt; to accommodate it. It only filled in fields, documentation sections, and guard rails that were already missing.&lt;/p&gt;
&lt;p&gt;This is the field report for that day.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;1-what-happened-that-day-timeline&quot;&gt;1 · What Happened That Day / Timeline&lt;/h3&gt;
&lt;p&gt;The timeline below was reconstructed from PM-01's running reports to ADMIN. All commit hashes and timestamps come from real git history and PM report bodies, unembellished.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;A note on paths&lt;/strong&gt;: codeflow is the project's external name, but the on-disk project root retains an early temporary name &lt;code&gt;D:\Bridgeflow&lt;/code&gt; (not yet renamed). All &lt;code&gt;D:\Bridgeflow&lt;/code&gt; references below point to the codeflow project root.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Time (UTC+8) &lt;/th&gt;&lt;th&gt;Event &lt;/th&gt;&lt;th&gt;Commit / File &lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;14:11 &lt;/td&gt;&lt;td&gt;T2.1 REPORT bucket fix &lt;/td&gt;&lt;td&gt;&lt;code&gt;d8c6576&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Protocol cleanup&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;14:12 &lt;/td&gt;&lt;td&gt;T2.2 legacy ghost mv &lt;/td&gt;&lt;td&gt;&lt;code&gt;3fef210&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Protocol cleanup&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15:20 &lt;/td&gt;&lt;td&gt;T2.3 &lt;code&gt;codeflow.json&lt;/code&gt; rm &lt;/td&gt;&lt;td&gt;&lt;code&gt;d4ff03b&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Protocol cleanup&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;15:35:06&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;&lt;strong&gt;PM calls &lt;code&gt;redeploy_rules()&lt;/code&gt; without first calling &lt;code&gt;set_project_dir()&lt;/code&gt;&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;&lt;strong&gt;4 protocol files land in &lt;code&gt;C:\Users\Administrator\&lt;/code&gt;&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;&lt;strong&gt;PM #50 · USER HOME pollution&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15:35:30 &lt;/td&gt;&lt;td&gt;PM self-audits and finds the pollution &lt;/td&gt;&lt;td&gt;Lists all 31 user-fcop tools, locates &lt;code&gt;set_project_dir&lt;/code&gt; as the fix key &lt;/td&gt;&lt;td&gt;PM self-correction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15:36:00 &lt;/td&gt;&lt;td&gt;PM backs up + deletes the 4 USER HOME files &lt;/td&gt;&lt;td&gt;Backup to &lt;code&gt;.scratch/pm50-user-home-pollution-20260512-1535/&lt;/code&gt;, 332,749 B fully verified &lt;/td&gt;&lt;td&gt;PM self-correction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15:36:24 &lt;/td&gt;&lt;td&gt;PM runs &lt;code&gt;set_project_dir(D:\Bridgeflow)&lt;/code&gt; then reruns &lt;/td&gt;&lt;td&gt;T2.4 + T2.5 both land GREEN &lt;/td&gt;&lt;td&gt;PM self-correction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15:40 &lt;/td&gt;&lt;td&gt;ADMIN independently verifies USER HOME 0 residue &lt;/td&gt;&lt;td&gt;&lt;code&gt;Test-Path&lt;/code&gt; all &lt;code&gt;False&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Closed&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:07:39 &lt;/td&gt;&lt;td&gt;OPS-013 completes in a flash &lt;/td&gt;&lt;td&gt;&lt;code&gt;b4ef8aa&lt;/code&gt; · 35 files / 11,329 lines / 9 GATEs all PASS &lt;/td&gt;&lt;td&gt;OPS I-12 sprint&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:07 &lt;/td&gt;&lt;td&gt;&lt;strong&gt;OPS discovers GATE G6.1 description self-collides&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;TASK-010 v2 §5 regex literal caught by cached diff grep itself &lt;/td&gt;&lt;td&gt;&lt;strong&gt;OPS I-14 · GATE self-collision&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:07 &lt;/td&gt;&lt;td&gt;OPS self-decides to use semantic evidence instead of naive grep &lt;/td&gt;&lt;td&gt;Separate checks: staged filename + PEM header literal &lt;/td&gt;&lt;td&gt;OPS I-14 self-correction&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:07 &lt;/td&gt;&lt;td&gt;&lt;strong&gt;OPS invents &lt;code&gt;supersedes:&lt;/code&gt; frontmatter field&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;REPORT-013 rescues REPORT-011 numbering conflict &lt;/td&gt;&lt;td&gt;&lt;strong&gt;OPS · frontmatter emergence&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:11 &lt;/td&gt;&lt;td&gt;PM self-discloses #54 candidate &lt;/td&gt;&lt;td&gt;TASK-010 v2 §6 reply-ID conflicts with stage list logic &lt;/td&gt;&lt;td&gt;PM self-disclosure&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16:23 &lt;/td&gt;&lt;td&gt;ADMIN asks: &quot;Do these emergences ever stop? What's the endgame?&quot; &lt;/td&gt;&lt;td&gt;——  &lt;/td&gt;&lt;td&gt;Design-philosophy-layer question&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Roughly ten more sub-emergences occurred in between. For length, this article only covers the three P0 incidents and two frontmatter emergences in detail. Those five carry all the arguments.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-cross-sections-of-the-three-p0s&quot;&gt;2 · Cross-Sections of the Three P0s&lt;/h3&gt;
&lt;h4 id=&quot;2-1-pm-50-user-home-global-pollution&quot;&gt;2.1 PM #50 · USER HOME Global Pollution&lt;/h4&gt;
&lt;p&gt;This was the most dangerous event of the day.&lt;/p&gt;
&lt;p&gt;At &lt;code&gt;15:35:06&lt;/code&gt;, the codeflow PM executed P4.9 Tier 2's T2.4 (&lt;code&gt;redeploy_rules()&lt;/code&gt; — deploying the four-part protocol bundle) &lt;strong&gt;without first calling &lt;code&gt;set_project_dir(path=&quot;D:\\Bridgeflow&quot;)&lt;/code&gt; to bind the project root&lt;/strong&gt;. At the time, &lt;code&gt;fcop-mcp&lt;/code&gt;'s behavior was: &lt;strong&gt;if no explicit binding exists, fall back to the MCP process's cwd&lt;/strong&gt;. That process's cwd happened to be &lt;code&gt;C:\Users\Administrator\&lt;/code&gt; — the user's home directory.&lt;/p&gt;
&lt;p&gt;Result:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;C:\Users\Administrator\.cursor\rules\fcop-rules.mdc      ←   42,532 B
C:\Users\Administrator\.cursor\rules\fcop-protocol.mdc   ←   68,737 B
C:\Users\Administrator\AGENTS.md                         ←  110,740 B
C:\Users\Administrator\CLAUDE.md                         ←  110,740 B
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All four FCoP protocol files &lt;strong&gt;landed globally in the user's home directory&lt;/strong&gt; — where they would be injected into the system prompt of &lt;strong&gt;every Cursor project on this machine&lt;/strong&gt;. Any project not using FCoP would suddenly and silently &lt;strong&gt;start obeying FCoP protocol rules&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PM self-audited 25 seconds later, located the fix via the MCP tool list, backed up + deleted + rebound + reran, completing self-correction at 15:36:24. ADMIN independently verified 0 USER HOME residue at 15:40.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key observation&lt;/strong&gt;: The &lt;code&gt;set_project_dir&lt;/code&gt; tool's schema documentation &lt;strong&gt;explicitly warned about this symptom&lt;/strong&gt;. But PM hadn't read the schema — they &lt;strong&gt;called it directly from the signature&lt;/strong&gt;: &quot;API exists / arguments valid&quot; was equivalent in PM's engineering intuition to &quot;safe to call.&quot; This is a &lt;strong&gt;protocol education blind spot&lt;/strong&gt;, not a personal failure of this PM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is a protocol red card&lt;/strong&gt;: any user who runs &lt;code&gt;redeploy_rules()&lt;/code&gt; without explicit binding can reproduce the same pollution. FCoP's maintainers subsequently launched &lt;code&gt;TASK-001 + 002&lt;/code&gt;, covering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write-side MCP tools must &lt;strong&gt;explicitly verify binding before first call&lt;/strong&gt; — no binding = refuse with &lt;code&gt;WriteRefused&lt;/code&gt; ConfigError;&lt;/li&gt;
&lt;li&gt;Add USER HOME to a deny-list;&lt;/li&gt;
&lt;li&gt;Add a version mismatch warning to the top of &lt;code&gt;fcop_report()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is about taking &quot;the protocol knew but the agent didn't read it&quot; and &lt;strong&gt;moving it into tool behavior&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id=&quot;2-2-long-filenames-the-topic-tail-emergence&quot;&gt;2.2 Long Filenames · The &quot;Topic Tail&quot; Emergence&lt;/h4&gt;
&lt;p&gt;During the afternoon PM dispatched a batch of tasks, filenames appeared like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TASK-20260512-009-PM-to-OPS-codeflow-json-rm.md
TASK-20260512-010-PM-to-OPS-T2-4-T2-5-commit.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;FCoP's task filename regex requires &lt;code&gt;TASK-{date}-{seq}-{sender}-to-{recipient}.md&lt;/code&gt;. The segment &lt;code&gt;OPS-codeflow-json-rm&lt;/code&gt; contains lowercase — technically &lt;strong&gt;violating&lt;/strong&gt; the &lt;code&gt;_ROLE&lt;/code&gt; regex.&lt;/p&gt;
&lt;p&gt;Why did PM write it this way? Not rebellion. Under &lt;strong&gt;extreme task density&lt;/strong&gt; (14 tasks in one day), PM needed to &lt;strong&gt;visually distinguish tasks at the filename level&lt;/strong&gt;. Real engineering pressure. PM invented an emergency workaround because the protocol didn't provide a &quot;topic field.&quot;&lt;/p&gt;
&lt;p&gt;PM self-corrected around task #010 — moved topic to the &lt;code&gt;# Title&lt;/code&gt; heading in the task body. Unilateral self-correction, without any fcop-mcp interception or ADMIN prompt.&lt;/p&gt;
&lt;p&gt;Protocol maintainers chose &lt;strong&gt;not to change the protocol&lt;/strong&gt; (option 3 of 3): the need to see topics via &lt;code&gt;ls tasks/&lt;/code&gt; can be solved by adding &lt;code&gt;--with-title&lt;/code&gt; to the &lt;code&gt;list_tasks&lt;/code&gt; tool. But &lt;strong&gt;holding the slot&lt;/strong&gt; — if this same topic-tail emergence recurs two more times in three months, we'll upgrade.&lt;/p&gt;
&lt;p&gt;This is a live example of a &quot;deliberately don't absorb&quot; decision. &lt;strong&gt;Not every emergence should be absorbed.&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id=&quot;2-3-ops-i-14-gate-self-collision&quot;&gt;2.3 OPS I-14 · GATE Self-Collision&lt;/h4&gt;
&lt;p&gt;At &lt;code&gt;16:07&lt;/code&gt;, OPS ran into a classic engineering problem. PM had written in the TASK document, G6.1:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cached diff must have 0 matches for &lt;code&gt;\.env(?!\.example)|\.aws/credentials|\.ssh/id_rsa|BEGIN [A-Z]+ PRIVATE KEY&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But the TASK file itself was staged into the same commit. If OPS ran naive &lt;code&gt;git diff --cached | rg '&amp;lt;entire pattern&amp;gt;'&lt;/code&gt;, the regex would &lt;strong&gt;match the TASK document body's own description text&lt;/strong&gt; — a false positive FAIL.&lt;/p&gt;
&lt;p&gt;This is &lt;strong&gt;validator-validates-itself&lt;/strong&gt; in a FCoP protocol setting.&lt;/p&gt;
&lt;p&gt;OPS's self-determined fix: &lt;strong&gt;split secret detection into two independent evidence dimensions&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Dimension &lt;/th&gt;&lt;th&gt;What to check &lt;/th&gt;&lt;th&gt;Implementation&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Filename &lt;/td&gt;&lt;td&gt;Actual secret file paths &lt;/td&gt;&lt;td&gt;&lt;code&gt;git diff --cached --name-only \\| rg '\.env$\\|/credentials$\\|/id_rsa$'&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Content literal &lt;/td&gt;&lt;td&gt;Actual PEM file header &lt;/td&gt;&lt;td&gt;&lt;code&gt;git diff --cached \\| rg 'BEGIN [A-Z]+ PRIVATE KEY'&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;These two steps separate &quot;a real secret&quot; from &quot;text describing a secret.&quot;&lt;/p&gt;
&lt;p&gt;OPS I-14 looks like &quot;a small GATE tweak,&quot; but what it taught the protocol is significant: &lt;strong&gt;FCoP's protocol rules contain no GATE design chapter&lt;/strong&gt;. FCoP's maintainers subsequently launched &lt;code&gt;TASK-003&lt;/code&gt; to add a &lt;strong&gt;&lt;code&gt;GATE Design Pitfalls&lt;/code&gt;&lt;/strong&gt; section to &lt;code&gt;fcop-protocol.mdc&lt;/code&gt;, writing OPS I-14 in as Case 1.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-two-on-the-spot-frontmatter-inventions&quot;&gt;3 · Two On-the-Spot Frontmatter Inventions&lt;/h3&gt;
&lt;p&gt;At &lt;code&gt;16:07&lt;/code&gt;, OPS also invented a frontmatter field with no explicit definition in the FCoP protocol.&lt;/p&gt;
&lt;p&gt;The situation: a logical conflict — a file cannot simultaneously be staged as historical archive and written as a new reply.&lt;/p&gt;
&lt;p&gt;OPS didn't wait for PM to reissue v3, didn't open an ISSUE — they &lt;strong&gt;directly opened a new number REPORT-013&lt;/strong&gt; and added one line to the frontmatter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
protocol: fcop
version: 1
kind: report
report_id: REPORT-20260512-013
supersedes: REPORT-20260512-011-OPS-to-PM    ← OPS's on-the-spot invention
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;supersedes:&lt;/code&gt; &lt;strong&gt;doesn't exist in FCoP's protocol frontmatter field list&lt;/strong&gt;. OPS invented it on the spot. The semantics are clear, strictly consistent with Rule 5 (append-only).&lt;/p&gt;
&lt;p&gt;FCoP's maintainers subsequently launched &lt;code&gt;TASK-004&lt;/code&gt; to standardize it: added &lt;code&gt;supersedes:&lt;/code&gt; to &lt;code&gt;fcop-protocol.mdc&lt;/code&gt;, to JSON Schema, and bumped &lt;code&gt;fcop_protocol_version&lt;/code&gt; from &lt;strong&gt;2.0.0 to 2.1.0&lt;/strong&gt;. The first MINOR version bump caused directly by an agent's on-the-spot emergence.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-four-types-of-emergence&quot;&gt;4 · Four Types of Emergence&lt;/h3&gt;
&lt;p&gt;Not all emergences belong in the protocol. The 14 emergences of this day can be sorted into four types:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Type &lt;/th&gt;&lt;th&gt;Meaning &lt;/th&gt;&lt;th&gt;Today's Examples &lt;/th&gt;&lt;th&gt;Handling&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Universal&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Affects all FCoP projects / all agents &lt;/td&gt;&lt;td&gt;PM #50, OPS I-14, OPS &lt;code&gt;supersedes:&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Absorb into rules / protocol / tool behavior&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Team-specific&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Only meaningful to certain team types &lt;/td&gt;&lt;td&gt;No clear examples today &lt;/td&gt;&lt;td&gt;Absorb into team templates&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Project-specific&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Only meaningful for codeflow &lt;/td&gt;&lt;td&gt;PM Self-Constraint 11 v1.2, 9.2 v2.5 dimensions &lt;/td&gt;&lt;td&gt;Goes into project's &lt;code&gt;fcop/shared/RULES-*.md&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;One-time&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Hit by coincidence, unlikely to recur &lt;/td&gt;&lt;td&gt;Long-filename topic tails &lt;/td&gt;&lt;td&gt;Goes into essays / REPORT history&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The first category is the protocol skeleton's true customer. Three instances today, corresponding to 4 &lt;code&gt;TASK-001~004&lt;/code&gt; pull-backs. &lt;strong&gt;The maintainers rejected most emergences&lt;/strong&gt; — that's the key to keeping the skeleton stable.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-hitting-walls-isn-t-a-bug-it-s-the-protocol-s-early-warning-system&quot;&gt;5 · Hitting Walls Isn't a Bug — It's the Protocol's Early Warning System&lt;/h3&gt;
&lt;p&gt;The fundamental logic of protocol design is: &lt;strong&gt;you can't assume every agent is careful&lt;/strong&gt; — because agents are models, models are statistical systems, statistical systems have error rates.&lt;/p&gt;
&lt;p&gt;After PM #50 hit the wall, what FCoP's maintainers learned wasn't &quot;PM should be more careful,&quot; but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;fcop-mcp's current cwd fallback behavior is dangerous&lt;/strong&gt;, must change;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warnings must become refusals&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;fcop_report()&lt;/code&gt; should proactively alert&lt;/strong&gt; rather than passively waiting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each of these takes &quot;agent personal responsibility&quot; and &lt;strong&gt;moves it to tool behavior layer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For every &quot;agent hits wall&quot; event, &lt;strong&gt;the correct protocol response is to ask &quot;what is the protocol itself missing?&quot;&lt;/strong&gt; — not &quot;how can the agent do better?&quot; Agents are the protocol's early warning system, not the protocol's adversaries.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-task-001-004-the-pull-back-inventory&quot;&gt;6 · TASK-001 ~ 004 · The Pull-Back Inventory&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;TASK-001 + 002  · fcop-mcp 1.4 · write-side binding guard + USER HOME deny-list
    Emergence absorbed:  PM #50 (USER HOME pollution)
    Layer:               Tool behavior layer
    Protocol impact:     No protocol version bump; only tool changes

TASK-003       · fcop-protocol.mdc add GATE Design Pitfalls section
    Emergence absorbed:  OPS I-14 (GATE self-collision)
    Layer:               Protocol commentary (added section)
    Protocol impact:     No version bump

TASK-004       · supersedes: frontmatter field standardization
    Emergence absorbed:  OPS supersedes: on-the-spot invention
    Layer:               Protocol field layer
    Protocol impact:     fcop_protocol_version 2.0.0 → 2.1.0 (MINOR additive)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The rules file itself wasn't changed&lt;/strong&gt; (Rule 0–9 main body untouched). This is today's most important observation: &lt;strong&gt;the protocol skeleton withstood one high-density dogfood without being pressured into new mandatory rules&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;7-a-closing-note&quot;&gt;7 · A Closing Note&lt;/h3&gt;
&lt;p&gt;codeflow isn't FCoP's first project, but it's the first to &lt;strong&gt;push the protocol to its limits&lt;/strong&gt; — fourteen emergences in one day is far beyond any previous dogfood site's density.&lt;/p&gt;
&lt;p&gt;The protocol isn't written for perfect agents. It's written for agents that will hit walls. The 14 emergences of that day are each evidence that &lt;strong&gt;the protocol is working correctly&lt;/strong&gt; — because the wall-hitting happened, was seen, was handled, was categorized, some absorbed, some rejected.&lt;/p&gt;
&lt;p&gt;The next time will happen. We're already waiting for it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Related&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/joinwell52-AI/FCoP&quot;&gt;FCoP on GitHub&lt;/a&gt; — Protocol spec, source, and all essays&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/joinwell52-AI/FCoP/blob/main/essays/why-the-protocol-stays-short.en.md&quot;&gt;Why the Protocol Stays Short&lt;/a&gt; — Design philosophy companion to this essay&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/joinwell52-AI/FCoP/blob/main/essays/gate-design-pitfalls-case-studies.en.md&quot;&gt;When the Validator Catches Itself&lt;/a&gt; — GATE case study&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/joinwell52-AI/FCoP/blob/main/essays/the-supersedes-field-story.en.md&quot;&gt;The Supersedes Field Story&lt;/a&gt; — The supersedes field journey&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;*&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;*FCoP Maintainers · 2026-05-12&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/17758/when-agents-learn-from-their-own-wreckage</guid>
<pubDate>Wed, 13 May 2026 18:35:36 +0000</pubDate>
</item>
<item>
<title>Multi-Agent Architecture: When One Bot Isn't Enough</title>
<link>https://coderlegion.com/9308/multi-agent-architecture-when-one-bot-isnt-enough</link>
<description>&lt;p&gt;You built an AI agent. It works pretty well. Handles customer inquiries. Processes simple requests. Saves your team time.&lt;/p&gt;
&lt;p&gt;Then you try to make it do more. Handle edge cases. Manage complex workflows. Coordinate across multiple systems.&lt;/p&gt;
&lt;p&gt;And it starts breaking down.&lt;/p&gt;
&lt;p&gt;Not because the AI is bad. But because you're asking one agent to be everything. That doesn't scale.&lt;/p&gt;
&lt;p&gt;The teams getting real results? They're not building better general-purpose agents. They're building specialized agent teams that work together.&lt;/p&gt;
&lt;h3 id=&quot;why-general-purpose-agents-fail-at-scale&quot;&gt;Why General-Purpose Agents Fail at Scale&lt;/h3&gt;
&lt;p&gt;A general-purpose agent tries to handle every task reasonably well. Customer service. Data analysis. System monitoring. Process automation.&lt;/p&gt;
&lt;p&gt;This works for simple implementations. But it breaks down as complexity increases.&lt;/p&gt;
&lt;p&gt;The problem is context management. Each additional capability requires more context. More examples. More edge case handling. The agent's &quot;attention&quot; gets divided across too many responsibilities.&lt;/p&gt;
&lt;p&gt;It's like hiring one person to do sales, engineering, finance, and operations. They might handle basics in each area. But they won't excel at any of them.&lt;/p&gt;
&lt;p&gt;Specialized agents solve this. Each agent focuses on one domain. It gets better at that specific thing. And it coordinates with other specialized agents when needed.&lt;/p&gt;
&lt;h3 id=&quot;the-project-alice-pattern&quot;&gt;The Project ALICE Pattern&lt;/h3&gt;
&lt;p&gt;IBM Research built a system called Project ALICE (Agentic Logic for Incident and Codebug Elimination) that shows this pattern clearly. It's designed to find bugs in production systems.&lt;/p&gt;
&lt;p&gt;Instead of one agent trying to analyze incidents, understand code, and identify root causes, ALICE uses three specialized agents working sequentially:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An incident analysis agent&lt;/strong&gt; gathers observability data from the affected system. Metrics, logs, traces. It understands what data matters for debugging.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A code context agent&lt;/strong&gt; builds a dependency graph showing how different services connect. It identifies which microservices are relevant to the problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A code analysis agent&lt;/strong&gt; pinpoints where the bug lives in the codebase. It generates a detailed report with exact observability information and code details.&lt;/p&gt;
&lt;p&gt;Each agent does one thing well. Together, they solve complex problems that a single agent would struggle with.&lt;/p&gt;
&lt;p&gt;Early results show 10-25% improvement in root cause identification compared to single-agent approaches.&lt;/p&gt;
&lt;p&gt;That improvement comes from specialization, not better AI models.&lt;/p&gt;
&lt;h3 id=&quot;sequential-vs-parallel-orchestration&quot;&gt;Sequential vs. Parallel Orchestration&lt;/h3&gt;
&lt;p&gt;Agent teams coordinate in two main patterns: sequential and parallel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sequential orchestration&lt;/strong&gt; means agents work one after another. The output of one agent feeds into the next. This makes sense when each step depends on the previous one.&lt;/p&gt;
&lt;p&gt;The ALICE example is sequential. You can't build the code dependency graph until you know which systems are involved. You can't pinpoint the bug until you understand the dependencies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parallel orchestration&lt;/strong&gt; means multiple agents work simultaneously on different aspects of a problem. This works when tasks are independent but need to be combined at the end.&lt;/p&gt;
&lt;p&gt;Example: A content moderation system might run separate agents in parallel to check text for spam, hate speech, misinformation, and policy violations. Each agent specializes in detecting one type of problem. The results combine into a single moderation decision.&lt;/p&gt;
&lt;p&gt;The choice between sequential and parallel depends on your workflow. If steps must happen in order, use sequential. If tasks are independent, use parallel.&lt;/p&gt;
&lt;h3 id=&quot;communication-protocols-between-agents&quot;&gt;Communication Protocols Between Agents&lt;/h3&gt;
&lt;p&gt;Agents need a way to pass information to each other. The communication protocol matters.&lt;/p&gt;
&lt;p&gt;The Model Context Protocol (MCP) is becoming standard for this. It defines how agents share data and coordinate actions.&lt;/p&gt;
&lt;p&gt;MCP lets agents work with external models and tools that also use the protocol. This means your agent team can integrate with third-party agents without custom integration work.&lt;/p&gt;
&lt;p&gt;The alternative is building custom communication layers for each agent interaction. That works but doesn't scale. When you have five agents, you potentially need ten integration points. Ten agents means forty-five integration points.&lt;/p&gt;
&lt;p&gt;Standard protocols solve this. Agents that speak MCP can coordinate without custom work.&lt;/p&gt;
&lt;h3 id=&quot;specialization-examples-that-work&quot;&gt;Specialization Examples That Work&lt;/h3&gt;
&lt;p&gt;Here are agent specializations that show up repeatedly in production systems:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data retrieval agents&lt;/strong&gt; pull information from specific sources. One agent handles database queries. Another handles API calls. A third handles document search. Each understands the nuances of its data source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analysis agents&lt;/strong&gt; process data and identify patterns. A fraud detection agent looks for suspicious transactions. A sentiment analysis agent processes customer feedback. A performance monitoring agent tracks system metrics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Action agents&lt;/strong&gt; execute tasks. An email agent sends notifications. A workflow agent triggers processes. An update agent modifies records in systems of record.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Orchestration agents&lt;/strong&gt; coordinate other agents. They understand workflows and decide which agents to activate and in what order.&lt;/p&gt;
&lt;p&gt;This separation lets you build complex systems from reusable components. The same data retrieval agent can serve multiple analysis agents. The same action agent can be triggered by different orchestration agents.&lt;/p&gt;
&lt;h3 id=&quot;reusability-strategies&quot;&gt;Reusability Strategies&lt;/h3&gt;
&lt;p&gt;The value in multi-agent architecture comes from reusing specialized agents across different workflows.&lt;/p&gt;
&lt;p&gt;One insurance company built a claims processing system with specialized agents for document extraction, fraud checking, coverage verification, and payout calculation. These same agents now support multiple workflows: new claims, claim amendments, claim appeals, and fraud investigations.&lt;/p&gt;
&lt;p&gt;They didn't build four separate systems. They built reusable agents that combine differently based on the workflow.&lt;/p&gt;
&lt;p&gt;The key is designing agents with clear inputs and outputs. If an agent expects specific data formats and produces predictable results, it can slot into multiple workflows.&lt;/p&gt;
&lt;p&gt;Contrast this with a monolithic agent that handles entire workflows. You can't reuse parts of it. You either use the whole thing or build something new.&lt;/p&gt;
&lt;h3 id=&quot;error-handling-when-agents-conflict&quot;&gt;Error Handling When Agents Conflict&lt;/h3&gt;
&lt;p&gt;Multi-agent systems introduce a new failure mode: agents producing conflicting outputs.&lt;/p&gt;
&lt;p&gt;One agent says approve the purchase. Another says deny it because it exceeds budget. Both agents are working correctly. But their conclusions conflict.&lt;/p&gt;
&lt;p&gt;You need strategies for handling this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Priority hierarchies&lt;/strong&gt; define which agent's output takes precedence. Security agents might always override approval agents. Compliance agents might override convenience features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Escalation to humans&lt;/strong&gt; happens when agents can't resolve conflicts. The system flags the conflict, presents both sides, and asks for human judgment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Voting systems&lt;/strong&gt; work when multiple agents analyze the same question. If three fraud detection agents say a transaction is clean and one flags it, the majority wins. But if it's 2-2, escalate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reconciliation agents&lt;/strong&gt; specifically handle conflicts. They understand the logic of other agents and apply rules to resolve disagreements.&lt;/p&gt;
&lt;p&gt;The worst approach is ignoring conflicts. If two agents produce opposite conclusions and your system just picks one arbitrarily, you'll get unpredictable behavior that's hard to debug.&lt;/p&gt;
&lt;h3 id=&quot;when-to-use-multi-agent-architecture&quot;&gt;When to Use Multi-Agent Architecture&lt;/h3&gt;
&lt;p&gt;Not every system needs multiple agents. The added complexity only makes sense when you're getting clear benefits.&lt;/p&gt;
&lt;p&gt;Use multi-agent architecture when:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your workflow has distinct stages.&lt;/strong&gt; If your process naturally breaks into separate steps, specialized agents for each step probably make sense.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You need reusability.&lt;/strong&gt; If the same capabilities apply across multiple workflows, building specialized agents you can recombine beats building separate systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You're hitting context limits.&lt;/strong&gt; If a single agent can't maintain enough context to handle your use case well, breaking into specialized agents helps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You need parallel processing.&lt;/strong&gt; If parts of your workflow can run simultaneously, multiple agents working in parallel get results faster.&lt;/p&gt;
&lt;p&gt;Don't use multi-agent architecture when:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your workflow is simple.&lt;/strong&gt; If one agent handles everything well, don't add complexity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The overhead isn't worth it.&lt;/strong&gt; If coordination between agents takes more effort than the value they provide, stick with a single agent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You're just starting.&lt;/strong&gt; Build with one agent first. Add more only when you hit clear limitations.&lt;/p&gt;
&lt;h3 id=&quot;orchestration-layer-design&quot;&gt;Orchestration Layer Design&lt;/h3&gt;
&lt;p&gt;Someone needs to coordinate the agent team. This is the orchestration layer.&lt;/p&gt;
&lt;p&gt;The orchestration layer decides which agents to activate, in what order, and with what inputs. It manages the workflow and handles agent outputs.&lt;/p&gt;
&lt;p&gt;You can build this as:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A dedicated orchestration agent&lt;/strong&gt; that understands workflows and coordinates other agents.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hardcoded orchestration&lt;/strong&gt; where your application code defines the workflow and calls agents directly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Event-driven orchestration&lt;/strong&gt; where agents subscribe to events and trigger based on what happens in the system.&lt;/p&gt;
&lt;p&gt;Each approach has tradeoffs. Dedicated orchestration agents are flexible but add complexity. Hardcoded orchestration is simple but rigid. Event-driven orchestration scales well but can be harder to debug.&lt;/p&gt;
&lt;p&gt;For most teams, start with hardcoded orchestration. It's the easiest to understand and debug. Move to agent-based or event-driven orchestration only when you need the flexibility.&lt;/p&gt;
&lt;h3 id=&quot;the-customer-service-example&quot;&gt;The Customer Service Example&lt;/h3&gt;
&lt;p&gt;Here's how multi-agent architecture works in practice.&lt;/p&gt;
&lt;p&gt;A customer service system uses specialized agents:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intent classification agent&lt;/strong&gt; determines what the customer wants. Refund? Technical support? Account question?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context retrieval agent&lt;/strong&gt; pulls relevant customer history, past interactions, account status, and order details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Response generation agent&lt;/strong&gt; creates the actual response based on intent and context.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sentiment analysis agent&lt;/strong&gt; monitors customer frustration and escalates to humans if needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Action execution agent&lt;/strong&gt; processes refunds, updates accounts, or creates support tickets.&lt;/p&gt;
&lt;p&gt;Each agent does one thing. Together, they handle complex customer interactions.&lt;/p&gt;
&lt;p&gt;Compare this to a single customer service agent that tries to do everything. It needs to understand intents, retrieve context, generate responses, monitor sentiment, and execute actions. The complexity makes it harder to optimize any single capability.&lt;/p&gt;
&lt;p&gt;With specialized agents, you can improve intent classification without affecting response generation. You can upgrade the context retrieval logic without touching sentiment analysis. Changes don't cascade across the system.&lt;/p&gt;
&lt;h3 id=&quot;testing-multi-agent-systems&quot;&gt;Testing Multi-Agent Systems&lt;/h3&gt;
&lt;p&gt;Testing gets more complex with multiple agents. You're not just testing individual agent behavior. You're testing how they work together.&lt;/p&gt;
&lt;p&gt;Focus testing on:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent inputs and outputs.&lt;/strong&gt; Each agent should produce consistent results for the same inputs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integration points.&lt;/strong&gt; Test that agents pass information correctly to each other.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workflow completion.&lt;/strong&gt; Test that the full agent sequence completes successfully.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conflict scenarios.&lt;/strong&gt; Test what happens when agents produce conflicting outputs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Failure handling.&lt;/strong&gt; Test that when one agent fails, the system handles it gracefully.&lt;/p&gt;
&lt;p&gt;The investment in testing pays off. Multi-agent systems fail in new ways. Good testing catches problems before production.&lt;/p&gt;
&lt;h3 id=&quot;performance-considerations&quot;&gt;Performance Considerations&lt;/h3&gt;
&lt;p&gt;Multiple agents mean multiple API calls, which means latency and cost.&lt;/p&gt;
&lt;p&gt;Sequential orchestration adds latency because each agent waits for the previous one. If three agents each take 2 seconds, you're looking at 6 seconds total.&lt;/p&gt;
&lt;p&gt;Parallel orchestration helps when agents can run simultaneously. Three agents running in parallel for 2 seconds each still complete in 2 seconds.&lt;/p&gt;
&lt;p&gt;Cost matters too. Each agent call costs money. Five agents processing every request costs more than one agent processing every request.&lt;/p&gt;
&lt;p&gt;The tradeoff is capability versus cost. If specialized agents deliver significantly better results, the cost is worth it. If they deliver marginally better results, maybe stick with one agent.&lt;/p&gt;
&lt;h3 id=&quot;build-agent-teams-not-superhero-agents&quot;&gt;Build Agent Teams, Not Superhero Agents&lt;/h3&gt;
&lt;p&gt;The instinct when an agent isn't working well is to make it smarter. Give it more context. Better prompts. Bigger models.&lt;/p&gt;
&lt;p&gt;Sometimes that works. But often you're asking one agent to do too much.&lt;/p&gt;
&lt;p&gt;The better approach: build specialized agents that each excel at one thing. Coordinate them through clear orchestration patterns. Design for reusability so the same agents support multiple workflows.&lt;/p&gt;
&lt;p&gt;This is harder to build initially. You're managing multiple components instead of one. But it scales better. It's easier to optimize. And it produces more reliable results.&lt;/p&gt;
&lt;p&gt;Single agents make sense for simple use cases. But when you need agents handling complex, multi-step workflows across different systems, you need teams.&lt;/p&gt;
&lt;p&gt;The question isn't whether your agent is smart enough. It's whether you've given it a team to work with.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/9308/multi-agent-architecture-when-one-bot-isnt-enough</guid>
<pubDate>Tue, 06 Jan 2026 14:10:33 +0000</pubDate>
</item>
</channel>
</rss>