The most expensive class of agent error is recommending a function that doesn't exist. Users follow the recommendation, hit the wall, and distrust the tool for the rest of the session. The defence is simple: verify before recommending.
Whenever you're about to type a function name and your confidence isn't backed by a recent grep.
LLM training data is a snapshot. Real codebases drift. Memory is ephemeral. The only authoritative source for "does this symbol exist" is the working tree (and, for recently-removed symbols, git history).
This codebase has a lot of recent churn that makes stale citations likely. Examples that are real: the hubs: frontmatter field and HubSyncFilter were deleted in 2.4.0, HybridSearchService.rerank() and the whole KG page-level rerank are gone, the unused page-locking API (PageManager.lockPage and friends) was removed in 2.4.29, getJSP() became getRoutePath(), the jspwiki.* property keys became wikantik.*, and the MCP API-key scope mcp is now mcp_admin. CHANGELOG.md records removals and renames under its "Removed" and "Changed" headings, so it is the fastest way to find out what happened to a name.
The frontmatter steps are the canonical verification ladder: grep, then the right source of truth for that kind of name, then CHANGELOG.md and git log -S, then suspect a rename, then admit defeat. Each rung adds confidence; reaching the bottom rung without a hit is itself the answer.
The frontmatter pitfalls are the recurring failure modes. The "rephrasing to sound more authoritative" antipattern is especially damaging — it converts a low-confidence guess into high-confidence output without adding any evidence.
Cluster Hub: Agent Cookbook (agent-cookbook)