Silent External-Source Rot
Anti-pattern: an agent keeps reporting success while a wrapped external source has silently changed structure, so its tool returns valid-but-empty or degraded output that nothing watches.
Problem
When the source mutates, the fetch still succeeds at the transport layer: the page returns 200, the API returns a well-formed envelope, the corpus still has rows. The extraction underneath, a CSS selector or a field path or a relevance match, now pulls nothing useful, so the tool hands back a structurally-valid but empty or stale payload. The agent has no signal that the content rotted, runs its normal flow on near-empty input, and reports success. Because the failure is silent, it is discovered late, often only when a downstream human notices the output got thin.
Solution
This entry names the anti-pattern; the corrective is to put a source-health canary between the tool and the agent. After each fetch, assert content-level expectations the source should always meet: a non-empty extraction, a row or token count within a learned range, presence of marker fields, and a freshness timestamp newer than a threshold. When an assertion fails, the run halts or routes to a degraded-mode fallback and raises an alert instead of feeding the empty payload forward as if it were real data. The baseline is recorded once from a known-good run and re-checked on every fetch, so a layout or schema change surfaces on the next run rather than after a human notices thin output ten days later.
When to use
- An agent depends on a scraped page, a third-party API, or a refreshed retrieval corpus it does not control.
- A tool node fetches that source on every run and the agent acts on whatever comes back without a content-quality check.
- Failures would show as thin or empty output rather than as an error, so they stay invisible until a human notices.
Open the full interactive page →
Diagram, neighbourhood map, code examples, related patterns and full provenance.