@ionivetech/mugiwara 0.6.3 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +49 -2
  4. package/.cursor-plugin/plugin.json +49 -2
  5. package/.kimi-plugin/plugin.json +49 -2
  6. package/.opencode/mugiwara-helpers.mjs +4 -0
  7. package/.opencode/plugins/mugiwara.mjs +40 -7
  8. package/AGENTS.md +11 -0
  9. package/README.md +21 -1
  10. package/content/agents/zoro-execution.md +1 -1
  11. package/content/skills/mugiwara-checkpoint/SKILL.md +1 -0
  12. package/content/skills/mugiwara-execution/SKILL.md +18 -17
  13. package/content/skills/mugiwara-gates/SKILL.md +1 -0
  14. package/content/skills/mugiwara-lessons/SKILL.md +1 -0
  15. package/content/skills/mugiwara-orchestration/SKILL.md +16 -16
  16. package/content/skills/mugiwara-orchestration/references/check-ins.md +15 -4
  17. package/content/skills/mugiwara-orchestration/references/closure.md +9 -0
  18. package/content/skills/mugiwara-orchestration/references/output-contract.md +77 -0
  19. package/content/skills/mugiwara-pr/SKILL.md +11 -18
  20. package/content/skills/mugiwara-pr/references/verdict-format.md +31 -0
  21. package/content/skills/mugiwara-quality/SKILL.md +1 -0
  22. package/content/skills/mugiwara-resume/SKILL.md +1 -0
  23. package/content/skills/mugiwara-review/SKILL.md +1 -0
  24. package/content/skills/mugiwara-workflow/SKILL.md +14 -11
  25. package/dist/mugiwara.js +42 -22
  26. package/gemini-extension.json +1 -1
  27. package/package.json +2 -2
  28. package/plugin.json +1 -1
  29. package/references/wave-banners.md +65 -0
  30. package/scripts/conformance.ts +215 -0
  31. package/scripts/evidence.sh +17 -4
  32. package/scripts/gate-selftest.ts +45 -0
  33. package/scripts/initiative.ts +51 -17
  34. package/scripts/lane.sh +1 -1
  35. package/scripts/lib/patterns.sh +8 -2
  36. package/scripts/savepoint.sh +12 -1
  37. package/scripts/validate-content.ts +22 -2
  38. package/src/targets/opencode.ts +35 -6
@@ -5,13 +5,13 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "The Straw Hat crew for AI agents",
8
- "version": "0.6.3"
8
+ "version": "0.6.5"
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "mugiwara",
13
13
  "description": "The Straw Hat crew of AI agents and skills: brainstorm, plan, execute, checkpoint, quality, gates, review, security, healing.",
14
- "version": "0.6.3",
14
+ "version": "0.6.5",
15
15
  "source": "./"
16
16
  }
17
17
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mugiwara",
3
3
  "displayName": "Mugiwara",
4
- "version": "0.6.3",
4
+ "version": "0.6.5",
5
5
  "description": "The Straw Hat crew of AI agents and skills: brainstorm, plan, execute, checkpoint, quality, gates, review, security, healing.",
6
6
  "author": {
7
7
  "name": "ionivetech"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mugiwara",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "The Straw Hat crew of AI agents and skills: brainstorm, plan, execute, checkpoint, quality, gates, review, security, healing.",
5
5
  "author": {
6
6
  "name": "ionivetech"
@@ -14,5 +14,52 @@
14
14
  "workflow",
15
15
  "multi-agent"
16
16
  ],
17
- "skills": "./content/skills/"
17
+ "skills": "./content/skills/",
18
+ "metadata": {
19
+ "skills": [
20
+ "mugiwara-agent-security",
21
+ "mugiwara-backend",
22
+ "mugiwara-brainstorm",
23
+ "mugiwara-checkpoint",
24
+ "mugiwara-claim-audit",
25
+ "mugiwara-context-budget",
26
+ "mugiwara-contract-first",
27
+ "mugiwara-execution",
28
+ "mugiwara-frontend",
29
+ "mugiwara-gates",
30
+ "mugiwara-git",
31
+ "mugiwara-healing",
32
+ "mugiwara-lessons",
33
+ "mugiwara-orchestration",
34
+ "mugiwara-planning",
35
+ "mugiwara-pr",
36
+ "mugiwara-quality",
37
+ "mugiwara-resume",
38
+ "mugiwara-review",
39
+ "mugiwara-root-cause",
40
+ "mugiwara-security",
41
+ "mugiwara-ship",
42
+ "mugiwara-sunset",
43
+ "mugiwara-testcases",
44
+ "mugiwara-workflow",
45
+ "using-mugiwara"
46
+ ],
47
+ "agents": [
48
+ "brook-healing",
49
+ "chopper-checkpoint",
50
+ "eval-runner",
51
+ "franky-gates",
52
+ "jinbe-security",
53
+ "luffy-orchestrator",
54
+ "memory-keeper",
55
+ "nami-planner",
56
+ "onboarding-guide",
57
+ "resume-coordinator",
58
+ "robin-reviewer",
59
+ "sanji-quality",
60
+ "skeptic-verifier",
61
+ "usopp-brainstorm",
62
+ "zoro-execution"
63
+ ]
64
+ }
18
65
  }
@@ -2,7 +2,7 @@
2
2
  "name": "mugiwara",
3
3
  "displayName": "Mugiwara",
4
4
  "description": "The Straw Hat crew of AI agents and skills: brainstorm, plan, execute, checkpoint, quality, gates, review, security, healing.",
5
- "version": "0.6.3",
5
+ "version": "0.6.5",
6
6
  "author": {
7
7
  "name": "ionivetech"
8
8
  },
@@ -15,5 +15,52 @@
15
15
  "workflow",
