Skip to content

release(v10.0.0)!: /brief defaults to chain=off (autonomous build is opt-in) - #98

Merged
aimsise merged 1 commit into
mainfrom
impl/brief-chain-default-off
Jun 28, 2026
Merged

release(v10.0.0)!: /brief defaults to chain=off (autonomous build is opt-in)#98
aimsise merged 1 commit into
mainfrom
impl/brief-chain-default-off

Conversation

@aimsise

@aimsise aimsise commented Jun 27, 2026

Copy link
Copy Markdown
Owner

TL;DR

Breaking (v10.0.0): /brief no longer auto-builds by default. A bare /brief <idea> now defaults to chain=off — it writes the brief (plus its autopilot-policy.yaml rescue file) and stops with manual next-steps, instead of chaining straight through /create-ticket/autopilot to commits and PRs (and, since v9.0.0, spawning N wave-parallel ticket-executor worktrees). The autonomous build pipeline is now an explicit opt-in: pass chain=on.

Rationale: an argument-less /brief reads as "write a brief," but it triggered an implicit, hard-to-reverse, outward-facing pipeline — a poor default, and v9.0.0 widened its blast radius (N× concurrent worktrees + token spend). Making the gateway decision opt-in (while keeping full power — uc/parallel still default on — once you opt in) is the safer, least-surprise default.

Migration

# restore the prior idea-to-PR behavior:
/brief <idea> chain=on

Everything downstream of an explicit chain=on is byte-identical to v9.0.x (same /create-ticket/autopilot handoff, same chained uc=on / parallel=on defaults). The mode=auto|manual legacy alias is retained and unchanged (mode=autochain=on); only the both-keys-omitted default flips. Read-time resolution of pre-v6.0.0 key-less briefs stays chain=on (auto), deliberately asymmetric with the new write-time default.

What changed (8 files)

File Change
skills/brief/SKILL.md Flip the both-keys-omitted default to chain=off (Argument Parsing, mode-independence guard, frontmatter derivation, Finalization Step 2 gating). Every mode= alias literal + uc/parallel resolution preserved. Bare invocation deterministically takes the Step 3 manual path (no auto-kick.yaml, next_recommended_auto: "").
README.md Opening pitch, argument signature, ultracode/wave-parallel default notes, mode table, execution-chains block, hero-diagram caption → chain=off default + chain=on opt-in.
docs/gen-brief-chain-flow.py + regenerated brief-chain-flow{,-dark}.png Entry box relabeled /brief "<idea>" chain=on (opt-in).
tests/test-skill-contracts.sh +CT-MODE-18 pins the chain=off default and drift-guards (negative clause) against the pre-v10.0.0 chain=on default returning.
CHANGELOG.md / .claude-plugin/plugin.json ## [10.0.0] — 2026-06-28 (BREAKING CHANGES + migration + Verification) / "version": "10.0.0".

Intentionally unchanged: create-ticket (its manual-brief next_recommended_auto lands on the existing v8.4.2 graceful, non-looping hard-stop); the mode= alias (its removal is a separate breaking change, deferred).

Verification

  • tests/test-skill-contracts.sh: 915 / 915 (+1 = CT-MODE-18; CT-MODE-1..9 mode=-alias tests and CT-PARALLEL-1/7 stay green).
  • tests/test-brief-lightening.sh 12/12 · tests/test-path-consistency.sh 145/145 · tests/run-all.sh ALL PASSED · shellcheck --severity=warning clean · CT-DECONTAM-1 clean · ac-evaluator twin byte-identity preserved (no agent edits).
  • Reviewed via an adversarial multi-agent pass (residual-claim sweep · brief-consistency · CT-integrity/test-the-test · Stop-hook loop analysis · release-governance/PII) — verdict: clean, 0 confirmed findings.

See CHANGELOG.md ## [10.0.0].

🤖 Generated with Claude Code

https://claude.ai/code/session_01Mw2bH4wbEPeebXsvSG6rWe

…opt-in)

BREAKING: a bare `/brief <idea>` now defaults to chain=off — it writes the brief
+ autopilot-policy.yaml and stops with the Step 3 manual guidance, instead of
auto-chaining into /create-ticket -> /autopilot (and, since v9.0.0, spawning N
wave-parallel ticket-executor worktrees that commit and open PRs). The autonomous
build pipeline is now an explicit opt-in.

Migration: to restore the prior idea-to-PR behavior, run `/brief <idea> chain=on`.
Everything downstream of an explicit chain=on is byte-identical to v9.0.x (same
handoff, same chained uc=on / parallel=on defaults). The `mode=auto|manual` alias
is retained and unchanged (mode=auto == chain=on); only the both-keys-omitted
default flips. Read-time resolution of pre-v6.0.0 key-less briefs stays chain=on
(auto) — deliberately asymmetric with the new write-time default.

- skills/brief/SKILL.md: flip the both-keys-omitted default to chain=off across
  Argument Parsing, the mode-independence guard, the frontmatter-derivation notes,
  and the Finalization Step 2 gating; preserve every mode= alias literal and the
  uc/parallel resolution. A bare invocation deterministically takes the Step 3
  manual path (no auto-kick.yaml, next_recommended_auto: "").
- README.md: opening pitch, argument signature, ultracode/wave-parallel default
  notes, mode table, execution-chains block, and hero-diagram caption now present
  chain=off as the default and chain=on as the full-automation opt-in.
- docs/gen-brief-chain-flow.py + regenerated brief-chain-flow{,-dark}.png: entry
  box relabeled `/brief "<idea>" chain=on (opt-in)`.
- tests/test-skill-contracts.sh: +CT-MODE-18 pins the chain=off default and
  drift-guards (negative clause) against the pre-v10.0.0 chain=on default returning.
- create-ticket intentionally unchanged; mode= alias intentionally retained.

Verification: test-skill-contracts 915/915, test-brief-lightening 12/12,
path-consistency 145/145, run-all ALL PASSED, shellcheck --severity=warning clean.
Reviewed via an adversarial multi-agent pass (verdict: clean, 0 confirmed findings).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mw2bH4wbEPeebXsvSG6rWe
@aimsise
aimsise merged commit 8e26da8 into main Jun 28, 2026
2 of 4 checks passed
@aimsise
aimsise deleted the impl/brief-chain-default-off branch June 28, 2026 05:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant