fix: stop spawning thirteen agents that do not exist - #40
Merged
Conversation
Phases 7-9 spawned seven subagents by name and six did not exist. The reference docs were worse: agent-roster.md and docs/agents.md between them presented thirteen non-existent agents as usable, six in the Build-loop table, and SKILL.md carried the same list plus a worked Agent(backend-architect, ...) example. A spawn that resolves to nothing does not raise and does not warn. The phase carries on as though the work were done, so a team ran Phase 7 and api-docs.md simply never appeared. The root cause was one false claim: docs/agents.md listed these under "Built-in Claude Code subagents - Claude Code runtime - 13+". They were never runtime built-ins. Believing they came free is why nobody built them. The fix follows what already worked. Phases 0-3 and the Build loop spawn nothing via Agent(...) and never did; they describe their work as steps. Phases 7-9 now do the same. build-error-resolver spawns are kept because it genuinely ships. The docs now state the distinction that decides this: a skill runs in the main context with the surrounding work in view, which is what authoring needs, while an agent starts cold, which is what reviewing needs. docs/phase-lifecycle.md had said "No custom SDLC agents are spawned during Documentation / Deployment / Monitoring" the whole time. It was right, and nothing reconciled it against the phase files that disagreed. Also completes #36's sweep: SKILL.md still documented the phaseNN- report convention, which the earlier pass missed. Adds test_agent_references.py, globbing every doc rather than a hand-listed pair - the first pass at this fix corrected two files and left the same claims in three others. It parses agent-table columns rather than matching backticks, so phase slugs are not mistaken for agent names. Proven by reintroducing a phantom spawn and a phantom table row. 574 passed, 6 skipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEA6GZUG9NKNQYrJKyDGdb
MCKRUZ
changed the base branch from
docs/command-reference-and-markers
to
master
August 1, 2026 21:01
MCKRUZ
added a commit
that referenced
this pull request
Aug 1, 2026
The 1.0.1 corrective stack (#37-#40) landed on master first, so this branch takes its version and changelog. Resolution: 1.1.0 is the shipped version and supersedes 1.0.1; both changelog sections are kept, newest first. Two corrections made while resolving: - marketplace.json auto-merged to 1.0.1 because this branch bumped plugin.json and never touched the marketplace manifest. Both now read 1.1.0; shipping them disagreeing is how a marketplace serves a stale version. - 1.1.0 was dated 2026-07-31, the day the branch was cut. It ships today, so it carries today's date rather than sitting above 1.0.1 with an earlier one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEA6GZUG9NKNQYrJKyDGdb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #29.
Stacked on #39 (→ #38 → #37). Merge in order; GitHub retargets automatically.
Bigger than filed
I filed this as six phantom agents in phases 7–9. The real count across the repo is thirteen:
api-tester,backend-architect,devops-automator,doc-updater,e2e-runner,feedback-synthesizer,frontend-developer,performance-benchmarker,rapid-prototyper,refactor-cleaner,tdd-guide,test-writer-fixer, andcode-revieweras a claimed built-in.Six of them sit in the Build-loop table — the most-exercised part of the product.
references/agent-roster.mdcalls itself "the authoritative reference for agent orchestration decisions" and two-thirds of what it listed was fiction.SKILL.md— the file Claude actually reads — carried the same list plus a workedAgent(backend-architect, ...)example.Why it does real damage
A spawn that resolves to nothing does not raise and does not warn. The phase carries on as though the work were done. A team runs Phase 7, the definition says the API documentation is being generated, and
api-docs.mdnever appears.The root cause
One false claim in
docs/agents.md:They were never runtime built-ins. Only
ExploreandPlancome from the runtime;security-reviewerships inharness/agents/. Believing the rest came free is almost certainly why nobody ever built them.The fix follows what already worked
Phases 0–3 and the Build loop spawn nothing via
Agent(...)and never did — they describe their work as steps, and they work. Phases 7–9 were the outlier.07-documentation.mdSteps 1–2RUNBOOK.md—08-deployment.mdSteps 2, 409-monitoring.mdStep 1test-writerandapi-patternskills, and/sdlc-spikebuild-error-resolverspawns are kept — it genuinely ships.The docs now state the principle that decides this: a skill runs in the main context with the surrounding work in view, which is what authoring needs; an agent starts cold, which is what reviewing needs. That, not a persona name, is the test for whether to delegate.
Corroboration:
docs/phase-lifecycle.mdsaid "No custom SDLC agents are spawned during Documentation / Deployment / Monitoring" the whole time. It was right. Nothing ever reconciled it against the phase files that disagreed.Also here
Completes #36's sweep —
SKILL.mdstill documented thephaseNN-report convention, which the earlier pass missed because its glob coveredphases/,docs/andcommands/but notSKILL.mdorreferences/. Both guards are now glob-driven over the whole repo.Test plan
CHANGELOG.md(history) andharness/agents/README.md(a deliberate catalogue of external agents a team may optionally pull — left as-is)Agent()spawn, once with a phantom roster row, and again againstSKILL.mdafter the parser was tightenedbuild,close) and spec statusesNote for review
This rewrites prose in five documents including
SKILL.md. The mechanical claims are all test-enforced now, but the wording deserves your eye — particularly the skill-versus-agent framing inSKILL.mdandreferences/agent-roster.md, since that is new guidance rather than a correction.🤖 Generated with Claude Code