16
16
  "multi-agent"
17
17
  ],
18
- "skills": "./content/skills/"
18
+ "skills": "./content/skills/",
19
+ "metadata": {
20
+ "skills": [
21
+ "mugiwara-agent-security",
22
+ "mugiwara-backend",
23
+ "mugiwara-brainstorm",
24
+ "mugiwara-checkpoint",
25
+ "mugiwara-claim-audit",
26
+ "mugiwara-context-budget",
27
+ "mugiwara-contract-first",
28
+ "mugiwara-execution",
29
+ "mugiwara-frontend",
30
+ "mugiwara-gates",
31
+ "mugiwara-git",
32
+ "mugiwara-healing",
33
+ "mugiwara-lessons",
34
+ "mugiwara-orchestration",
35
+ "mugiwara-planning",
36
+ "mugiwara-pr",
37
+ "mugiwara-quality",
38
+ "mugiwara-resume",
39
+ "mugiwara-review",
40
+ "mugiwara-root-cause",
41
+ "mugiwara-security",
42
+ "mugiwara-ship",
43
+ "mugiwara-sunset",
44
+ "mugiwara-testcases",
45
+ "mugiwara-workflow",
46
+ "using-mugiwara"
47
+ ],
48
+ "agents": [
49
+ "brook-healing",
50
+ "chopper-checkpoint",
51
+ "eval-runner",
52
+ "franky-gates",
53
+ "jinbe-security",
54
+ "luffy-orchestrator",
55
+ "memory-keeper",
56
+ "nami-planner",
57
+ "onboarding-guide",
58
+ "resume-coordinator",
59
+ "robin-reviewer",
60
+ "sanji-quality",
61
+ "skeptic-verifier",
62
+ "usopp-brainstorm",
63
+ "zoro-execution"
64
+ ]
65
+ }
19
66
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mugiwara",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "The Straw Hat crew of AI agents and skills: brainstorm, plan, execute, checkpoint, quality, gates, review, security, healing.",
5
5
  "author": {
6
6
  "name": "ionivetech"
@@ -14,5 +14,52 @@
14
14
  "workflow",
15
15
  "multi-agent"
16
16
  ],
17
- "skills": "./content/skills/"
17
+ "skills": "./content/skills/",
18
+ "metadata": {
19
+ "skills": [
20
+ "mugiwara-agent-security",
21
+ "mugiwara-backend",
22
+ "mugiwara-brainstorm",
23
+ "mugiwara-checkpoint",
24
+ "mugiwara-claim-audit",
25
+ "mugiwara-context-budget",
26
+ "mugiwara-contract-first",
27
+ "mugiwara-execution",
28
+ "mugiwara-frontend",
29
+ "mugiwara-gates",
30
+ "mugiwara-git",
31
+ "mugiwara-healing",
32
+ "mugiwara-lessons",
33
+ "mugiwara-orchestration",
34
+ "mugiwara-planning",
35
+ "mugiwara-pr",
36
+ "mugiwara-quality",
37
+ "mugiwara-resume",
38
+ "mugiwara-review",
39
+ "mugiwara-root-cause",
40
+ "mugiwara-security",
41
+ "mugiwara-ship",
42
+ "mugiwara-sunset",
43
+ "mugiwara-testcases",
44
+ "mugiwara-workflow",
45
+ "using-mugiwara"
46
+ ],
47
+ "agents": [
48
+ "brook-healing",
49
+ "chopper-checkpoint",
50
+ "eval-runner",
51
+ "franky-gates",
52
+ "jinbe-security",
53
+ "luffy-orchestrator",
54
+ "memory-keeper",
55
+ "nami-planner",
56
+ "onboarding-guide",
57
+ "resume-coordinator",
58
+ "robin-reviewer",
59
+ "sanji-quality",
60
+ "skeptic-verifier",
61
+ "usopp-brainstorm",
62
+ "zoro-execution"
63
+ ]
64
+ }
18
65
  }
@@ -93,10 +93,14 @@ export const DEFAULT_CONFIG_LINES = [
93
93
  'mode=guided',
94
94
  'branch=feature/{type}-{issue}-{slug}',
95
95
  'commit=conventional',
96
+ 'auto_commit=on',
96
97
  'coverage_new=90',
97
98
  'coverage_modified=80',
98
99
  'review_depth=full',
99
100
  'quality_depth=full',
101
+ 'delegate_threshold=60',
102
+ 'heal_max_cycles=3',
103
+ 'verbosity=normal',
100
104
  ];
101
105
 
102
106
  // Idempotent: writes the full default config only when .mugiwara/config is
@@ -6,6 +6,11 @@
6
6
  // single export because OpenCode's legacy loader calls every exported function
7
7
  // as a plugin (same constraint ponytail documents).
8
8
  //
9
+ // Crew COLORS come from references/wave-banners.md (single source, shared
10
+ // references dir); the CREW map below is the cold-path
11
+ // fallback only. Temperature/steps stay here (runtime tuning, not banner
12
+ // material).
13
+ //
9
14
  // Install: add to opencode.json
10
15
  // { "plugin": ["@ionivetech/mugiwara"] }
11
16
  // or from the git repo:
@@ -22,26 +27,48 @@ const contentDir = join(__dirname, '..', '..', 'content');
22
27
  const skillsDir = join(contentDir, 'skills');
23
28
  const agentsDir = join(contentDir, 'agents');
24
29
 
25
- const ANNOUNCE =
26
- "Mugiwara crew available. The workflow auto-activates for non-trivial requests — no need to call `/using-mugiwara` at session start (it is an optional router). Run the crew pipeline inline in the main conversation: embody ONE crew role at a time using its skill, wait for its report, then move to the next. Never Task-dispatch a crew member — the crew runs in the main thread; subagents only for [PARALLEL] task batches, concurrent review/security, and independent re-run checks. Progress shows as checkpoint reports at wave/stage boundaries, pausing on failure or risk. Switch mode with `/mugiwara` (guided|semi|auto). See skills/mugiwara-workflow.";
27
-
30
+ // Colors are fallbacks — the wave-banners table is the source of truth.
28
31
  const CREW = {
29
32
  'luffy-orchestrator': { color: '#ef4444', temperature: 0.2, steps: 30 },
30
- 'usopp-brainstorm': { color: '#f59e0b', temperature: 0.6, steps: 30 },
33
+ 'usopp-brainstorm': { color: '#b45309', temperature: 0.6, steps: 30 },
31
34
  'nami-planner': { color: '#f97316', temperature: 0.2, steps: 30 },
32
35
  'zoro-execution': { color: '#22c55e', temperature: 0.1, steps: 50 },
33
- 'chopper-checkpoint': { color: '#3b82f6', temperature: 0.1, steps: 30 },
34
- 'sanji-quality': { color: '#a855f7', temperature: 0.1, steps: 40 },
36
+ 'chopper-checkpoint': { color: '#60a5fa', temperature: 0.1, steps: 30 },
37
+ 'sanji-quality': { color: '#facc15', temperature: 0.1, steps: 40 },
35
38
  'franky-gates': { color: '#06b6d4', temperature: 0.1, steps: 40 },
36
39
  'robin-reviewer': { color: '#8b5cf6', temperature: 0.2, steps: 30 },
37
40
  'jinbe-security': { color: '#6366f1', temperature: 0.2, steps: 30 },
38
- 'brook-healing': { color: '#ec4899', temperature: 0.1, steps: 30 },
41
+ 'brook-healing': { color: '#2dd4bf', temperature: 0.1, steps: 30 },
39
42
  'skeptic-verifier': { color: '#64748b', temperature: 0.1, steps: 30 },
40
43
  'eval-runner': { color: '#14b8a6', temperature: 0.2, steps: 30 },
41
44
  'resume-coordinator': { color: '#d97706', temperature: 0.2, steps: 30 },
42
45
  'memory-keeper': { color: '#d946ef', temperature: 0.2, steps: 30 },
46
+ 'onboarding-guide': { color: '#0ea5e9', temperature: 0.3, steps: 15 },
43
47
  };
44
48
 
49
+ // Read the crew color table (single source of truth, shared references/).
50
+ // Returns {} on any failure — callers fall back to the CREW map. The regex
51
+ // anchors the exact table shape: | agent-id | role | hex | ansi-256 | emoji |
52
+ function readBannerColors() {
53
+ try {
54
+ const path = join(__dirname, '..', '..', 'references', 'wave-banners.md');
55
+ if (!existsSync(path)) return {};
56
+ const text = readFileSync(path, 'utf8');
57
+ // null-prototype: agent ids are trusted repo content, but a future
58
+ // `__proto__` id must never write the object's prototype
59
+ const colors = Object.create(null);
60
+ for (const m of text.matchAll(/^\| ([\w-]+) \| [^|]+ \| (#[0-9a-f]{6}) \| (\d+) \| (\S+) \|\r?$/gm)) {
61
+ colors[m[1]] = m[2];
62
+ }
63
+ return colors;
64
+ } catch {
65
+ return {};
66
+ }
67
+ }
68
+
69
+ const ANNOUNCE =
70
+ "Mugiwara crew available. The workflow auto-activates for non-trivial requests — no need to call `/using-mugiwara` at session start (it is an optional router). Run the crew pipeline inline in the main conversation: embody ONE crew role at a time using its skill, wait for its report, then move to the next. Never Task-dispatch a crew member — the crew runs in the main thread; subagents only for [PARALLEL] task batches, concurrent review/security, and independent re-run checks. Progress shows as checkpoint reports at wave/stage boundaries, pausing on failure or risk. Switch mode with `/mugiwara` (guided|semi|auto). See skills/mugiwara-workflow.";
71
+
45
72
  function parseFrontmatter(text) {
46
73
  const m = text.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/);
47
74
  if (!m) throw new Error('Missing frontmatter fence (---)');
@@ -68,6 +95,7 @@ function permissionFromScope(scope) {
68
95
 
69
96
  function readAgents(stepsEnabled = true) {
70
97
  const agents = {};
98
+ const bannerColors = readBannerColors();
71
99
  let files;
72
100
  try {
73
101
  files = readdirSync(agentsDir).filter((f) => f.endsWith('.md'));
@@ -99,6 +127,11 @@ function readAgents(stepsEnabled = true) {
99
127
  agents[name] = { ...agents[name], ...rest };
100
128
  if (stepsEnabled) agents[name] = { ...agents[name], steps };
101
129
  }
130
+ // color comes from the wave-banners table (single source); CREW fallback
131
+ // covers agents the table does not list (and vice versa)
132
+ if (bannerColors[name] || CREW[name]) {
133
+ agents[name] = { ...agents[name], color: bannerColors[name] ?? CREW[name].color };
134
+ }
102
135
  const perm = permissionFromScope(parsed.data['write-scope']);
103
136
  if (perm && agents[name].mode === 'subagent') agents[name].permission = perm;
104
137
  }
package/AGENTS.md CHANGED
@@ -106,6 +106,17 @@ class.
106
106
 
107
107
  No PR merges without all green CI.
108
108
 
109
+ ### Assertion rules
110
+
111
+ - **No `expect()` inside a conditional** unless the condition is itself a
112
+ declared invariant (e.g. `if (tier === 3)`). An assertion that can be skipped
113
+ is not an assertion. Enforced by `validate-content.ts`.
114
+ - **Type checks are not coverage.** `typeof x === 'number'` passes on `0`.
115
+ `Array.isArray(x)` passes on `[]`. Assert the value the fixture was built to
116
+ produce.
117
+ - Every field in `state.json` has a fixture assertion with a non-trivial
118
+ expected value.
119
+
109
120
  ## Skill standards
110
121
 
111
122
  Every skill is `content/skills/<name>/SKILL.md`:
package/README.md CHANGED
@@ -245,10 +245,14 @@ Switch mode any time: `/mugiwara guided | semi | auto`. Or edit `.mugiwara/confi
245
245
  | `mode` | guided | guided / semi / auto |
246
246
  | `branch` | `feature/{type}-{issue}-{slug}` | Branch naming |
247
247
  | `commit` | conventional | conventional / gitmoji / plain |
248
+ | `auto_commit` | on | on / off — off disables commit+push in guided/semi |
248
249
  | `coverage_new` | 90 | Coverage threshold for new files (%) |
249
250
  | `coverage_modified` | 80 | Coverage threshold for modified files (%) |
250
251
  | `review_depth` | full | full / standard / quick — Robin's review depth |
251
252
  | `quality_depth` | full | full / standard / quick — Sanji's check depth |
253
+ | `delegate_threshold`| 60 | % of token budget at which remaining tasks dispatch to workers |
254
+ | `heal_max_cycles` | 3 | Max heal-loop cycles before human escalation |
255
+ | `verbosity` | normal | normal / full — how much the crew echoes. `normal` hides investigation steps (reads, greps) and file contents; edits, results, decisions stay visible. `full` echoes everything. Never suppresses decisions, questions, blockers, or lane rises |
252
256
 
253
257
  Set via `/mugiwara onboard` or edit directly. Unknown keys ignored. Project
254
258
  config (`.mugiwara/config`) overrides global (`~/.mugiwara/config`).
@@ -415,6 +419,8 @@ Uninstall: `mugiwara uninstall`
415
419
  All platforms get the full crew — 12 agents (+3 internal), 26 skills.
416
420
  Enforcement depth varies by harness; see the [harness matrix](docs/reference/harness-matrix.md).
417
421
 
422
+ → [How the skills stay small: three-layer disclosure](docs/reference/skill-anatomy.md)
423
+
418
424
  → [Per-platform guides](docs/install/index.md)
419
425
 
420
426
  ## Update
@@ -452,7 +458,7 @@ mugiwara reset --keep-logs # wipe state, keep lessons
452
458
 
453
459
  **Start here:** [Getting started](docs/getting-started.md) · [What mugiwara replaces](docs/concepts/comparison.md)
454
460
 
455
- **Concepts:** [Workflow](docs/concepts/workflow.md) · [Lanes](docs/concepts/lanes.md) · [Modes](docs/concepts/modes.md) · [Execution model](docs/concepts/execution-model.md) · [Git strategy](docs/concepts/git-strategy.md) · [Config](docs/concepts/config.md) · [Cost](docs/concepts/cost.md) · [Audit trail](docs/concepts/audit-trail.md)
461
+ **Concepts:** [Workflow](docs/concepts/workflow.md) · [Lanes](docs/concepts/lanes.md) · [Modes](docs/concepts/modes.md) · [Execution model](docs/concepts/execution-model.md) · [Git strategy](docs/concepts/git-strategy.md) · [Config](docs/concepts/config.md) · [Cost](docs/concepts/cost.md) · [Audit trail](docs/concepts/audit-trail.md) · [Security](docs/concepts/security.md)
456
462
 
457
463
  **Crew:** [Agents](docs/concepts/agents.md) · [Skills](docs/concepts/skills.md)
458
464
 
@@ -464,6 +470,20 @@ mugiwara reset --keep-logs # wipe state, keep lessons
464
470
 
465
471
  **Roadmap:** [ROADMAP.md](ROADMAP.md)
466
472
 
473
+ ## What is measured, and what is not
474
+
475
+ | Claim | Status |
476
+ |---|---|
477
+ | Retrieval routing rank-1 | **93.5%**, 181 probes, offline, in CI |
478
+ | Reference pointers resolve | **66/66**, 3 tiers, in CI |
479
+ | Lane constants match content load | **verified**, in CI |
480
+ | Write-scope enforcement | **opencode only** — rules-based elsewhere |
481
+ | Cross-harness mission behavior | **12/12 platforms** — 9 rules-dir installs + 3 marketplace manifests, in CI |
482
+ | Outcome vs other approaches | **not measured** — see roadmap |
483
+
484
+ Numbers here are produced by `bun run gate`. Nothing in this table is an
485
+ estimate.
486
+
467
487
  ## License
468
488
 
469
489
  MIT. Copyright (c) 2026 ionivetech.
@@ -31,7 +31,7 @@ Wave 3 of `mugiwara-workflow`, with the plan doc path.
31
31
  ## Rules
32
32
 
33
33
  1. Follow `mugiwara-execution` exactly (ingestion, dispatch rules, per-task discipline).
34
- 2. Before touching code, follow the mode's branch/commit rule (per mode config): `guided` ASKS THE USER (auto branch for the mission or current branch; auto commit per task or user-controlled checkpoints); `semi`/`auto` auto-create the mission branch per the config `branch` key and auto-commit per task in the config `commit` style — no ask. Record the mode + branch + commit style in the decision log (`.mugiwara/logs/`) and todos. State-mutating consent still applies in every mode.
34
+ 2. Before touching code, follow the mode's branch/commit rule (per mode config): `guided` ASKS THE USER (auto branch for the mission or current branch; auto commit per task or user-controlled checkpoints); `semi` auto-creates the mission branch per the config `branch` key and auto-commits per task in the config `commit` style — no ask; `auto` same but commits ALWAYS. `auto_commit=off` (config, default on): guided and semi leave all changes uncommitted for the user — no commits, no push; auto mode ignores it. Record the mode + branch + commit style + auto_commit in the decision log (`.mugiwara/logs/`) and todos. State-mutating consent still applies in every mode.
35
35
  3. Sequential tasks and chains run INLINE in the main thread — no subagent round-trips for ordered work. Only `[PARALLEL]` task batches dispatch WORKER subagents (one task per worker); never another crew member; return your execution report inline to the conversation, which routes to Chopper.
36
36
  4. Every task done = evidence attached (command output / file inspection); run acceptance criteria, do not assert them.
37
37
  5. Apply `mugiwara-git` as you go: atomic commits per LOGICAL task (when auto-commit is on) — a task is a meaningful unit of work, not a micro-step; adjacent trivial changes fold into the neighboring task's commit. Save-points before risky work, commit style matched to the repo history.
@@ -65,5 +65,6 @@ TRUST NOTHING; VERIFY EVERYTHING. No evidence, no pass — and the evidence must
65
65
  - Commits containing undeclared files, or missing declared files.
66
66
  - A DoD axis passed with no evidence.
67
67
  - Any urge to edit code instead of reporting the finding.
68
+ - Echoing raw output when `verbosity=normal` — summarize and cite the evidence path.
68
69
 
69
70
  All mean: the audit is incomplete. Finish it before issuing the verdict.
@@ -14,12 +14,12 @@ Execute the plan exactly. No silent reordering, no skipping steps, no "close eno
14
14
 
15
15
  ## Ask before working
16
16
 
17
- - `guided`: before touching any code, ASK THE USER — auto branch (dedicated mission branch, recommended, keeps `main` clean) or work on the current branch; auto commit per task or commit at user-controlled checkpoints.
18
- - `semi`/`auto`: auto-create the mission branch per the config `branch` key (default `feature/{type}-{issue}-{slug}`) and auto-commit per task using the config `commit` style (default conventional). No branch/commit ask. Record mode + branch + commit style in the decision log (`.mugiwara/logs/YYYY-MM-DD-<mission>.md`) and in `.mugiwara/results/<mission>/todos.md`.
17
+ - `guided`: before touching any code, ASK THE USER — auto branch (dedicated mission branch, recommended, keeps `main` clean) or work on the current branch; auto commit per task or commit at user-controlled checkpoints. With `auto_commit=off`: the branch ask stays, the commit question is skipped — changes stay uncommitted.
18
+ - `semi`: auto-create the mission branch per the config `branch` key; auto-commit per task in the config `commit` style ONLY when `auto_commit=on` (default). Off leave every task's changes uncommitted; the user commits manually.
19
+ - `auto`: auto-create the branch and auto-commit per task ALWAYS — `auto_commit=off` has no effect in auto mode.
20
+ Record mode + branch + commit style + `auto_commit` in the decision log (`.mugiwara/logs/YYYY-MM-DD-<mission>.md`) and in `.mugiwara/results/<mission>/todos.md` — every mode.
19
21
 
20
- Code to the installed version's docs, not memory: `_shared/references/source-grounding.md`.
21
-
22
- The plan doc stays clean — never edit it during execution except through Nami. If the user says no auto-commit in `guided`, still run every acceptance check and leave the diff staged or presented for approval. State-mutating consent is NOT covered by this rule — it still applies in every mode. One-task-one-commit, save-points, and atomic-commit rules hold unchanged in every mode.
22
+ Code to the installed version's docs, not memory: `_shared/references/source-grounding.md`. The plan doc stays clean — never edit it during execution except through Nami. If the user says no auto-commit in `guided`, still run every acceptance check and leave the diff staged or presented for approval. State-mutating consent is NOT covered by this rule — it still applies in every mode. One-task-one-commit, save-points, and atomic-commit rules hold unchanged in every mode.
23
23
 
24
24
  ## Todo list first
25
25
 
@@ -28,9 +28,7 @@ Before touching code:
28
28
  1. Create `.mugiwara/results/<mission>/todos.md` — one checkbox per task, derived from the plan.
29
29
  2. Check each box off only when the task completes, WITH its evidence link (`[path](relative/path)`, clickable).
30
30
  3. Re-check the whole list after each task and after each batch; unmarked boxes mean the mission is not done.
31
- 4. Mirror every change into the host's native todo tool (`todowrite` on
32
- opencode; `TaskUpdate` on Claude Code; none on tier 2/3 — plan doc only).
33
- Per-host table: `docs/reference/harness-matrix.md`.
31
+ 4. Mirror EVERY transition into the host's native todo tool (`todowrite` on opencode; `TaskUpdate` on Claude Code; none on tier 2/3 — plan doc only) in the SAME response the task's evidence lands — one transition per call, never batched at wave end. Per-host table: `docs/reference/harness-matrix.md`.
34
32
 
35
33
  ## Wave execution
36
34
 
@@ -49,9 +47,7 @@ Before starting: if `.mugiwara/continue/<mission>/[member].json` exists, resume
49
47
  2. **Context pressure** — when `tokens_est` exceeds `delegate_threshold`% of
50
48
  `budget` (read from `.mugiwara/config`, default 60) mid-execution, remaining
51
49
  SEQUENTIAL tasks dispatch to workers — one at a time, in plan order. Order is
52
- preserved; only the context resets.
53
-
54
- Announce: `⚠ context 62% — remaining tasks run in fresh workers, plan order unchanged.`
50
+ preserved; only the context resets. Announce: `⚠ context 62% — remaining tasks run in fresh workers, plan order unchanged.`
55
51
 
56
52
  The threshold stays relative, never absolute: `tokens_est > delegate_threshold%
57
53
  × budget` (read from `.mugiwara/config`, default 60), never `tokens_est >
@@ -63,12 +59,10 @@ Real worker dispatch exists only where the harness has subagents — tier 1
63
59
  (Claude Code, opencode) plus Copilot. Gate the context-pressure trigger on
64
60
  that capability: if the harness cannot dispatch, do not promise fresh workers.
65
61
 
66
- Where workers are unavailable and context pressure crosses the threshold, fall
67
- back to the mechanism that already exists: write a savepoint, run the
68
- checkpoint, and suggest a fresh session via `resume`. Announce the fallback:
69
-
70
- `⚠ context 62% — no worker dispatch on this harness; savepoint written,
71
- resume in a fresh session (plan order unchanged).`
62
+ Where workers are unavailable and context pressure crosses the threshold:
63
+ write a savepoint, run the checkpoint, and suggest a fresh session via
64
+ `resume`. Announce: `⚠ context 62% no worker dispatch on this harness;
65
+ savepoint written, resume in a fresh session (plan order unchanged).`
72
66
 
73
67
  ## Batch resume
74
68
 
@@ -107,6 +101,12 @@ Any task touching UI markup, styling, or components applies `mugiwara-frontend`
107
101
 
108
102
  After each wave: compact task table (status, evidence link, deviations) shown inline in the conversation. Format: `references/dispatch.md` — report table. Then return to Luffy, who routes to Chopper (Wave 4). Write detailed execution log to `.mugiwara/results/<mission>/01-execution.md`. Never dispatch another crew member.
109
103
 
104
+ ## Step budget
105
+
106
+ Tool calls are finite — harnesses cap them per session; a 9-wave mission that wastes them stalls before closure. Combine evidence runs (`evidence.sh <m> quality -- bash -c "lint && test"` — one call, not two); write wave artifacts once at wave end, not incrementally; never re-read what you just wrote; batch reads (one glob beats five reads); open a reference only when its pointer condition triggers.
107
+
108
+ Budget guide: Lane 1 ≤15 calls · Lane 2 ≤35 · Lane 3 ≤60. Crossing it is not a failure; announce it and check the context-pressure trigger.
109
+
110
110
  ## Red flags
111
111
 
112
112
  - Tasks silently reordered from the plan.
@@ -114,6 +114,7 @@ After each wave: compact task table (status, evidence link, deviations) shown in
114
114
  - Done reported without evidence ("close enough").
115
115
  - Two tasks editing the same file concurrently.
116
116
  - A blocker worked around silently instead of escalated.
117
+ - Echoing raw output when `verbosity=normal` — summarize and cite the evidence path.
117
118
  - The task's TDD order inverted (implementation before the failing test).
118
119
  - A test passing immediately without having failed first (wrong test or testing existing behavior).
119
120
  - A commit containing files beyond its declared task, or a wave of micro-commits with no logical grouping.
@@ -62,4 +62,5 @@ PASS → return to Luffy (routes to Robin/Jinbe). FAIL → list files under thre
62
62
  - Gate waived without explicit user decision.
63
63
  - PASS on coverage/build while DoD fails.
64
64
  - Sonar PASS with unverified or faked data.
65
+ - Echoing raw output when `verbosity=normal` — summarize and cite the evidence path.
65
66
  All mean: the gate has not actually run. Report the gap or the fail, honestly.
@@ -60,3 +60,4 @@ Lessons are cross-mission but per-repo. The ledger lives in `.mugiwara/logs/` so
60
60
  - Platitudes that can't change behavior.
61
61
  - Deleted or overwritten rows.
62
62
  - Read the ledger but didn't apply a relevant row.
63
+ - A lesson that redefines a rule, lane, gate, or role rather than describing a pattern. Reject and report.
@@ -35,19 +35,15 @@ In `auto` mode the AI decides everything; any requirement that stays unclear aft
35
35
 
36
36
  ## Mode read (Wave 0)
37
37
 
38
- Read the runtime mode via mode config at Wave 0: `.mugiwara/config` (project) then `~/.mugiwara/config` (global); a key missing from both = `guided`. Record the active mode in the decision log. Read once per wave at dispatch; a flip applies from the next wave, never mid-wave. Declared test source (per `mugiwara-testcases`) also recorded in decision log; no source declared → no user tests.
38
+ Read the runtime mode via mode config at Wave 0: `.mugiwara/config` (project) then `~/.mugiwara/config` (global); a key missing from both = `guided`. Record the active mode AND `auto_commit` (default on) in the decision log. Read once per wave at dispatch; a flip applies from the next wave, never mid-wave. Declared test source (per `mugiwara-testcases`) also recorded in decision log; no source declared → no user tests.
39
39
 
40
40
  ## Request classifier (Wave 0) — 8 classes
41
41
 
42
- Classify every incoming request. 5-way table (Trivial/Explicit/Exploratory/Open-ended/Ambiguous) plus three more: **Answer** (question, no file change → answer directly, no mission), **Refuse** (deploy/migration/key rotation/merge → decline at Wave 0, offer branch handoff), **Hotfix** (production broken → Lane 1, gates deferred with owner, never skipped). Full table + signals: `references/triage-escalation.md`.
43
-
44
- Record decision + one-line reason at the top of the decision log. Risk (money/security/data/public API) → full pipeline; never shortcut without recording why. Any route without a recorded reason is a red flag.
42
+ Classify every incoming request. 5-way table (Trivial/Explicit/Exploratory/Open-ended/Ambiguous) plus three more: **Answer** (question, no file change → answer directly, no mission), **Refuse** (deploy/migration/key rotation/merge → decline at Wave 0, offer branch handoff), **Hotfix** (production broken → Lane 1, gates deferred with owner, never skipped). Full table + signals: `references/triage-escalation.md`. Record decision + one-line reason at the top of the decision log. Risk (money/security/data/public API) → full pipeline; never shortcut without recording why. Any route without a recorded reason is a red flag.
45
43
 
46
44
  ## Lane routing + precedence (Wave 0, size before process)
47
45
 
48
- Alongside the class, size the mission and pick a lane (0 Direct / 1 Lean / 2 Standard / 3 Full / 4 Spike). **Precedence: class decides whether there is work; lane decides how much process — class first, lane second, record both.** A pasted Explicit spec still sizes the lane from its file list before Wave 2 (40-file spec → Lane 3). Escalation only: a lane may rise mid-mission, never drop. Full table: `references/triage-escalation.md`.
49
-
50
- Small tasks: read-only investigation → host `explore` agent or inline read — NOT a Luffy subagent (~5k vs ~40k tokens); explicit implement → Lane 1 Zoro inline. Review only when risky — full pipeline.
46
+ Alongside the class, size the mission and pick a lane (0 Direct / 1 Lean / 2 Standard / 3 Full / 4 Spike). **Precedence: class decides whether there is work; lane decides how much process — class first, lane second, record both.** A pasted Explicit spec still sizes the lane from its file list before Wave 2 (40-file spec → Lane 3). Escalation only: a lane may rise mid-mission, never drop. Full table: `references/triage-escalation.md`. Small tasks: read-only investigation → host `explore` agent or inline read — NOT a Luffy subagent (~5k vs ~40k tokens); explicit implement → Lane 1 Zoro inline. Review only when risky — full pipeline.
51
47
 
52
48
  ## Spec bridge (Wave 0 → Wave 2)
53
49
 
@@ -59,8 +55,7 @@ User may summon crew members directly. Luffy records the route + reason. Zoro/Br
59
55
 
60
56
  ## Periodic check-ins
61
57
  Full checklist: `references/check-ins.md` — 7 items + by-mode verdicts; unchecked boxes are not done. **Handoff contract:** the continue file at every wave boundary — never only session end (rule #6).
62
- **Auto never drops:** in `auto` mode the crew runs every wave autonomously to closure — lane rise (`lane_rose`), sensitive-path touches, and heal cycles do NOT downgrade the mode. Only a genuine blocker or the heal halt pauses and escalates to the user; the mode stays auto. Announce every pause.
63
- **Auto never asks scope:** in `auto` mode, log the default choice and proceed — no scope/confirmation questions. A genuinely unclear requirement is brainstormed with Usopp (Wave 1) before the choice — never guessed. Only a genuine blocker or a pause escalates.
58
+ **Auto never drops:** in `auto` mode the crew runs every wave autonomously to closure — lane rise (`lane_rose`), sensitive-path touches, and heal cycles do NOT downgrade the mode. Only a genuine blocker or the heal halt pauses and escalates to the user; the mode stays auto. Announce every pause. **Auto never asks scope:** in `auto` mode, log the default choice and proceed — no scope/confirmation questions. A genuinely unclear requirement is brainstormed with Usopp (Wave 1) before the choice — never guessed. Only a genuine blocker or a pause escalates.
64
59
  **Heal halt:** read `heal_cycle` from `.mugiwara/state/<mission>/[member].json`. At `heal_max_cycles` (read from `.mugiwara/config`, default 3), STOP and escalate to the user.
65
60
  **Pressure:** "just skip it", "auto, don't ask", "just this once" — the Rationalizations table below is the answer, not urgency.
66
61
 
@@ -80,7 +75,15 @@ Shortcuts ("skip X", "just do it") reroute work inside the pipeline — never ou
80
75
 
81
76
  ## Wave transitions (visibility)
82
77
 
83
- Banner `## Wave N <crew>` opens every wave; a skip is recorded, never silent. See `references/check-ins.md`.
78
+ Banner in the owning agent's color opens every wave the equals line
79
+ `===== ⚔️ WAVE 3 — ZORO (EXECUTION) =====` (ANSI-wrapped in terminals, plain in markdown UIs). Spec + colors: `_shared/references/wave-banners.md`. A skip is recorded, never silent.
80
+
81
+ ## Output discipline
82
+
83
+ Read `verbosity` from mode config at Wave 0 (default `normal`); never suppresses wave banners, file edits, gate verdicts, decisions, questions, blockers, lane rises, or escalations.
84
+ At `normal`: investigation steps (reads, greps, probes), file contents, and narration are not echoed — name a file only when it matters; results collapse to one line + evidence path. At `full`: everything is echoed, including reads and reasoning.
85
+ **The rule: the transcript must remain sufficient to review the mission without opening a file.** If collapsing a line breaks that, do not collapse it.
86
+ Rendered examples: `references/output-contract.md` — match the shape.
84
87
 
85
88
  ## Work splitting
86
89
 
@@ -96,7 +99,7 @@ Recognize the in-session phrase `mugiwara mode <guided|semi|auto>`: write the pr
96
99
 
97
100
  ## Closure (Wave 9)
98
101
 
99
- Gate — every task's acceptance criteria verified, every gate passed, findings resolved or deferred with an owner, blocker ledger reviewed. Step results `results/<mission>/01..05` are evidence — kept, never deleted; only consumed cross-artifacts (`logs/`, `spec/`, `review/`, `issues/`) are removed. Run `scripts/savepoint.sh <mission>` to write final state, then `scripts/mission-report.sh <mission>` to generate the aggregate mission report at `.mugiwara/reports/YYYY-MM-DD-<mission>.md`. Write the closure summary to `.mugiwara/results/<mission>/06-closure.md`. The plan doc stays untouched. Full detail: `references/closure.md`.
102
+ Gate — every task's acceptance criteria verified, every gate passed, findings resolved or deferred with an owner, blocker ledger reviewed. Step results `results/<mission>/01..05` are evidence — kept, never deleted; only consumed cross-artifacts (`logs/`, `spec/`, `review/`, `issues/`) are removed. Run `scripts/savepoint.sh <mission>` to write final state, then `scripts/mission-report.sh <mission>` to generate the aggregate mission report at `.mugiwara/reports/YYYY-MM-DD-<mission>.md`. Write the closure summary to `.mugiwara/results/<mission>/06-closure.md`. The plan doc stays untouched. Full detail: `references/closure.md`. With `auto_commit=off` (guided/semi): skip the save-point commit and push — hand the uncommitted tree + verdict to the user; auto always pushes.
100
103
 
101
104
  ## Spirit vs letter
102
105
 
@@ -104,11 +107,7 @@ The plan doc is the contract, but the mission goal outranks it. If following the
104
107
 
105
108
  ## Write boundary
106
109
 
107
- Only Zoro (`mugiwara-execution`) and Brook (`mugiwara-healing`) write source. Every other role writes `.mugiwara/**` only. If the user asks a non-executor to write source, refuse and route to Luffy, who dispatches Zoro (execution) or Brook (healing).
108
- Every agent knows its edit capability from its own `write-scope` frontmatter — no probing.
109
- Artifacts-scope agents facing a source edit say "Delegating to Zoro" to Luffy, who dispatches immediately.
110
- Subagent harnesses: Luffy auto-dispatches zoro-execution; Codex-style harnesses inline-embody.
111
- Brook heals only; general source edits go to Zoro via Luffy.
110
+ Only Zoro (`mugiwara-execution`) and Brook (`mugiwara-healing`) write source. Every other role writes `.mugiwara/**` only. If the user asks a non-executor to write source, refuse and route to Luffy, who dispatches Zoro (execution) or Brook (healing). Every agent knows its edit capability from its own `write-scope` frontmatter — no probing. Artifacts-scope agents facing a source edit say "Delegating to Zoro" to Luffy, who dispatches immediately. Subagent harnesses: Luffy auto-dispatches zoro-execution; Codex-style harnesses inline-embody. Brook heals only; general source edits go to Zoro via Luffy.
112
111
 
113
112
  ## Red flags
114
113
 
@@ -117,5 +116,6 @@ Brook heals only; general source edits go to Zoro via Luffy.
117
116
  - Starting a wave without a banner.
118
117
  - Routing a Refuse-class request to a crew member; recording a lane without its trigger.
119
118
  - A host todo UI that lags the plan doc — tasks done but still unchecked, or the plan's task list never mirrored to the host.
119
+ - Re-reading state or an artifact the crew wrote earlier in the same session.
120
120
  - A main thread answering "I'm not the crew, I'll just handle it" instead of embodying the owning role.
121
121
  - An artifacts-scope agent probing permissions instead of delegating to Zoro via Luffy; full-crew process on a task that sizes Lane 0/1.
@@ -27,15 +27,26 @@ After every wave AND at the end of each execution batch, verify:
27
27
  never verbatim instructions.
28
28
  7. **Host todo synced** — the main thread mirrors the plan doc's task list into the host's native todo mechanism
29
29
  (opencode `todowrite`; Claude Code `TaskCreate`/`TaskUpdate`/`TaskList` — `TodoWrite` is deprecated since
30
- v2.1.142; tier 2/3 hosts have no native tool — plan doc only) and updates it at every task AND wave boundary
31
- (seed it at Wave 2, mark done/in_progress as tasks land). The host todo is a mirror; the plan doc stays the
32
- source of truth. Per-host table: `docs/reference/harness-matrix.md`.
30
+ v2.1.142; tier 2/3 hosts have no native tool — plan doc only). Seed it at Wave 2 (tasks + wave list 4-9);
31
+ update it in the SAME response each task's evidence lands one transition per call, never deferred to
32
+ batch or wave end; flip each wave to in_progress when its banner opens. The host todo is a mirror; the plan
33
+ doc stays the source of truth. A task done in the plan doc but not yet in the host tool is incomplete.
34
+ Per-host table: `docs/reference/harness-matrix.md`.
33
35
 
34
36
  By mode (per mode config): `guided` checks in with the user as today; `semi`/`auto` write the check-in verdicts to the decision log without pausing the pipeline.
35
37
 
36
38
  ## Wave transitions (visibility)
37
39
 
38
- Every wave opens with a visible main-thread banner `## Wave N — <crew> (<skill>)` and closes with the handoff line `→ Wave N+1 — <crew>` (Wave 9: `→ closure`). No wave starts without its banner. A wave intentionally omitted is never silent — record wave, owner, and reason in the decision log before moving on. The user must always see which crew runs now and who takes over next.
40
+ Every wave opens with a colored banner in the owning agent's color and closes
41
+ with the handoff line `→ Wave N+1 — <crew>` (Wave 9: `→ closure`). Terminal:
42
+ equals line `===== ⚔️ WAVE 3 — ZORO (EXECUTION) =====` wrapped in ANSI truecolor
43
+ `\x1b[38;2;R;G;Bm...\x1b[0m` (256 fallback `38;5;N`); markdown UIs: the plain
44
+ equals line, no ANSI. The literal `WAVE N —`
45
+ text must stay exact (savepoint's heal counter greps `wave 8`). Colors
46
+ and the full spec: `_shared/references/wave-banners.md`. No wave starts without its banner. A wave intentionally
47
+ omitted is never silent — record wave, owner, and reason in the decision log
48
+ before moving on. The user must always see which crew runs now and who takes
49
+ over next.
39
50
 
40
51
  ## On drift
41
52