chain-of-command already caps fan-out (SMALL 4 / MEDIUM 8 / LARGE 16 agents, two review waves). The cap is buried, the dcr description still says "continues until all selected lenses pass clean", /dc spawns agents even for a one-file fix, and the always-loaded jacked-behaviors block pushes ten different follow-up commands. One branch on 2026-10-01 still ran 10 workflows, about 45 agents and four review waves. The skill listing is also over its budget, so Claude Code strips descriptions and skills such as the marketing pack never route.
| Question | Decision |
|---|---|
| Retire recursive-10-10, coverage-matrix, swarm, swarm-research? | Keep all. Slim them so they obey the tier budget. |
| Marketing pack default | Not decided as "off". Jack's point: they never fired because routing never saw their descriptions. Fix the listing budget instead. |
| Ultracode vs tier budget | The budget wins. |
| jacked-behaviors block | Compress every rule, and cut the suggestion nags for /techdebt, /retro, /audit-rules, /canary, /benchmark, /land-and-deploy and /blindspot. |
| # | File(s) | Change |
|---|---|---|
| A | skills/dcr/SKILL.md + new references/large-tier.md, references/codex-engine.md | Put a BUDGET block first (tier table with agent budget, two-wave cap, convergence rule, ultracode subordinate). Move the persona pool, wild-card pool, pre-mortem pool and pre-mortem prompt into large-tier.md, read only at LARGE. Move the Codex dispatch detail into codex-engine.md, read only when the engine is codex. Rewrite the description so it no longer says "recursive ... until clean". Keep every contract the tests pin, and point the tests at the file the text now lives in. |
| B | skills/chain-of-command/SKILL.md, commands/dc.md | chain-of-command: open with the budget (tier, agents per tier, two waves, ultracode subordinate, incomplete is not clean), then the lanes. Remove duplicated text; this skill auto-loads every session. /dc: tier first; at SMALL the main loop runs the review inline with zero agents; MEDIUM gets one reviewer; LARGE gets the reviewer plus the pre-mortem. Multi-thread spawning stays inside the budget. |
| C | coverage-matrix, recursive-10-10-product-hardening, commands/swarm.md, swarm-research | Bind each fan-out to the chain-of-command budget. coverage-matrix: batch the per-role and per-domain streams into at most the tier budget. 10-10: one skeptical evaluator per verified batch, not per row. swarm: team size counts against the budget. swarm-research: the rebuttal round is done by the parent, and Phase 2 is one combined verify-and-attack agent below Major. Trim restated rationale. |
| D | rules/jacked_behaviors.md | Main loop rewrites it: one sentence per rule plus its trigger. Nags cut per decision. Same rules, same meaning (no tightening, no loosening beyond Jack's call). |
| E | api/routes/features.py | Bug fix: the dashboard skill toggle copied only SKILL.md. On enable it now copies the whole skill tree (_copy_skill_tree). On disable it removes only a directory jacked owns (skill_removal_decision). Without this fix, dcr's new references/ folder, plus the existing sidecars of logo-forge, launch-post and night-shift, are lost on a dashboard toggle. |
| F | jacked skill descriptions + a test | After the listing-budget research comes back: trim jacked-shipped descriptions to what routing needs, and add a test that caps their length against the real listing constraint. |
~/.claude/CLAUDE.md is not edited by hand. The block updates when jacked installs from the new template. The Claude Code workflow-authoring text is built into Claude Code and is not jacked's. The onboard-hank-service YAML fix shipped separately as hank-codes-admin-webui #302pr.
Targeted tests per change, then one full uv run python -m pytest on the frozen tree. All shipped YAML frontmatter must parse. One consolidated review pass (MEDIUM tier: one reviewer). Then open a PR and stop; merge needs Jack.