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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ All notable changes to this project. Format: [Keep a Changelog](https://keepacha

## Unreleased

- **chore(compat): CC 2.1.176–2.1.181 survey — held subagent-nesting wording lifted; no `tested_up_to` bump.** SchemaStore sync PR #5723 still open/draft (untouched since 2026-05-24 despite dep #5728 merged 2026-06-01), so `tested_up_to` stays pinned at 2.1.150 per the no-lone-bumps rule. **Held constraint resolved:** v2.7.0's 2.1.172–175 survey held the subagent-nesting wording on a CHANGELOG/docs contradiction (CHANGELOG said subagents can nest ≤5 levels; live docs said they cannot). The contradiction is now reconciled — `code.claude.com/docs/en/sub-agents` documents nested subagents under `min-version: 2.1.172`, and CC 2.1.181 explicitly unifies the foreground+background depth cap at 5 levels (*"Fixed foreground subagents spawning unbounded nested chains; they now respect the same 5-level depth limit as background subagents"*). Three shipped-template wording sites updated: `docs/04-subagents-mcp-orchestration.md` lines 59 + 140 and `templates/commands/infinite/SKILL.md` line 65. Leaf-design guidance preserved and remains the recommended pattern within the testing envelope (`tested_up_to < 2.1.172` means most users on the tested band don't have nesting; the `/infinite` skill's no-sibling-coordination invariant still holds because subagent contexts don't share even when nesting is available). **2.1.176–181 versions surveyed** (2.1.177 + 2.1.180 not present in CHANGELOG — skipped or internal-only per the verbatim-pull discipline): no new in-territory `settings.json` keys; out-of-territory by precedent — `footerLinksRegexes` + `language` (2.1.176, UI-pref tier), `sandbox.allowAppleEvents` (2.1.181, macOS-only opt-in). Future opt-in stub candidate: the new `Tool(param:value)` permission-rule form with `*` wildcard (2.1.178, e.g. `Agent(model:opus)`) — no shipped template uses it yet, SchemaStore acceptance status unverified, parking for the next compat batch. Nested `.claude/skills` collision handling (2.1.178) gains `<dir>:<name>` namespacing — reinforces the existing plugin-skill carve-out pattern, no shipped-template impact. MCP server-level specs in subagent `disallowedTools` (`mcp__server`, `mcp__server__*`, `mcp__*`) silently-ignored bug fixed in 2.1.178 — grep against shipped templates clean. Compat comment refreshed in `config_schema.py` with the full survey.

## [2.7.0] — 2026-06-17

Bundle release spanning 2026-05-24 → 2026-06-17 (PRs #59–#82; release cut 2026-06-12, shipped 2026-06-17): the **AGPL-3.0 relicense** with the discipline-skills MIT carve-out plus the contributor-governance ratchet (branch protection, CLA, AI-review verdict gate); the **discipline-skills module** (curated 7-skill fork of obra/superpowers); the package-availability safety gate + tool-version status-line chip; the adjacent-project dogfood cascade (hook-group union merge, persona-drift `[ NOTICE ]` + `--modules +x/-y`, retrofit-byproduct gitignore, manifest `written_by_sha` + `cc-configure --whats-new`); the `block-dangerous-bash` trailing-slash/`$HOME` hardening; the CC 2.1.155–2.1.175 compat surveys (incl. the `agent` schema-status correction); the doc-cleared hook-payload batch (Stop `background_tasks` guard, slop-scan decision-JSON + OSC 9 ping, block-mode feedback fix); and **Fable 5 as the default model throughout** (scaffolded settings + intake field, test-runner agent; `// model: sonnet` per-machine downgrade stub for CC < 2.1.170 — the own-CI review pin briefly followed, then was walked back to `claude-sonnet-4-6` on cost, #82). Also restores the `## [2.6.0]` section header accidentally deleted in the PR #67 merge — its absence had folded the 2.6.0 entries back into Unreleased, over-reporting in `--whats-new` — and adapts `test-whats-new.sh` case C to the empty-Unreleased state a fresh release produces (first release since the test shipped; it had asserted the live Unreleased section was non-empty). `CC_VERSION` bumped to 2.7.0.
Expand Down
49 changes: 49 additions & 0 deletions config_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,55 @@
# wildcards, no MultiEdit rules, no [1m]-suffixed
# model IDs in shipped templates (2.1.172/173
# fixes). Issue #14920 unchanged.
# 2.1.176-181 survey (2026-06-17): no bump; #5723
# still open/draft. Surveyed versions present in
# CHANGELOG: 2.1.176, 2.1.178, 2.1.179, 2.1.181
# (2.1.177 and 2.1.180 NOT PRESENT - skipped or
# internal-only per the verbatim-pull discipline).
# New in-territory settings.json keys: none. Out-
# of-territory by existing precedent:
# footerLinksRegexes + language (2.1.176, user-
# level UI prefs); sandbox.allowAppleEvents
# (2.1.181, macOS-only opt-in). HELD constraint
# RESOLVED: the 2.1.172 sub-agent nesting wording
# held above on a CHANGELOG/docs contradiction is
# now reconciled - the live sub-agents doc at
# code.claude.com/docs/en/sub-agents documents
# nested subagents (min-version 2.1.172), and
# 2.1.181 explicitly unifies the foreground+
# background depth cap at 5 levels ("Fixed
# foreground subagents spawning unbounded nested
# chains; they now respect the same 5-level depth
# limit as background subagents"). Shipped
# template wording updated in the same PR (docs/
# 04-subagents-mcp-orchestration.md lines 59 +
# 140, templates/commands/infinite/SKILL.md
# line 65); leaf-design guidance still stands and
# remains the recommended pattern within the
# testing envelope (tested_up_to < 2.1.172 means
# users on the tested band don't have nesting).
# Permission-rule syntax: 2.1.178 adds the
# Tool(param:value) form with `*` wildcard (e.g.
# Agent(model:opus)) - future opt-in stub
# candidate; no shipped template uses the new
# form yet, and SchemaStore acceptance status
# not yet verified. Nested .claude/skills
# collision handling (2.1.178): nested-dir skills
# now load as <dir>:<name> on name clash -
# reinforces the plugin-skill carve-out pattern
# documented in the skillOverrides note above;
# no shipped-template impact. MCP server-level
# specs in subagent disallowedTools (mcp__server,
# mcp__server__*, mcp__*) silently-ignored bug
# fixed in 2.1.178; grep against shipped
# templates clean (no MCP server-level patterns
# in disallowedTools). Auto-mode classifier
# gain (2.1.178) and miscellaneous subagent UX
# fixes (2.1.179/181) require no configurator
# action. SchemaStore #5723 unchanged from prior
# survey - still open/draft, untouched since
# 2026-05-24 despite dep #5728 merged
# 2026-06-01. Issue #14920 unchanged.
}


Expand Down
4 changes: 2 additions & 2 deletions docs/04-subagents-mcp-orchestration.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Only `name` and `description` are required. See `templates/agents/` for four rea

- Each subagent starts with its own system prompt + minimal env info. **No inherited conversation**.
- Only the subagent's final response returns to the parent. Verbose tool output stays in the subagent's transcript.
- **Subagents cannot spawn other subagents.** Design around this — use skills or chain through the main thread.
- **Subagents can spawn other subagents (CC ≥ 2.1.172, capped at 5 nesting levels).** Older CC versions can't. Prefer leaf designs anyway — use skills or chain through the main thread — so the architecture survives older CC and doesn't bury context behind deep subagent transcripts.
- Parent `bypassPermissions` or `acceptEdits` **overrides** any `permissionMode` set on the subagent.

### Parallel subagents
Expand Down Expand Up @@ -137,7 +137,7 @@ Local Claude Code for interactive work; Claude Code Web for long-running cloud j

- The main thread's context is still finite. Subagents help with verbosity but not with total information you're holding in your head.
- Parallel subagents that return detailed results still fill the parent. Prefer "ship a summary, not a transcript."
- Subagents can't spawn subagents. If you need 3 levels, you're designing wrong.
- Subagent nesting caps at 5 levels (CC ≥ 2.1.172; earlier versions: 0). If you need 3+ levels, the design is usually still wrong — re-shape into a fanout or pipeline through the main thread.

## Recommendations

Expand Down
2 changes: 1 addition & 1 deletion templates/commands/infinite/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ Dispatch subagents via the Task tool using the `parallel-generator` subagent. Ea
4. **diversification_axis** — the axis this iteration should differ on, named explicitly. e.g. "this iteration must use a dark color palette"; "this iteration must favor imperative style over declarative."
5. **quality_standards** — the must-be-true bullets from Phase 1, verbatim.

**Do not ask subagents to coordinate with each other.** They cannot spawn their own subagents and their contexts don't share. The claimed_slots_manifest + diversification_axis does the coordination for them.
**Do not ask subagents to coordinate with each other.** Their contexts don't share — even with nested-subagent support (CC ≥ 2.1.172, ≤ 5 levels), a child can't reach a sibling's transcript. The claimed_slots_manifest + diversification_axis does the coordination for them.

## After each wave

Expand Down