Skip to content

feat: multi-ACP team template (proto + claude) + coder escalation#32

Merged
mabry1985 merged 2 commits into
mainfrom
feat/team-template-multi-acp
Jul 3, 2026
Merged

feat: multi-ACP team template (proto + claude) + coder escalation#32
mabry1985 merged 2 commits into
mainfrom
feat/team-template-multi-acp

Conversation

@mabry1985

Copy link
Copy Markdown
Contributor

Summary

  • examples/team-template/langgraph-config.yaml is now a proper multi-ACP recipe: it
    declares both supported ACP coders — proto (proto --acp) and claude
    (claude-code, the adapter alias for claude-agent-acp, which takes no launch args)
    — and enables the coder plugin (ADR 0064) alongside delegates + project_board.
  • project_board.coders is now a smart: protoreasoning: claude model-tier ladder
    over the two ACP agents (was a single-coder fast/smart: proto ladder).
  • Added a coder: config block (delegate: proto) + a comment explaining it's the
    execution-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).
  • Added a "Team template" field reference to README.md: every section of the
    shipped template explained (sentinels, identity/model gateway-inherit,
    agent_runtime, the two ACP delegates, project_board.coders + how tier-escalation
    works, the coder plugin as the search-ladder escalation, filesystem), cross-linking
    ADR 0055 (multi-team) and ADR 0064 (coder).
  • Extended tests/test_team_spawn.py with a content contract over the shipped template
    (parses; declares delegates/project_board/coder; both ACP delegates with the
    right command/args/workdir; the smartreasoning coders ladder; coder.delegate
    points at a declared delegate; filesystem fenced to {{REPO}}) so a future edit can't
    silently drop a delegate or break the ladder.
  • Bumped portfolio to 0.15.0 (manifest + pyproject, kept in lockstep per
    tests/test_packaging.py). No CHANGELOG file exists in this repo, so none was added.
  • secrets.example.yaml next to the template was left untouched — it doesn't reference
    delegates.

Gate output

=== ruff check . ===
All checks passed!
=== ruff format --check . ===
8 files already formatted
=== pytest -q ===
........................................................................ [ 57%]
.....................................................                    [100%]
=============================== warnings summary ===============================
.../fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with
  `starlette.testclient` is deprecated; install `httpx2` instead.
    from starlette.testclient import TestClient as TestClient  # noqa

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
125 passed, 1 warning in 2.13s

(125 = 119 pre-existing + 6 new shipped-template content-contract tests. Ran with
pip install -r requirements-dev.txt ruff==0.15.10 on Python 3.12, matching
.github/workflows/ci.yml.)

Test plan

  • ruff check . clean
  • ruff format --check . clean
  • pytest -q — 125 passed
  • examples/team-template/langgraph-config.yaml parses and matches the spec
    (verified inline + via the new tests)
  • Reviewer: confirm the coder.delegate: proto default reads sensibly, and that
    pointing users at docs/adr/0055-*.md / docs/adr/0064-*.md in the main
    protoAgent repo is the right cross-link convention for this plugin repo

🤖 Generated with Claude Code

mabry1985 and others added 2 commits July 3, 2026 11:25
…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>
@mabry1985 mabry1985 marked this pull request as ready for review July 3, 2026 19:04
@mabry1985 mabry1985 merged commit 67276f6 into main Jul 3, 2026
1 check passed
@mabry1985 mabry1985 deleted the feat/team-template-multi-acp branch July 3, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant