feat: multi-ACP team template (proto + claude) + coder escalation#32
Merged
Conversation
…eld reference The shipped team-template now declares BOTH supported ACP coders (proto, claude-code) and enables the coder plugin (ADR 0064) as the search-ladder escalation for hard verifiable features the model-tier coders ladder (smart -> reasoning) can't pass. Add a "Team template" field reference to README.md documenting every section for users (sentinels, gateway-inherit, delegates, the coders ladder, the coder plugin, filesystem), cross-linking ADR 0055 and ADR 0064. Extend the shipped-template tests with a content contract (parses, declares both delegates + the coders ladder + the coder plugin) so a future edit can't silently drop a delegate. Bump portfolio to 0.15.0 (manifest + pyproject, kept in lockstep). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
projectBoard's TIER_LADDER is smart -> reasoning -> opus (three rungs). Architectural-difficulty features start at "opus", and any feature climbs there after failing "reasoning" — but the shipped template's coders map only declared smart/reasoning. An unmapped tier falls back to project_board.coder (default "proto"), so escalating past "reasoning" silently DEMOTED the top rung back to the same coder as "smart" — the opposite of "climb to a bigger brain" the README already promises. Map opus -> claude (the strongest of the two declared delegates) so escalation is monotonic; update the field reference + golden test to match. Also propagate the "coder" plugin into the handful of docstrings/comments that still enumerated the template's external plugins as just (project_board, github) — stale now that the shipped template enables coder too, and inconsistent with examples/README.md's own updated list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Summary
examples/team-template/langgraph-config.yamlis now a proper multi-ACP recipe: itdeclares both supported ACP coders —
proto(proto --acp) andclaude(
claude-code, the adapter alias forclaude-agent-acp, which takes no launch args)— and enables the
coderplugin (ADR 0064) alongsidedelegates+project_board.project_board.codersis now asmart: proto→reasoning: claudemodel-tier ladderover the two ACP agents (was a single-coder
fast/smart: protoladder).coder:config block (delegate: proto) + a comment explaining it's theexecution-grounded search-ladder escalation (greedy → best-of-k → tree-search) for
hard, verifiable features the coders ladder above still can't pass — a different axis
than model-tier escalation, and only for a trusted model/host (subprocess isolation,
not a true sandbox).
README.md: every section of theshipped template explained (sentinels,
identity/modelgateway-inherit,agent_runtime, the two ACPdelegates,project_board.coders+ how tier-escalationworks, the
coderplugin as the search-ladder escalation,filesystem), cross-linkingADR 0055 (multi-team) and ADR 0064 (coder).
tests/test_team_spawn.pywith a content contract over the shipped template(parses; declares
delegates/project_board/coder; both ACP delegates with theright
command/args/workdir; thesmart→reasoningcoders ladder;coder.delegatepoints at a declared delegate; filesystem fenced to
{{REPO}}) so a future edit can'tsilently drop a delegate or break the ladder.
portfolioto 0.15.0 (manifest + pyproject, kept in lockstep pertests/test_packaging.py). NoCHANGELOGfile exists in this repo, so none was added.secrets.example.yamlnext to the template was left untouched — it doesn't referencedelegates.Gate output
(125 = 119 pre-existing + 6 new shipped-template content-contract tests. Ran with
pip install -r requirements-dev.txt ruff==0.15.10on Python 3.12, matching.github/workflows/ci.yml.)Test plan
ruff check .cleanruff format --check .cleanpytest -q— 125 passedexamples/team-template/langgraph-config.yamlparses and matches the spec(verified inline + via the new tests)
coder.delegate: protodefault reads sensibly, and thatpointing users at
docs/adr/0055-*.md/docs/adr/0064-*.mdin the mainprotoAgentrepo is the right cross-link convention for this plugin repo🤖 Generated with Claude Code