Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 59 additions & 47 deletions catalogs/foundation/upstream-surface-dispositions.json
Original file line number Diff line number Diff line change
Expand Up @@ -225,15 +225,15 @@
},
{
"key": "claude:env:CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS",
"disposition": "adopt-pending",
"reason": "User order 2026-10-04 (rule 3). NativeStack has 1, 2604 unset. Additions env merges key by key (new_wsl_client_config.py:466-467).",
"source": "https://code.claude.com/docs/en/env-vars.md",
"disposition": "enabled",
"reason": "CC rule 18: \"The CC leads at most 3 teammates\"; switch set. command-center/cc-tools/CC-RULES-ADDENDUM-20261006.md:9-23.",
"source": "https://code.claude.com/docs/en/env-vars.md#L293",
"carrier": "adoption/new-wsl/templates/claude.settings.additions.json",
"value": "1",
"scope": "NativeStack2604",
"overturn": "User revokes the 10-04 order, or teams leave experimental under another switch.",
"reviewed_utc": "2026-10-04T16:23:19Z",
"version": "2.1.289"
"scope": "\"The CC leads at most 3 teammates\"; \"forbids writes\" by brief",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Enforce the claimed narrow team scope in the carrier

For any non-CC session rendered from the new-WSL profile, this scope is not actually enforced: adoption/new-wsl/templates/claude.settings.additions.json sets CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 globally in user settings, and its client-config-map.json entry is ordinary practice wiring with no teammate-count or write restriction. Since examples/claude-native/workflows/README.md confirms that any named spawn becomes a teammate while the switch is enabled, this row incorrectly records a narrow adoption while the carrier applies host-wide; scope the carrier/launcher accordingly or record the actual scope.

AGENTS.md reference: AGENTS.md:L17-L18

Useful? React with 👍 / 👎.

"overturn": "The CC changes rule 18's \"The CC leads at most 3 teammates\" or \"forbids writes\" scope, or upstream changes the switch.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:env:CLAUDE_CODE_EXTRA_BODY",
Expand Down Expand Up @@ -693,15 +693,15 @@
},
{
"key": "claude:env:MCP_PROTOCOL_NEGOTIATION",
"disposition": "declined",
"reason": "Unset already probes HTTP servers, and stdio servers as Anthropic rolls that out (v2.1.285+); forcing auto has no measured gain.",
"source": "https://code.claude.com/docs/en/mcp.md",
"disposition": "default-on",
"reason": "Upstream 2.1.292 defaults stdio to revision 2026-07-28 on every install; unset keeps the default and legacy opts out.",
"source": "https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L76",
"carrier": null,
"value": null,
"scope": null,
"overturn": "a token-stack stdio server needs revision 2026-07-28 before the rollout reaches us",
"reviewed_utc": "2026-10-04T16:23:19Z",
"version": "2.1.289"
"overturn": "A server compatibility failure requires the documented legacy opt-out, or upstream changes the protocol default.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:env:MCP_SDK_GENERATION",
Expand Down Expand Up @@ -1065,39 +1065,39 @@
},
{
"key": "claude:hook:TaskCompleted",
"disposition": "declined",
"reason": "off on both hosts (read 2026-10-04)); the repository decision at docs/decisions/2026-09-28-terminal-experience.md:333 names it",
"source": "docs/decisions/2026-09-28-terminal-experience.md:333",
"disposition": "not-applicable",
"reason": "Opus/Sonnet 5.5 Task tools are withdrawn without TODO opt-in (CHANGELOG 2.1.268 L1986); TaskCompleted cannot fire in that scope.",
"source": "https://code.claude.com/docs/en/hooks.md#L2509-L2513",
"carrier": null,
"value": null,
"scope": null,
"overturn": "the record is superseded by a measured result",
"reviewed_utc": "2026-10-04T18:55:00Z",
"version": "2.1.289"
"scope": "5.5 models without TODO opt-in",
"overturn": "A team needs ordered tasks and the owner enables CLAUDE_CODE_ENABLE_TODO_TOOLS before launch.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:hook:TaskCreated",
"disposition": "declined",
"reason": "off on both hosts (read 2026-10-04)); the repository decision at docs/decisions/2026-09-28-terminal-experience.md:333 names it",
"source": "docs/decisions/2026-09-28-terminal-experience.md:333",
"disposition": "not-applicable",
"reason": "Current Opus/Sonnet 5.5 runs omit Task tools; TaskCreated does not fire without TaskCreate.",
"source": "https://code.claude.com/docs/en/hooks.md#L2455-L2457",
"carrier": null,
"value": null,
"scope": null,
"overturn": "the record is superseded by a measured result",
"reviewed_utc": "2026-10-04T18:55:00Z",
"version": "2.1.289"
"scope": "5.5 models without TODO opt-in",
"overturn": "A team needs ordered tasks and the owner enables CLAUDE_CODE_ENABLE_TODO_TOOLS before launch.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:hook:TeammateIdle",
"disposition": "declined",
"reason": "off on both hosts (read 2026-10-04)); the repository decision at docs/decisions/2026-09-28-terminal-experience.md:333 names it",
"source": "docs/decisions/2026-09-28-terminal-experience.md:333",
"carrier": null,
"disposition": "adopt-pending",
"reason": "Pending a claim-locator exit-2 gate after the first real team run; no installed handler or lifecycle acceptance is recorded.",
"source": "https://code.claude.com/docs/en/hooks.md#L2699-L2728",
"carrier": "Claude user settings hooks.TeammateIdle (planned)",
"value": null,
"scope": null,
"overturn": "the record is superseded by a measured result",
"reviewed_utc": "2026-10-04T18:55:00Z",
"version": "2.1.289"
"scope": "CC-led agent teams",
"overturn": "After the first real team run, the owner installs the bounded locator gate; an upstream hook change reopens the recipe.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:hook:UserPromptExpansion",
Expand Down Expand Up @@ -1137,15 +1137,15 @@
},
{
"key": "claude:mod:cc-plugin-you-should-know",
"disposition": "adopt-pending",
"reason": "User order 2026-10-04 (rule 3): 2604 and the shared template. Side-agent tokens counted separately. Needs telemetry on; 2604 env sets no DISABLE_TELEMETRY.",
"source": "https://code.claude.com/docs/en/plugins/mods/overview.md",
"carrier": "adoption/templates/claude.settings.template.json",
"disposition": "enabled",
"reason": "Configured enabled; side-agent activity and costs remain unattributed. Keep separate native usage when an event identifies it.",
"source": "https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L421",
"carrier": "adoption/new-wsl/templates/claude.settings.additions.json",
"value": "true",
"scope": "NativeStack2604",
"overturn": "User withdraws the order, or its measured side-agent cost outweighs its flags.",
"reviewed_utc": "2026-10-04T16:23:19Z",
"version": "2.1.289"
"overturn": "The owner disables the mod, or changed upstream evidence warrants a different choice.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:setting:advisorModel",
Expand Down Expand Up @@ -1389,15 +1389,15 @@
},
{
"key": "claude:setting:crossSessionInbound",
"disposition": "adopt-pending",
"reason": "The user's 2026-10-02 yes on messaging and his 2026-10-04 directive overturn the wave-2 ruling: an authorization piece on 2604",
"source": "https://code.claude.com/docs/en/settings-reference.md",
"disposition": "enabled",
"reason": "The accept delivery policy is applied; the previous pending disposition was stale.",
"source": "https://code.claude.com/docs/en/cross-session-messaging.md#L191-L199",
"carrier": "adoption/new-wsl/templates/claude.settings.additions.json (authorization class)",
"value": "accept",
"scope": "NativeStack2604",
"overturn": "a measured unwanted delivery without a hold, or the user asks for hold",
"reviewed_utc": "2026-10-04T18:55:00Z",
"version": "2.1.289"
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:setting:deniedMcpServers",
Expand Down Expand Up @@ -2239,6 +2239,18 @@
"reviewed_utc": "2026-10-04T18:55:00Z",
"version": "2.1.289"
},
{
"key": "claude:setting:teammateMode",
"disposition": "default-on",
"reason": "Unset uses documented in-process display; split panes remain outside this narrow adoption.",
"source": "https://code.claude.com/docs/en/agent-teams.md#L107-L111",
"carrier": null,
"value": null,
"scope": "Claude agent teams",
"overturn": "The owner selects another display mode, or upstream changes the documented default.",
"reviewed_utc": "2026-10-06T22:15:38Z",
"version": "2.1.292"
},
{
"key": "claude:setting:theme",
"disposition": "enabled",
Expand Down
61 changes: 61 additions & 0 deletions docs/decisions/2026-10-06-agent-teams-carrier-corrections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Decision: correct current agent-team carriers and preserve their history

Date: 2026-10-06. Lane: foundation. Status: decided; repository record awaiting
independent review.

## Context

The [October 5 context-budget decision](2026-10-05-harness-context-budget.md#relocated-passage-contracts-amended-by-pr-726)
bound relocated workflow passages to frozen byte contracts. Its passage 09/10
claims need corrections in the current workflow guidance. The command center's
October 6 feature check and historical-record preservation direction authorize
the current-carrier correction and this separate linked record.

## Decision

Correct the [current agent-team guidance](../../examples/claude-native/workflows/README.md)
and the eight named rows in the [upstream dispositions catalog](../../catalogs/foundation/upstream-surface-dispositions.json).
The agent-teams switch is enabled under CC rule 18's narrow scope. Catalog
states retain the supported schema; applied settings, pending hook installation
and upstream defaults remain distinct.

The docs give an in-process teammate its definition's effort; the v2.1.288
changelog confirms that behavior only for plugin agents. The configured lead
and project-agent paths here both specify max, so that distinction does not
change their declared effort. Actual runtime effort for user/project agents
remains unverified. Opus/Sonnet 5.5 have no shared task list without the explicit
TODO-tool opt-in; current guidance records that qualification.

Update the active [passage contracts](../../tests/fixtures/harness-context-moves/contracts.json)
to the new [09-20261006.txt](../../tests/fixtures/harness-context-moves/09-20261006.txt)
and [10-20261006.txt](../../tests/fixtures/harness-context-moves/10-20261006.txt)
fixtures: 865 and 2,034 UTF-8 bytes including their terminating line endings.
These are corrected-text contracts, not new context-savings measurements or
native acceptance results. The original [09.txt](../../tests/fixtures/harness-context-moves/09.txt)
and [10.txt](../../tests/fixtures/harness-context-moves/10.txt) snapshots, the
October 5 decision and its measurements remain unchanged. The other nine
active contracts keep their original bytes.

## Alternatives and revisit condition

Retaining the old current guidance would preserve claims contradicted or
qualified by upstream evidence. Rewriting the October 5 record or its snapshots
would obscure what was originally measured. Correcting the current carriers
with new contracts and this linked record preserves both the usable guidance
and its evidence history.

Revisit the guidance when newer upstream docs or releases change team effort,
task-tool availability or the named feature defaults, or when the CC changes
rule 18's scope. Compare the new primary evidence with these pinned sources;
issue another linked record and update current carriers if it supersedes them.

## Sources

- [Agent-team docs, effort](https://code.claude.com/docs/en/agent-teams.md#L277)
and [in-process default](https://code.claude.com/docs/en/agent-teams.md#L107-L111).
- [Claude Code v2.1.292 changelog, v2.1.288 plugin-agent effort fix](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365).
- [Same pinned changelog, v2.1.268 TODO-tool qualification](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L1986).
- Private source locators: `coordination/e2e-truth-20261006/feature-gap-wf_2da8a9ff-307.json#/result/final`,
`coordination/command-center/cc-tools/CC-RULES-ADDENDUM-20261006.md:9-23`, and
CC item `task-ns2604-coop-20261006T223917Z`, point 6. Each changed catalog row
carries its own upstream docs or versioned changelog citation.
4 changes: 2 additions & 2 deletions examples/claude-native/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1172,12 +1172,12 @@ rule here, such as the effort arms for the child roles.

## Native workflow mechanics relocated (2026-10-05)

- With agent teams on, a named spawn becomes a teammate at the lead's session effort in the lead's working directory, without its definition's `skills` or `isolation`: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`.
- With agent teams on, a named spawn becomes a teammate in the lead's working directory. The [agent-team docs (line 277)](https://code.claude.com/docs/en/agent-teams.md#L277) give an in-process teammate its definition's effort; the [2.1.288 changelog (line 365)](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365) confirms this specifically for plugin-defined agents. The lead and project definitions here both specify `max`, so either path selects the same configured effort; runtime effort for user/project definitions remains unverified. Definition `skills` and `isolation` do not apply: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the current Ultracode recipe with the effort correction

When an operator follows the repository's linked native recipe instead of this README passage, they still receive the opposite effort rule: recipes/claude-native-ultracode.md:225-228 and :398-399 say teammates always use the lead's effort regardless of their definitions, even though this change now says an in-process teammate uses its definition's effort. docs/harness-defaults.md explicitly identifies that recipe as the current dispatch reference, so a lead at xhigh spawning one of the shipped effort: max definitions can still be told to expect xhigh or avoid the named spawn unnecessarily; update the recipe in the same correction.

AGENTS.md reference: AGENTS.md:L3-L3

Useful? React with 👍 / 👎.


- In Ultracode, pass an explicit task-matched `model` and `effort: 'max'` on each `agent()` call; project agents declare `effort: max`. A stage that names no model takes its definition's, else `CLAUDE_CODE_SUBAGENT_MODEL`, else the lead's, so set `CLAUDE_CODE_SUBAGENT_MODEL=opus`. On Claude Code 2.1.284 Ultracode stays on at any effort and the `ultracode` setting sets none: a terminal session started through the ecosystem `claude` launcher runs at `max` (`claude --effort xhigh` opts out; the default rests on the user's requirement, not on a measured gain), and a launch that skips it (IDE, desktop, web) uses the saved per-model xhigh (`modelSettings`, or `effortLevel` in a project file; `max` cannot be saved). Headless `-p` runs pass `--effort` per call site, and `CLAUDE_CODE_EFFORT_LEVEL` stays unset at every scope because it overrides every worker's effort.
- Size each workflow to its task under the `unrestricted` size guideline and within the runtime limits (4,096 items per `parallel()`/`pipeline()` call, 1,000 agents per run). Avoid unintended model inheritance, unbounded fan-out and repeated word-count calls.
- Cap concurrency per host with `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS`, starting at 8 under the client's default of min(16, available CPUs − 2) per workflow (the bundled `/workflow-authoring` reference); the setting accepts 1–256 from 2.1.269.
- Children do not fan out a second layer (`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1`). Teammates report through the shared task list and idle notifications rather than a summarized return value, so the lead collects their results and has any claim verified on Opus before acting on it.
- Children do not fan out a second layer (`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1`). On Opus 5.5 and Sonnet 5.5, teammates coordinate through `SendMessage` and idle notifications; they have no shared task list without opting back into the withdrawn Task tools with `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ([2.1.233, line 2985](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L2985), [2.1.268, line 1986](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L1986)). The lead collects their results and has any claim verified on Opus before acting on it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh the TODO-tools disposition after closing its stated gap

After this line corrects the current instructions to say that 5.5 teammates have no shared task list without the opt-in, catalogs/foundation/upstream-surface-dispositions.json:217 still justifies declining CLAUDE_CODE_ENABLE_TODO_TOOLS with Gap: our instructions say teammates report via the shared task list. That statement is now false—the old wording survives only in preserved historical fixtures/records—so the active disposition catalog carries a stale decision premise immediately after this change; update that row's reason and review metadata to reflect the corrected instructions.

Useful? React with 👍 / 👎.


- Message another Claude Code session with SendMessage, and a Codex session with `codex queue --thread <its CODEX_THREAD_ID> --message "$(cat <<'MSG'` followed by the text, a blank line, `reply: SendMessage to <your session name>`, `MSG` and `)"`, each on its own line: a quoted heredoc, never the text inline.
- Codex receives queued messages between turns, never mid-turn; expect up to about 20 s delay when it is idle.
Expand Down
33 changes: 29 additions & 4 deletions manifests/evidence.json
Original file line number Diff line number Diff line change
Expand Up @@ -16528,8 +16528,8 @@
},
{
"path": "catalogs/foundation/upstream-surface-dispositions.json",
"sha256": "82fae20369f6c5219cf6111c22c8daea74068ac35cee210cc611e5efa7aa0d88",
"bytes": 158923
"sha256": "09735ed23f80acc2edeca679979956fcf25547bd4dbf2ea5d3029d8a5c57761d",
"bytes": 159862
},
{
"path": "catalogs/landscape/README.md",
Expand Down Expand Up @@ -17626,6 +17626,11 @@
"sha256": "8bc7cb99e2b415fff9a1c4a7784c21291f3cacefac97107277a11988af9b1a34",
"bytes": 35121
},
{
"path": "docs/decisions/2026-10-06-agent-teams-carrier-corrections.md",
"sha256": "10bcd1c49f88d24ff884196277f4d247e561f6a1c31f8aae76e1a43fcbc9a3e6",
"bytes": 3755
},
{
"path": "docs/decisions/2026-10-06-application-input-binding-amendment.md",
"sha256": "00fc62ac46b54e46b2433b4cc39a5ceee04022f9da1b2be30817b268120f8692",
Expand Down Expand Up @@ -53923,8 +53928,8 @@
},
{
"path": "examples/claude-native/workflows/README.md",
"sha256": "466817eba6c4c99d3bc7620cf0b241e14f7d031abfa825dc84de6f028c91901f",
"bytes": 110684
"sha256": "b3405f0b93a738d2e3b2ff5f032c2874acb7dd8d15b0800fe8010bbd4dfc0ece",
"bytes": 111528
},
{
"path": "examples/claude-native/workflows/SHA256SUMS",
Expand Down Expand Up @@ -54901,6 +54906,26 @@
"sha256": "896a72ead08b7aea38d142c817e9eaa97624b2d2ce0653d5255a537abe31f694",
"bytes": 767
},
{
"path": "tests/fixtures/harness-context-moves/09-20261006.txt",
"sha256": "df2a6b435b576fabd32ad3b519fbbfc48d6adedcf90656b1cb9b22471b8b2901",
"bytes": 865
},
{
"path": "tests/fixtures/harness-context-moves/10-20261006.txt",
"sha256": "5c21f4f6f2342502f10eb822eb502be8200ae3472dd3574ef39a2861be9e647c",
"bytes": 2034
},
{
"path": "tests/fixtures/harness-context-moves/README.md",
"sha256": "5d319c926920103dec6ad6e565850b1dfe3388d6fc8a651012d74c865488e907",
"bytes": 1740
},
{
"path": "tests/fixtures/harness-context-moves/contracts.json",
"sha256": "6f8beb0b57ddff87ee5b0d8a0652e5c054bce2b6ee915015967b1418082e6153",
"bytes": 1744
},
{
"path": "tests/fixtures/host-receipts/home-path-in-excerpt.json",
"sha256": "ca1f6125a57e5095c729410e445f279f674231ed1f379621ffa5c0fafea38f8a",
Expand Down
1 change: 1 addition & 0 deletions tests/fixtures/harness-context-moves/09-20261006.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- With agent teams on, a named spawn becomes a teammate in the lead's working directory. The [agent-team docs (line 277)](https://code.claude.com/docs/en/agent-teams.md#L277) give an in-process teammate its definition's effort; the [2.1.288 changelog (line 365)](https://github.com/anthropics/claude-code/blob/fbe20e00e2851fc01506f54f98a8f0b875af3847/CHANGELOG.md#L365) confirms this specifically for plugin-defined agents. The lead and project definitions here both specify `max`, so either path selects the same configured effort; runtime effort for user/project definitions remains unverified. Definition `skills` and `isolation` do not apply: name spawns only for teammates, never for a role that relies on `skills`, `omitClaudeMd` or `isolation`, and start a run that needs them with `claude --settings '{"env":{"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS":"0"}}'`.
Loading
Loading