From 8fabebe3256b27a4d672b490febda24c8ff9f387 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 22 May 2026 13:17:08 +0200 Subject: [PATCH] chore(meta): retire obsolete team-test.md and update references The tmux teammate-mode investigation is resolved (works on 2.1.148; the 'broken regression' was a teammateMode: in-process config issue). Per the file's own cleanup note, delete it now that the test passes. Update the two references: - decisions/questions-process.md: replace the stale 'partially broken' pointer with the resolved status. - whats-next/SKILL.md: the 'custom subagent_types lose SendMessage' caveat is fixed (all agents now carry SendMessage + Task tools), so reword and drop the dead team-test.md link. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/whats-next/SKILL.md | 4 +- decisions/questions-process.md | 2 +- team-test.md | 88 ------------------------------ 3 files changed, 4 insertions(+), 90 deletions(-) delete mode 100644 team-test.md diff --git a/.claude/skills/whats-next/SKILL.md b/.claude/skills/whats-next/SKILL.md index 9bf64ba47..136ad6f92 100644 --- a/.claude/skills/whats-next/SKILL.md +++ b/.claude/skills/whats-next/SKILL.md @@ -93,7 +93,9 @@ Wait for user confirmation before proceeding to Step 2. Spawn one Si agent per ticket in the confirmed batch, running in parallel. Use `general-purpose` subagent_type with Si's personality baked into the -prompt (custom subagent_types lose SendMessage — see team-test.md). +prompt. (The `si` subagent_type now works directly too — all agent +definitions carry the team coordination tools, SendMessage + Task, as of the +agent-teams tooling fix; they load at lead startup.) For each ticket, spawn: diff --git a/decisions/questions-process.md b/decisions/questions-process.md index d1b3e4995..f841c0231 100644 --- a/decisions/questions-process.md +++ b/decisions/questions-process.md @@ -175,7 +175,7 @@ The findings file separates the agent's reasoning from its authority. Binary gat **Related:** - `feedback_broken_tests_not_preexisting_shield.md` — pattern sprints may enable -- `team-test.md` — Claude Code harness test results (tmux teams partially broken v2.1.123) +- tmux teammate mode: confirmed working on Claude Code 2.1.148 (the earlier "broken" status was a `teammateMode: in-process` config issue, not a regression) - Epic #854 — pipeline discipline automation - D-166 — cascade phases diff --git a/team-test.md b/team-test.md deleted file mode 100644 index 05e7d67cb..000000000 --- a/team-test.md +++ /dev/null @@ -1,88 +0,0 @@ -# Team Tmux Pane Test - -## Problem - -`teammateMode: "tmux"` is broken in Claude Code v2.1.117-119. Agents spawn as -invisible background processes instead of getting their own tmux panes. This is -a regression — tmux panes worked correctly on this machine through Sprint 35 -(see `~/.claude/teams/sprint-35-*/config.json` for proof: `backendType: "tmux"` -with real pane IDs). - -## Relevant GitHub issues - -- https://github.com/anthropics/claude-code/issues/51818 — teammate CLI crash on permission_response -- https://github.com/anthropics/claude-code/issues/52337 — subagent Ink rendering crash on Edit/Write - -## Config (already set, do not change) - -- `.claude/settings.json` has `"teammateMode": "tmux"` and `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` -- tmux is running, `$TMUX` is set, `TERM=tmux-256color` - -## Version gate - -**Always start by looking up the release notes** for any versions between the last -tested version and the current one. Check the GitHub releases page at -`https://github.com/anthropics/claude-code/releases` for fixes related to teams, -tmux, teammates, or the tracked issues below. If the release notes show no relevant -fixes, log the version as SKIPPED (no relevant fixes) and stop — do not run the -test procedure. - -**Check `claude --version` first.** If the version appears in the "Tested versions" -log below, the bug was already confirmed broken on that release — do not re-test. -Only run the test procedure on a version not yet logged. - -### Tested versions - -| Version | Date | Result | -|---------|------|--------| -| 2.1.119 | 2026-04-25 | BROKEN — no tmux pane, no team config on disk | -| 2.1.120–122 | 2026-04-30 | SKIPPED — release notes show no teams/tmux/teammate fixes; #51818 and #52337 still open (dupes of #51855, unreleased) | -| 2.1.123 | 2026-04-30 | PARTIAL — tmux pane spawns, config on disk correct (backendType: tmux, paneId: %23). Custom subagent_type ("qatux") missing SendMessage — can receive but not send. General-purpose subagent_type has SendMessage — two-way comms work. BOTH types fail to process shutdown_request. TeamDelete reports success but does NOT kill the tmux pane — agent process keeps running, requires manual ctrl-c + exit. | -| 2.1.123 (workshop) | 2026-04-30 | UPDATE — full workshop run with 4 general-purpose agents. Two-way comms confirmed for all. shutdown_request processed successfully by all 4 agents (contradicts earlier single-agent test). TeamDelete cleaned up correctly. Workaround: use general-purpose subagent_type with personality baked into prompt instead of custom subagent_type. | -| 2.1.124–2.1.147 | 2026-05-22 | NOT SEPARATELY TESTED — relevant fixes in range: 2.1.133 (subagent SendMessage cwd restore + skill discovery), 2.1.139 (agent view research preview — unified session list), 2.1.144 (background subagent completion notifications), 2.1.145 (Agent Teams non-ASCII name header fix). Cluster of background-session fixes 2.1.140–2.1.143 signals a shift to an in-process/daemon background-agent model. Tested cumulatively at 2.1.148. | -| 2.1.148 | 2026-05-22 | NOT A BUG — root cause found. Agent spawned `backendType: "in-process"` because `.claude/settings.json` actually contains `"teammateMode": "in-process"`, NOT `"tmux"` as the "Config" section of this file wrongly claimed. The in-process backend behaved exactly as configured. All split-pane prerequisites ARE met: tmux 3.6a in PATH, running inside tmux (CC in pane %5, `$TMUX` set), `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`. Per official docs (code.claude.com/docs/en/agent-teams), `teammateMode` values are `auto` (panes if inside tmux, else in-process) / `tmux` (force panes) / `in-process` (force main terminal). Setting it to `"tmux"` or `"auto"` should produce split panes. Functional results in-process mode: two-way comms WORK with custom subagent_type "qatux" (it sent its message — improvement over 2.1.123 single-agent), shutdown_request processed cleanly, TeamDelete cleaned up correctly. **The "broken regression" premise of this file was a stale/incorrect config claim, not a Claude Code defect.** | -| 2.1.148 (auto re-test) | 2026-05-22 | INCONCLUSIVE (needs restart) — flipped `.claude/settings.json` to `"teammateMode": "auto"` mid-session and re-spawned. Agent STILL spawned in-process (pane count unchanged %0–%6, qatux `backendType=in-process`, lead `backendType` empty). Cause: `teammateMode` is read at session startup and cached — a live edit is not picked up by the running session. The new `"auto"` value is on disk. **Next step: restart Claude Code, then re-run the spawn test. With `auto` + inside tmux (CC was in pane %5) + tmux 3.6a in PATH, teammates should spawn in split panes.** If auto still fails post-restart, set `"tmux"` explicitly. | -| 2.1.148 (post-restart, auto) | 2026-05-22 | WORKS + ROOT CAUSE OF SUBAGENT GAP FOUND. After restart, `teammateMode: "auto"` + inside tmux spawned qatux in a real split pane (`backendType: "tmux"`, paneId `%7`). CONFIRMED the 2.1.123 finding: a custom `subagent_type` whose agent definition has a restricted `tools:` list does NOT get the team-coordination tools injected in pane mode — qatux had only Read/Edit/Write/Bash; SendMessage "exists but is not enabled"; TaskCreate/TaskUpdate/TaskList/Agent absent entirely. (In-process mode does inject SendMessage — backend-inconsistent, contradicts the docs which say coordination tools are always available.) Consequence: such a teammate can't message AND can't return a shutdown_response, so it orphans its pane on shutdown (requires manual `tmux kill-pane`). FIX: added `SendMessage` to the `tools:` frontmatter of all 21 agent definitions in `.claude/agents/`. Re-spawned qatux → SendMessage works AND clean shutdown works (pane self-closes, no orphan), picked up at spawn with NO session restart needed. **Net: the feature is fully functional on 2.1.148; the only real defect is that custom restricted-tool subagents need coordination tools listed explicitly to work as pane-mode teammates.** | - -## Test procedure - -1. Check version: `claude --version` -2. If the version is already in the "Tested versions" table above, **stop here** — - log nothing, do not spawn agents. Report that the version is unchanged. -3. Create a team and spawn one agent: - -``` -TeamCreate: team_name = "tmux-test" -Agent: name = "qatux", subagent_type = "qatux", model = "sonnet", - run_in_background = true, - prompt = "You are a test agent. Message the team lead: 'tmux pane test — I am alive.' Then stay idle." -``` - -4. Check: did a new tmux pane appear? Run `tmux list-panes -a` to verify. -5. Check: does `~/.claude/teams/tmux-test/config.json` exist and contain `backendType: "tmux"`? -6. Log the result in the "Tested versions" table above (version, date, BROKEN/FIXED + notes). -7. If BROKEN, clean up any leftover team state and stop. If FIXED, proceed to "Cleanup". - -## Expected result (when fixed) - -- A new tmux pane opens with the Qatux session visible -- Team config on disk shows `backendType: "tmux"` with a real pane ID -- Agent is reachable via SendMessage - -## Actual result (v2.1.119) - -- No tmux pane appears -- No team config directory created on disk -- Agent runs as invisible background process - -## Context - -This blocks the generation-cascade workshop (ticket #897, Sprint 38). The full -workshop has 3 participants (Gestalt, Tyre, Miri) + Qatux documenter, 3 rounds. -Team and tasks are already created — once tmux panes work again, spawn the -agents and go. See `docs/workshops/generation-cascade/BRIEF.md` for the full -workshop brief. - -## Cleanup - -Delete this file and `TeamDelete` the tmux-test team once the test passes.