CC 2.1.224 removed the 200-subagent-per-session spawn cap. That leaves depth as the
only structural brake on nested delegation — and chain-patterns/SKILL.md stated that
depth as 5 in four places while ork's own intended budget has always been 3. Meanwhile
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH sat at 0 hits estate-wide — an env var CC
introduced (2.1.217) and now defaults to exactly ork's number (2.1.219), but nothing in the repo told an
operator it existed. This PR fixes both: corrects the stale number, and gives doctor a Check 16 offer so
the budget can be enforced by CC itself, not just by an agent reading prose.
Pattern 9: Nested Delegation - intro line ............ "up to 5 levels deep" → "up to 3 levels deep by default (CC 2.1.219+)" - Flatten-when bullet .... "CC hard-caps at 5" → "CC now defaults to a 3-level cap" - 2.1.181 blockquote ..... "rejects spawns past 5 levels deep" → kept, RE-DATED as the 2.1.181-era ceiling (historical fact, not rewritten) "ork's ≤3 convention sits safely under the enforced 5-cap" → "CC 2.1.219 matches ork's ≤3 convention exactly, not merely sitting under a looser ceiling" - Depth-budget paragraph . now points at the CC 2.1.219 mechanical backstop + doctor Check 16
> Nested delegation (CC 2.1.172+): ... chains execute up to 5 levels deep > Practical depth budget is 3. ↓ > Nested delegation (CC 2.1.172+): ... chains execute up to 3 levels deep > by default (CC 2.1.219+) ... Pin CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=3 in operator settings > so CC enforces this mechanically, not just by convention (doctor Check 16).
Check 16: Operator Settings Posture — offers (info-level, never fail)
before: TOOL_SEARCH, KEEP_MARKETPLACE, autoCompactWindow (6 offers)
after: TOOL_SEARCH, KEEP_MARKETPLACE, autoCompactWindow,
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH (7 offers)
ℹ️ SPAWN_DEPTH settings=no shell=no (CC default already 3)
ℹ️ SPAWN_DEPTH settings=yes (user scope, pinned to 3) ← passing state
The number 5 traces to a real, dated fact: CC 2.1.181
fixed foreground subagents to respect the same 5-level hard-reject ceiling background subagents always
had. That citation is kept in the 2.1.181 blockquote — rewriting it would misstate CC's
history, and 11 other agent files (backend-system-architect.md,
ci-cd-engineer.md, etc.) still correctly pair "5 levels deep" with "(practical budget: 3)"
and are out of this issue's scope. What changed is which number is the operative one: CC 2.1.219
restored nested spawning's own default from 1 back to 3 — not merely "under 5," but
equal to ork's own convention. The four corrected mentions in Pattern 9 and the one in
agents/README.md were describing that operative ceiling, not the 2.1.181 citation, so they
now read 3.
| question | answer |
|---|---|
Can ork ship the pin in its plugin settings.json? |
No — binary-proven at 2.1.226, only agent/subagentStatusLine
load from a plugin bundle; everything else is silently discarded. |
| Does the gap matter today? | Not urgently — CC's own 2.1.219 default (3) already matches ork's convention. Absent the pin, the budget degrades to "guidance only," not "unbounded." |
| What does pinning add? | CC withholds the Agent tool at depth 3 mechanically, independent of the model
reading Pattern 9 — the backstop chain-patterns/SKILL.md:246 already conceded was
missing ("enforced by THIS guidance, not by hooks"). |
| Where does the operator get the JSON? | doctor Check 16 (skills/doctor/references/settings-posture.md) — same
detect-and-hand-over pattern as CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS. |
npm run build clean, plugins/ + docs/site regenerated, counts synced npm run test:skills SUCCESS (562 rules, 91 skills, 0 failed) npm run test:agents 16/16 passed npm run test:manifests passed (skill delivery, activation channels, server.json, version sync) grep -rn MAX_SUBAGENT_SPAWN_DEPTH src/ docs/ shared/ now >0 hits (was 0, VERIFIED in #3324)
The 11 agent files carrying the identical "up to 5 levels deep
(practical budget: 3)" line were left untouched. They already correctly separate CC's historical technical
ceiling from ork's own convention — the same distinction this PR restores in
chain-patterns/SKILL.md and agents/README.md by wording, not by blind
find-replace. Bringing the other 11 into the same phrasing is a reasonable follow-up but is not what
#3324 scoped.
Closes #3324. Verified against shared/cc-snapshots/2.1.181.md,
2.1.217.md, 2.1.219.md, and 2.1.224.md — not from changelog
prose alone.