Repository navigation
Description
A repo-wide review for legacy and dead code (Python, frontend, TUI, workflows, packaging, tests and docs) turned up about 220k lines that can go, plus a few real bugs. The PRs below remove them; each is independent and can merge in any order. The table maps each area to its issue and PR. The second list is debt the review found but left alone, because it needs a maintainer decision or is waiting on other work.
In review
| Area | Issue | PR |
|---|---|---|
MCP server dropped a tool's directory argument (a live bug) |
#7017 | #7028 (merged) |
The deprecated gaia-agent-chat shim, plus a guard so a leftover install can't claim old ids |
#6103 | #7035 (merged) |
| Dead packaging, CI and script entries (~8k lines) | #7018 | #7034 (merged) |
| Orphaned and finished docs, examples that import missing names (~13k lines) | #7019 | #7038 |
| Tests that can never run or that cover removed code | #7020 | #7033 |
Deprecated shims and unreferenced code in src/gaia |
#7021 | #7042 |
Silent except: pass in the agent's system-context collectors |
#7022 | #7032 |
| Boolean flags for the removed cloud providers | #7023 | #7043 |
Dormant gaia:// install link and unused IPC in the desktop app |
#7024 | #7030 |
| Example Electron app and the unused shared Electron framework | #4829, #4820 | #7039 |
| TUI dead code, a stray script, deprecated viewport calls | #4792 | #7029 (merged) |
| Email MCP parity test reads mcp 1.x field names | — | #7050 |
| RAG hints name a tool the flagship doesn't have | #7059 | #7063 |
| Unused routes and helpers in the UI backend, daemon and connectors | #7056 | #7069 |
| Three failures that reported success or nothing (automations, Lemonade readiness, Slack) | #7057 | #7067 |
| Dead eval modules and repo tools | #7058 | #7065 |
| Two CI Lemonade launch scripts merged into one | #7060 | #7064 |
| Eval cost: unpriced Claude models billed as Sonnet | — | #7077 |
| Uncalled code and duplicated helpers in audio, chat, vlm, skills, rag, web; broken n8n example | #7073, #3308 | #7079 |
| Scratchpad table names merging into one table | #7075 | #7080 |
| Configured MCP servers vanishing with no message | #7074 | #7081 |
| Tool names that don't exist in the agent's confirmation tables | #7072 | #7085 |
| Stale repo config, AI-tool metadata, unreferenced doc assets | #7082 | #7086 |
| Dead per-PR gating in eval workflows, unused composite action | #7087 | #7090 |
| Agent UI styles and a banner nothing renders | #7088 | #7096 |
| TUI error pointing at the removed hub screen, duplicated helpers | #7089 | #7095 (stacked on #7029) |
| Daemon copying chat history and memory to an unread folder | #7092 | #7097 |
| Two failing remedies, dead settings, stale docs | #7093 | #7098 |
| Standalone email agent removal (~172k lines) | #6102, #4825 | #7108 |
Merge notes: Several PRs show installer-journey or rate-limit CI failures that aren't caused by them; each PR has a comment saying which.
Left for a decision or for other work
-
After feat!: remove the standalone email agent #7108 merges (maintainer only): deprecate
@amd-gaia/agent-emailon npm andgaia-agent-emailon PyPI, and removeemailfrom the hub index. -
Stale custody copies already written by the daemon (fix(daemon): first start copies chat history and memory to a folder nothing reads #7092): deleting them on upgrade needs a decision.
-
The "lite" model tier and the TUI recommended-model list (chore: last small fixes from the tech-debt sweep (two failing remedies, dead settings, stale docs) #7093): both name models that aren't registered.
-
Agent authoring toolchain and templates (Remove the separate-agent authoring toolchain: GAIA has one harness now #4826 vs chore(agents): keep one template, remove the other examples #6104): the two issues disagree on whether
gaia agent initstays. -
examples/scripts: kept and to be refreshed with current features (docs(examples): refresh examples/ to show current SDK features #7052; Remove examples/: standalone custom-agent scripts outside the single harness #4828 closed). -
Six never-built plans (docs: review never-built plans, keep/remove/update each #4846): keep/drop calls.
-
lemonade_client.pysplit and dead paths (refactor(llm): split lemonade_client.py and delete its dead code #4238): large refactor, planned separately. -
Infra CLI cleanup (Infra cleanup: dead CLI code, unreachable branches, stale comments, missing headers #4786): already assigned.
-
The C++ native-agent packaging lane: in development, tracked in ci(cpp): give the native agent packaging lane a consumer, or retire it #7053.
-
Bare-env secret delivery to sidecars (feat(daemon): deliver sidecar launch secret via 0600 file, not bare env (V2-3) #2149): needs a minimum-sidecar-version check first.
-
gaia kill --lemonadecalls the removedlemonade-server stop: covered by open PR fix(cli): stop the Lemonade Server GAIA uses in gaia kill --lemonade #6991.
🔍 Technical details
Smaller follow-ups the review noted:
hub/agents/{email,gaia}/python/packaging/carry forked copies ofpublish_to_r2.py,eval_summary.pyand friends.- The docs' social-card image (
docs/assets/logo/dark.png, 10 MB) needs a smaller replacement (chore: prune stale repo config, AI-tool metadata and unreferenced doc assets #7082). - 19 workflows install
uvwith an unpinnedcurl | sh; six already use the pinned action.
Activity
github-actions commentedon Nov 9, 2026
I checked all eleven PRs and #6991. They're all still open. Ten show as mergeable, and GitHub hasn't finished computing that for #7038 and #6991.
Two of the smaller follow-ups may need their own issues, because I couldn't find one for either:
main. They fail on every run until fixed, so every PR's test results look worse than they are.🔍 Technical details
tests/mcp/test_email_mcp_stdio_parity.py:210still asserts onresult.isError.isErrorand for unknown-model pricing returned only this tracker.test(mcp): read mcp 2.x result fields in the email stdio parity test (#…