@ionivetech/mugiwara 0.7.0 → 0.8.1

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 (87) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.kimi-plugin/plugin.json +1 -1
  6. package/.opencode/mugiwara-helpers.mjs +2 -2
  7. package/README.md +196 -330
  8. package/content/agents/brook-healing.md +1 -1
  9. package/content/agents/franky-gates.md +1 -1
  10. package/content/agents/luffy-orchestrator.md +2 -2
  11. package/content/agents/memory-keeper.md +5 -0
  12. package/content/agents/usopp-brainstorm.md +3 -2
  13. package/content/agents/zoro-execution.md +4 -3
  14. package/content/skills/mugiwara-backend/SKILL.md +52 -43
  15. package/content/skills/mugiwara-brainstorm/SKILL.md +5 -3
  16. package/content/skills/mugiwara-checkpoint/SKILL.md +21 -8
  17. package/content/skills/mugiwara-contract-first/SKILL.md +46 -1
  18. package/content/skills/mugiwara-execution/SKILL.md +34 -33
  19. package/content/skills/mugiwara-execution/references/dispatch.md +1 -1
  20. package/content/skills/mugiwara-execution/references/execution-phase-flows.md +18 -0
  21. package/content/skills/mugiwara-frontend/SKILL.md +44 -44
  22. package/content/skills/mugiwara-gates/SKILL.md +28 -16
  23. package/content/skills/mugiwara-healing/SKILL.md +30 -25
  24. package/content/skills/mugiwara-lessons/SKILL.md +3 -0
  25. package/content/skills/mugiwara-orchestration/SKILL.md +10 -9
  26. package/content/skills/mugiwara-orchestration/references/control-commands.md +14 -0
  27. package/content/skills/mugiwara-planning/SKILL.md +28 -14
  28. package/content/skills/mugiwara-planning/references/large-campaign-subplan.md +41 -0
  29. package/content/skills/mugiwara-planning/references/plan-template.md +22 -0
  30. package/content/skills/mugiwara-quality/SKILL.md +8 -13
  31. package/content/skills/mugiwara-quality/references/order-checklist.md +18 -0
  32. package/content/skills/mugiwara-resume/SKILL.md +3 -9
  33. package/content/skills/mugiwara-resume/references/resume-protocol.md +16 -0
  34. package/content/skills/mugiwara-review/SKILL.md +17 -24
  35. package/content/skills/mugiwara-review/references/red-flags-review.md +17 -0
  36. package/content/skills/mugiwara-security/SKILL.md +47 -35
  37. package/content/skills/mugiwara-ship/SKILL.md +2 -0
  38. package/content/skills/mugiwara-workflow/SKILL.md +13 -13
  39. package/content/skills/mugiwara-workflow/references/large-campaign-subplan.md +29 -0
  40. package/content/skills/mugiwara-workflow/references/workspace-layout.md +6 -3
  41. package/dist/mugiwara.js +1802 -316
  42. package/gemini-extension.json +1 -1
  43. package/hooks/mugiwara-mode-tracker.js +24 -4
  44. package/hooks/mugiwara-mode-tracker.ts +36 -7
  45. package/hooks/pipeline-guard.js +1 -1
  46. package/hooks/pipeline-guard.ts +2 -1
  47. package/hooks/session-start.js +6 -1
  48. package/hooks/session-start.ts +8 -1
  49. package/package.json +2 -2
  50. package/plugin.json +1 -1
  51. package/references/cost-governor.md +104 -0
  52. package/references/multi-actor.md +21 -0
  53. package/references/posture-routing.md +31 -0
  54. package/references/wave-banners.md +1 -2
  55. package/scripts/benchmark-governor.ts +516 -0
  56. package/scripts/benchmark-thresholds.json +47 -0
  57. package/scripts/check-doc-links.ts +8 -2
  58. package/scripts/gate-selftest.ts +104 -21
  59. package/scripts/lib/lane-base.sh +4 -4
  60. package/scripts/retrieval-eval.ts +9 -3
  61. package/scripts/savepoint.sh +41 -2
  62. package/scripts/validate-content.ts +82 -3
  63. package/scripts/verify-install.ts +20 -0
  64. package/scripts/write-metrics.ts +73 -0
  65. package/src/adaptive-budget.ts +178 -0
  66. package/src/args.ts +3 -2
  67. package/src/budget.ts +18 -16
  68. package/src/check-artifacts.ts +45 -0
  69. package/src/cli.ts +221 -8
  70. package/src/cognition.ts +234 -0
  71. package/src/config.ts +113 -0
  72. package/src/context.ts +72 -0
  73. package/src/continue.ts +29 -0
  74. package/src/cost.ts +189 -0
  75. package/src/evidence.ts +160 -0
  76. package/src/installer.ts +2 -16
  77. package/src/integrity.ts +65 -16
  78. package/src/investigation.ts +72 -0
  79. package/src/mission.ts +246 -16
  80. package/src/policy.ts +355 -2
  81. package/src/posture.ts +86 -0
  82. package/src/provenance.ts +29 -9
  83. package/src/reporting.ts +225 -0
  84. package/src/scope.ts +321 -0
  85. package/src/sign.ts +234 -18
  86. package/src/slop.ts +306 -0
  87. package/src/work.ts +273 -0
@@ -31,7 +31,7 @@ Flow 8 of `mugiwara-workflow`, with failure inputs from Chopper/Sanji/Franky/Rob
31
31
 
32
32
  ## Rules
33
33
 
34
- 1. Follow `mugiwara-healing` exactly (triage matrix, root-cause rule, cycle counter).
34
+ 1. Follow `mugiwara-healing` exactly (triage matrix, root-cause rule, cycle counter). Every heal follows 4-phase `reproduce → localize → reduce → guard` — run the full sequence, never skip guard test.
35
35
  2. Read `.mugiwara/missions/<mission>/blockers.md` and work each row; mark rows fixed as you clear them.
36
36
  3. Never weaken or delete tests/configs to silence a failure.
37
37
  4. Apply `mugiwara-git` for fixes: atomic commits, save-points before a risky fix, rollback plan prepared for risky ones.
@@ -30,7 +30,7 @@ Flow 6 of `mugiwara-workflow` (after Sanji's report passes) and again at release
30
30
  1. Follow `mugiwara-gates` exactly (thresholds, missing-tooling protocol).
31
31
  2. Missing coverage tooling is a reported gap with a user decision — never a silent pass.
32
32
  3. At release, run `mugiwara-ship`: pre-launch checklist, feature flags, staged rollout, mandatory rollback plan.
33
- 4. When user ACs are declared (per `mugiwara-testcases`), the coverage thresholds (90/80) apply only to unit-level new/modified code; the user-AC verdict governs ship-readiness. An e2e user suite adding ~0% coverage is not a gate failure. The user-AC verdict must come from the quality flow-stage evidence, never asserted.
33
+ 4. When user ACs are declared (per `mugiwara-testcases`), the coverage thresholds (85/90) apply only to unit-level new/modified code; the user-AC verdict governs ship-readiness. An e2e user suite adding ~0% coverage is not a gate failure. The user-AC verdict must come from the quality flow-stage evidence, never asserted.
34
34
  5. Ship verdict is binary with evidence; a critical finding or a missing rollback plan → NO-GO.
35
35
  6. Write verdicts and evidence to `.mugiwara/missions/<mission>/flows/04-gates.md`.
36
36
 
@@ -29,13 +29,13 @@ Owns the whole mission flow end to end: triage routing, flow transitions, inter-
29
29
  3. Never let a flow stage pass on claims — require evidence (command output / file) from the owning agent.
30
30
  4. Track the heal-loop counter: max 3 cycles, then escalate to the human with full history.
31
31
  5. Enforce the blocker protocol: blocked agents append `| flow stage | task | symptom | attempted | help-needed |` to `.mugiwara/missions/<mission>/blockers.md`, never work around silently.
32
- 6. At closure run `mugiwara-ship` for the GO/NO-GO verdict, write the closure report to `.mugiwara/missions/<mission>/report.md` (seeded from `flows/06-closure.md`), then run `mugiwara archive <mission>` — it folds the flow files, review, security, blockers, and decisions into report.md and removes the loose files.
32
+ 6. At closure run `mugiwara-ship` for the GO/NO-GO verdict, write the closure report to `.mugiwara/missions/<mission>/report.md` (seeded from `flows/06-closure.md`), then run `mugiwara archive <mission>` — it folds the flow files, review, security, blockers, and decisions into report.md and removes the loose files. The PR material (`flows/07-pr-verdict.md`) survives archive as `pr-verdict.md` at the mission root — the dir ends as plan.md + report.md + pr-verdict.md.
33
33
  7. Classify every incoming request 5 ways — trivial / explicit / exploratory / open-ended / ambiguous — and log decision + reason.
34
34
  8. The user may call any crew member directly — still log the route + reason in `logs/`; direct calls do not skip check-ins.
35
35
  9. Work splitting: when a flow stage has many independent tasks, instruct Zoro to parallelize — one task per WORKER subagent; sequential work stays inline.
36
36
  10. After each flow stage, ensure the mission decision log (`.mugiwara/missions/<mission>/decisions.md`) is updated — every flow stage performed recorded with outcome and duration. Each heal cycle is a `## Flow 8 — healing` section; savepoint counts those sections for `heal_cycle`, so an unlogged heal flow stage reads as no cycle.
37
37
  11. Read the mode from `.mugiwara/config` at Flow 0 and record it in the decision log; apply a flip from the next flow stage. Check-ins: `guided` asks the user, `semi`/`auto` log verdicts without pausing. In `auto`, unclear requirements are brainstormed with Usopp before deciding — never guess on unclear scope.
38
- 12. At closure: run `mugiwara-ship` for the GO/NO-GO verdict, present the MANDATORY detailed closure summary (mission summary, per-flow-stage outcomes with evidence, gate verdicts, review/security dispositions, e2e status, tests, risks/rollback, deferred items, next steps — per `mugiwara-orchestration`), write the closure report to `.mugiwara/missions/<mission>/report.md` (seeded from `flows/06-closure.md`), then run `mugiwara archive <mission>` to fold flow files + review + security + blockers + decisions into it.
38
+ 12. At closure: run `mugiwara-ship` for the GO/NO-GO verdict, present the MANDATORY detailed closure summary (mission summary, per-flow-stage outcomes with evidence, gate verdicts, review/security dispositions, e2e status, tests, risks/rollback, deferred items, next steps — per `mugiwara-orchestration`), write the closure report to `.mugiwara/missions/<mission>/report.md` (seeded from `flows/06-closure.md`), then run `mugiwara archive <mission>` to fold flow files + review + security + blockers + decisions into it — the PR material (`flows/07-pr-verdict.md`) survives as `pr-verdict.md` at the mission root.
39
39
  13. Terminal (every mode): save-point commit → push the mission branch with plain `git push -u origin <branch>` (per the config `branch` key) → write `.mugiwara/missions/<mission>/flows/07-pr-verdict.md` — one document that IS the ready PR material (Title → Summary → What changed → Per-flow-stage evidence → Tests → Checks → Verdict); scan it for secrets before handing off → give branch + verdict to the user, who opens the PR. On auth/remote failure, fall back to the local closure report and log the reason. The crew never creates a PR, never merges, never deploys, never auto-reacts to review comments or CI in any mode.
40
40
  14. Persona persistence: user shortcuts ("skip X", "just do it", "handle
41
41
  it directly") never dissolve the crew frame. Stay Luffy: re-classify and route
@@ -8,6 +8,11 @@ write-scope: artifacts
8
8
 
9
9
  # Memory Keeper — Mission Memory
10
10
 
11
+ ## Skip when
12
+
13
+ - Lane 0 direct with empty ledger — `lessons.md` missing or empty and lane `direct` → skip dispatch, record skip in decisions.
14
+ - Fresh repo with no ledger and nothing to capture at closure.
15
+
11
16
  ## Before you start
12
17
 
13
18
  1. Read the mission state (`.mugiwara/missions/<mission>/state.json | <member>.json`) for this member.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: usopp-brainstorm
3
3
  description: Persona for mugiwara-brainstorm. Critical sparring partner: interrogates, researches, recommends.
4
- skills: mugiwara-brainstorm, mugiwara-orchestration
4
+ skills: mugiwara-brainstorm, mugiwara-root-cause, mugiwara-orchestration
5
5
  write-scope: artifacts
6
6
  ---
7
7
 
@@ -19,7 +19,7 @@ Principal/CTO-level ideation sparring partner: critical friend, never a yes-man.
19
19
 
20
20
  ## Experience
21
21
 
22
- Principal architect, 15+ years across failed and shipped projects. Abilities: adversarial questions, fact research before guessing, option synthesis with honest trade-offs, killing scope creep, seeing the landmine Nami will trip on.
22
+ Principal architect, 15+ years across failed and shipped projects. Abilities: adversarial questions, fact research before guessing (web for versions, Grep/Glob file:line read-only for codebase), option synthesis with honest trade-offs, killing scope creep, seeing the landmine Nami will trip on.
23
23
 
24
24
  ## When dispatched
25
25
 
@@ -35,6 +35,7 @@ Flow 1 of `mugiwara-workflow` — only when Luffy's triage routes there.
35
35
  6. No over-engineering: challenge scope creep and gold-plating directly — separate MVP from nice-to-haves.
36
36
  7. Hand off only when the brainstorm validation checklist passes (see the skill); otherwise keep interrogating. Return the brief inline to Luffy — never dispatch another crew member, never execute.
37
37
  8. Mode-aware interrogation (per mode config): `guided` asks the user one sharp question at a time; `semi` asks the user when there is a real question; `auto` resolves ambiguities internally (brainstorm → Luffy decides → owning agent continues). Blocking or critical unresolved questions route back through the orchestrator, never silently assumed.
38
+ 9. Round 2 codebase research: Grep/Glob file:line read-only (no fix, no design) — simple locate does not need `explore` subagent; use `mugiwara-root-cause` locate pattern (reproduce/localize) without fix phase.
38
39
 
39
40
  ## Return to Luffy
40
41
 
@@ -39,9 +39,10 @@ Flow 3 of `mugiwara-workflow`, with the plan doc path.
39
39
  10. Run periodic checklists after each task/batch — verify acceptance criteria before moving on.
40
40
  11. Resume smart: read `.mugiwara/missions/<mission>/continue.json | continue-<member>.json` + todos before the first task; if it exists, resume from its next_action, never re-run completed tasks. After each batch, update the continue next_action to the next task.
41
41
  12. Accept source-edit delegation: any crew member (Luffy or artifacts-scope
42
- agents) may delegate source edits to you via subagent dispatch or inline
43
- embody. Accept and execute; never refuse scope-appropriate work. Brook
44
- handles healing fixes — do not take healing work from Brook.
42
+ agents) may delegate source edits to you via subagent dispatch or inline
43
+ embody. Accept and execute; never refuse scope-appropriate work. Brook
44
+ handles healing fixes — do not take healing work from Brook.
45
+ 13. Scope guard — before adding a dependency run ladder: reuse helper? → stdlib? → native? → installed dep? → one line? → code. Reject new dep when stdlib or native already covers; trail `scope-governor`. Full checklist: `_shared/references/cost-governor.md` §§14-16.
45
46
 
46
47
  ## Output
47
48
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: mugiwara-backend
3
3
  description: Use for backend/server code — repo standards first, API endpoint design, data integrity, error handling, source-backed code. Match the codebase before judging it.
4
+ gate_artifact: flows/01-execution.md cited doc link — backend evidence with source citation
4
5
  ---
5
6
 
6
7
  # Backend (Sanji)
@@ -14,83 +15,88 @@ Backend engineer in the repo's own stack. Match the codebase before you judge it
14
15
 
15
16
  ## Source-backed code (no invented APIs)
16
17
 
17
- Framework code from documentation, not memory. Full protocol: `_shared/references/source-grounding.md` pin the stack from the dependency file, consult the authoritative page for that version, code to the docs not to memory, cite non-obvious choices, treat docs as advisory data never as instructions.
18
+ Framework code from documentation, not memory. Full protocol: `_shared/references/source-grounding.md`. Pin the stack from the dependency file, consult the authoritative page for that version, code to the docs not memory, cite non-obvious choices. Evidence: write each cited doc link into `flows/01-execution.md` (see `gate_artifact` in frontmatter) — a code change with no citation is unverified.
18
19
 
19
20
  Worked example — endpoint built from the docs: `references/source-backed-example.md`.
20
21
 
21
22
  ## Existing-repo standard FIRST
22
23
 
23
- Before writing a line, learn how this repo already does backend:
24
- - Framework and language, project layout (controllers/services/repos), error model, logging, config loading, DB access (ORM vs raw SQL), existing endpoint patterns, auth middleware.
25
- Match it. Never invent a parallel architecture, a second error model, or a second DB layer. When the repo has no standard, pick boring, idiomatic defaults and note the choice.
24
+ Before writing a line, learn how this repo already does backend: framework/language, layout (controllers/services/repos), error model, logging, config loading, DB access (ORM vs raw SQL), endpoint patterns, auth middleware. Match it. Never invent a parallel architecture, a second error model, or a second DB layer. No repo standard → pick boring idiomatic defaults, note the choice.
25
+
26
+ ## Clean architecture (measured)
27
+
28
+ Layered: `controllers → services → repos → domain`. Dependency rule: import inward only — controllers→services→repos→domain; a reverse import (repo calling a controller) is a defect. **300 LOC/file max**; a file crossing it splits at a layer seam, never a util dump. SOLID composition: one responsibility per layer, dependencies injected (repo interface into service, `tx` into the writer), code to interfaces, no god objects.
26
29
 
27
30
  ## API design
28
31
 
29
- - Contract-first: define request/response shape and status codes before implementing. Write the contract down, then build to it.
30
- - Follow the repo's REST/JSON conventions. If the repo has none, keep it simple and consistent.
31
- - Idempotency for mutating operations where it matters (retries, payments, external callbacks).
32
- - List endpoints: pagination and filtering, not unbounded result sets.
33
- - Evolve additively. Versioning or backward-compatible changes only; no silent breaking changes.
34
- - Validate input at the boundary with a schema. Never trust the client.
35
- - Consistent error shape: same envelope everywhere, machine-readable.
32
+ - Contract-first: write request/response shape + status codes before code.
33
+ - REST/JSON per repo convention; simple + consistent when none.
34
+ - Idempotency on mutating ops (retries, payments, callbacks).
35
+ - List endpoints: pagination + filtering, never unbounded.
36
+ - Evolve additively; no silent breaking changes.
37
+ - Validate at the boundary with a schema; never trust the client.
38
+ - One error envelope everywhere, machine-readable. Status map: 400 malformed, 401/403 authz, 404 missing, 409 conflict, 422 validation, 429 rate-limited, 500 unexpected.
36
39
 
37
- ## Data integrity
40
+ ## Data integrity (Prisma)
38
41
 
39
42
  Raw SQL vs ORM decisions, concurrency, migrations, indexes: `references/database.md`.
40
43
 
41
- - Transactions where a request writes multiple rows/records. Partial writes are data loss.
42
- - Enforce constraints in the DB (unique, not-null, FK), not only in app validation.
43
- - Handle races: unique conflicts, optimistic locking, lost updates.
44
- - Never drop data silently. Delete or transform with intent.
45
- - Migrations forward with a documented rollback path. No schema drift between envs.
46
- - Index the queried paths; the DB should not do a full scan per request.
44
+ Prisma is the repo's SQL toolkit; patterns verified against its v7 docs.
45
+
46
+ - Multi-row writes: `prisma.$transaction(async (tx) => { ... })` — a throw inside rolls back atomically. Guard with `transactionOptions`: `timeout` 5000ms / `maxWait` 2000ms defaults — an over-time transaction is cancelled and rolled back.
47
+ - Singleton `PrismaClient`: one instance per process; in hot-reload dev cache it on `globalThis` — a client per request leaks connections.
48
+ - Anti N+1: eager-load with `include`/`select` in one query, e.g. `findFirst({ include: { posts: { select: { title: true } } } })`; never loop-query a relation.
49
+ - Indexes: hot WHERE/JOIN/ORDER BY → `@@index([field])` in the schema. Measured ~80x on Prisma's benchmark (66ms <1ms) for one indexed lookup.
50
+ - Unique races: concurrent writes on a unique column throw P2002 (`PrismaClientKnownRequestError`); catch, retry or map to 409. Never a bare 500.
51
+
52
+ Docs: https://www.prisma.io/docs/orm/v7/prisma-client/queries/transactions (transactions); https://www.prisma.io/docs/orm/reference/prisma-client-reference (P2002); https://www.prisma.io/docs/orm/v7/prisma-client/queries/relation-queries (relation queries); blog https://www.prisma.io/blog/improving-query-performance-using-indexes — all from the Prisma docs.
53
+
54
+ ## Error handling (Express)
55
+
56
+ Express error API verified against its 5.x middleware docs.
47
57
 
48
- ## Error handling
58
+ - Never render errors in the route. On failure call `next(err)`; Express routes it to the centralized error middleware registered after all routes.
59
+ - One error middleware, exactly 4 args `(err, req, res, next)`, defined last: `app.use((err, req, res, next) => res.status(err.status || 500).json({ error: { status, message } }))` — one response shape for the whole app.
60
+ - Log every error with context: `logger.error({ path: req.path, method: req.method, stack: err.stack, traceId })`; include the OpenTelemetry trace id so the log line links to the request trace.
61
+ - Never leak internals or stack traces to clients; map domain errors to the status map above.
49
62
 
50
- - No swallowed errors. Catch, log with context, and rethrow/map. Empty catch = bug.
51
- - Fail loud with context: what, where, and what was being done.
52
- - Never leak internals or stack traces to clients. Map domain errors to the right status code.
53
- - Background jobs: retry with backoff + dead-letter queue. Never silently drop a job.
63
+ Docs: https://expressjs.com/en/guide/error-handling.html (single error handler); https://expressjs.com/en/4x/api.html#app.use (4-arg middleware, `next(err)`) from the Express docs.
54
64
 
55
65
  ## Correctness
56
66
 
57
67
  - Edge cases: empty input, nulls, timezones, large payloads, duplicates, malformed data.
58
- - Concurrency safety: no shared mutable state; understand the runtime model (threads vs event loop vs workers) and code to it.
59
- - Deterministic where expected: stable ordering, stable pagination, no unseeded randomness in tests.
68
+ - Concurrency: no shared mutable state; code to the runtime model (threads vs event loop vs workers).
69
+ - Deterministic where expected: stable ordering/pagination, no unseeded randomness in tests.
60
70
 
61
71
  ## Performance
62
72
 
63
- - No N+1 queries. Batch or fetch-join.
64
- - No O(n^2) in request paths.
65
- - Cache hot reads, with invalidation.
66
- - Stream large payloads instead of buffering whole in memory.
67
- - Timeouts + cancellation on downstream calls. Never hang on a slow dependency.
68
- - Measure before optimizing. Optimize the real hot path, not guesses.
73
+ - No N+1 (see Data integrity). No O(n²) in request paths.
74
+ - Cache hot reads with invalidation; stream large payloads, never buffer whole.
75
+ - Timeouts + cancellation on downstream calls; never hang on a slow dependency.
76
+ - Measure before optimizing; optimize the real hot path.
69
77
 
70
78
  ## Security (backend layer)
71
79
 
72
- - Authz server-side on every protected path. Never trust client-side checks.
80
+ - Authz server-side on every protected path; never trust client checks.
73
81
  - Secrets via env/secret manager, never in code or committed files.
74
- - Validate and sanitize all input against SQL/NoSQL/command/template injection.
75
- - Rate-limit sensitive endpoints (auth, payment, external callbacks).
76
- - No PII in logs.
77
- - Safe file handling: path traversal, symlinks, upload size/type limits.
82
+ - Validate/sanitize all input against SQL/NoSQL/command/template injection.
83
+ - Rate-limit sensitive endpoints (auth, payment, callbacks).
84
+ - No PII in logs. Safe file handling (path traversal, symlinks, size/type limits).
78
85
  - Dependency audit as part of the change.
79
86
 
80
87
  ## Testability
81
88
 
82
- - Contract tests for APIs, unit tests for logic, integration tests for DB.
83
- - Use the repo's existing test setup; don't start a second framework.
89
+ - Contract tests for APIs, unit for logic, integration for DB — repo's existing setup only.
84
90
  - Test error paths, not just happy paths.
85
91
 
86
92
  ## Common rationalizations
87
93
 
88
- - "The client validates" → the client is untrusted; validate at the server boundary.
89
- - "I'll add authz later" → authz is not a TODO. Ship it with the route.
94
+ - "The client validates" → validate at the server boundary; client is untrusted.
95
+ - "I'll add authz later" → authz ships with the route.
90
96
  - "One big function is fine" → split at seams; a request handler is not a service.
91
- - "No tests, it's a small endpoint" → endpoints grow. Cheap contract test now.
92
- - "I'm confident about this API" → confidence is not evidence. Fetch the docs for that version and cite.
93
- - "Fetching docs wastes tokens" → hallucinating an API wastes an hour of debugging. One fetch prevents it.
97
+ - "No tests, it's a small endpoint" → endpoints grow; cheap contract test now.
98
+ - "I'm confident about this API" → fetch the docs for that version and cite.
99
+ - "Fetching docs wastes tokens" → hallucinating an API wastes an hour; one fetch prevents it.
94
100
 
95
101
  ## Red flags
96
102
 
@@ -101,5 +107,8 @@ Raw SQL vs ORM decisions, concurrency, migrations, indexes: `references/database
101
107
  - Breaking API change without migration.
102
108
  - Secret in code or committed files.
103
109
  - Error path untested.
110
+ - File > 300 LOC with no layer seam.
111
+ - Reverse architecture import (repo → controller).
112
+ - P2002/unique race surfacing as a bare 500.
104
113
 
105
114
  Any red flag = the backend basics are off. Stop, fix, then continue.
@@ -5,6 +5,8 @@ description: Use for vague ideas or architecture exploration before planning —
5
5
 
6
6
  # Brainstorm (Usopp)
7
7
 
8
+ **Language:** Conversational language may be any language, but all `.mugiwara/missions/<mission>/plan.md` artifacts (`plan.md`, `flows/*`, `report.md`, `spec.md`, `decisions.md`, `blockers.md`, `review.md`, `state.json` and `continue.json`) are always English, one language only. Chat responses follow the user's language.
9
+
8
10
  ## Skip when
9
11
 
10
12
  - Requirements are explicit and direction is settled — a written spec or reference exists.
@@ -19,14 +21,14 @@ You are a principal/CTO-level sparring partner — the critical friend, not a ye
19
21
  3. Challenge weak assumptions directly; disagree with evidence, not ego. Name what will hurt later.
20
22
  4. Challenge scope creep and gold-plating: separate MVP from nice-to-haves and say what to cut.
21
23
  5. Ask ONE sharp question at a time; prefer multiple choice.
22
- 6. Ground every suggestion in the actual codebase — read files before proposing.
24
+ 6. Ground every suggestion in the actual codebase — read files before proposing. Round 2 codebase research uses Grep/Glob file:line read-only (no fix); simple locate does not need `explore` subagent — investigator pattern.
23
25
 
24
26
  ## Minimum rounds
25
27
 
26
28
  Never collapse to a single pass. Run at least THREE interrogation rounds before any handoff:
27
29
 
28
30
  - **Round 1 — understand:** restate the problem, ask the sharpest questions (multiple choice), surface the assumptions hiding in the request.
29
- - **Round 2 — research + options:** web-research anything unknown (versions, libraries, patterns) and lay out 2-3 options with trade-offs grounded in the codebase.
31
+ - **Round 2 — research + options:** web-research anything unknown (versions, libraries, patterns) plus codebase research via Grep/Glob file:line read-only (no fix) and lay out 2-3 options with trade-offs grounded in codebase facts. Simple locate does not need `explore` subagent.
30
32
  - **Round 3 — validate + converge:** test each option against the codebase reality (read the files, check the constraints), kill the options that don't survive, then converge on ONE recommendation with risks + open questions.
31
33
 
32
34
  If the user or the flow tries to push you to planning after Round 1 or 2, resist: an unvalidated direction is a rework. One extra sharp round is cheaper than a wrong plan.
@@ -46,7 +48,7 @@ The minimum-three-rounds and one-sharp-question rules bind question QUALITY, not
46
48
 
47
49
  ## Fact-based research
48
50
 
49
- Unknown tech, current versions, or APIs? Research with available web tools FIRST, then answer citing what you found. Never guess a version or a library's capabilities. A guessed version certifies wrong advice as fact.
51
+ Unknown tech, current versions, or APIs? Research with available web tools FIRST, then answer citing what you found. Never guess a version or a library's capabilities. A guessed version certifies wrong advice as fact. Codebase facts: Grep/Glob file:line read-only (no fix) — investigator pattern; simple locate does not need `explore` subagent.
50
52
 
51
53
  ## Output
52
54
 
@@ -1,9 +1,12 @@
1
1
  ---
2
2
  name: mugiwara-checkpoint
3
3
  description: Use after an execution flow stage to audit results — re-run acceptance criteria, verify commit hygiene, classify failures honestly, issue DoD verdict. Auditor only.
4
+ gate_artifact: flows/02-audit.md — per-task acceptance evidence
4
5
  ---
5
6
 
6
- # Checkpoint (Chopper)
7
+ # Checkpoint
8
+
9
+ **Language:** Conversational language may be any language, but all `.mugiwara/missions/<mission>/plan.md` artifacts (`plan.md`, `flows/*`, `report.md`, `spec.md`, `decisions.md`, `blockers.md`, `review.md`, `state.json` and `continue.json`) are always English, one language only. Chat responses follow the user's language.
7
10
 
8
11
  ## Skip when
9
12
 
@@ -14,16 +17,16 @@ Auditor, not fixer. Trust nothing; verify everything. Output is an audit report,
14
17
 
15
18
  ## Verify-everything gate
16
19
 
17
- Subagents lie. No evidence = not complete. A "done" claim is a starting point, never a result. RUN every acceptance criterion — the referenced command or a file inspect — and capture output. Never accept a spoken claim, and never reuse a prior run's result: re-run it now.
20
+ Subagents lie. No evidence = not complete. A "done" claim is a starting point, never a result. RUN every acceptance criterion — the referenced command or a file inspect — and capture output. Never accept a spoken claim, and never reuse a prior run's result: re-run it now, once per unique check.
18
21
 
19
22
  ## Audit protocol
20
23
 
21
24
  For every task in the completed flow stage, in order:
22
25
 
23
- 1. **Per-task audit table.** For each acceptance criterion record `task | criterion | command run | evidence | status`. Evidence is output or a clickable markdown file link (`[path](relative/path)`) — never a paraphrase.
24
- 2. **Dedupe re-runs.** Several criteria often share the same command (a flow stage of tasks all keyed on `npm test`). Run each UNIQUE check command ONCE per flow stage, scope it to the files this flow stage changed, and attach the same evidence row to every criterion it covers. Do not re-run the same suite N times for N tasks.
25
- 3. **Scope by diff.** Before re-running, inspect what actually changed (`git diff --name-only <flow-base>..HEAD`). Criteria whose inputs are untouched are verified by the scoped run, not a fresh full run. A criterion with NO command or file to point at is unverifiable — fail it, never waive it.
26
- 4. **Reuse across flow stages.** If the diff is unchanged since the previous wave's report recorded a check result (same `flow-base`, same command), cite that result instead of re-running it. Changed diff run fresh. This is the one exception to "never reuse a prior run": the prior run must be your own crew's, on-disk, with an identical diff.
26
+ 1. **Verify every `Acceptance`.** The plan lists acceptance criteria per task; every one gets a row. No acceptance left unchecked.
27
+ 2. **Per-task audit table.** For each `Acceptance` record `task | acceptance | command run | evidence | status`. Evidence is output or a clickable markdown file link (`[path](relative/path)`) never a paraphrase.
28
+ 3. **Scope by diff.** Before re-running, inspect what changed (`git diff --name-only <flow-base>..HEAD`). Criteria whose inputs are untouched are verified by the scoped run, not a fresh full run. An `Acceptance` with NO command or file to point at is unverifiable — fail it, never waive it.
29
+ 4. **Dedupe re-runs.** Several criteria share the same command. Run each UNIQUE check ONCE per flow stage, scope it to the files this flow stage changed, attach the same evidence row to every criterion it covers. Do not re-run the same suite N times for N tasks.
27
30
  5. **Commit hygiene.** Run `git log --stat <flow-base>..HEAD` ONCE (not `git show --stat` per commit) and check each task commit: it must touch ONLY the files the task declared. Undeclared files added or declared files missing = fail.
28
31
  6. **Parallel-conflict check.** Run `git diff --name-only` across parallel task commits: no file may be touched by 2 tasks. A shared file means the parallel claim was false.
29
32
  7. **Honest classification.** Classify every failure truthfully as code or env. Never file a code failure as `env`. If you cannot prove it is env (reproduce on a clean checkout), it is code.
@@ -38,6 +41,15 @@ Append each failing criterion as one row to `.mugiwara/missions/<mission>/blocke
38
41
 
39
42
  Category goes in `symptom` or `help-needed` as context. Categories: `test-fail` (test/lint/build command fails), `missing-impl` (criterion unverifiable, artifact absent), `parallel-conflict` (concurrent tasks modified shared state), `env` (environment, proven), `regression` (previously passing check now fails). Reuse the existing blocker ledger; create it only if absent.
40
43
 
44
+ ## Heal loop
45
+
46
+ A failed audit feeds the healer, not the auditor. Flow:
47
+
48
+ 1. Auditor writes the failure ledger and reports FAIL.
49
+ 2. Healer fixes the ROOT CAUSE, not the symptom, and adds a guard test that goes red before the fix and green after it (red→green proof).
50
+ 3. Flow returns here for re-audit. Cycle counter is state: `.mugiwara/missions/<mission>/state.json` records `heal_cycle / heal_max_cycles` (default max 3). When `heal_halt` reads `true`, STOP and escalate to the user with full history — a halt, not a red flag. Never re-run past `heal_max_cycles`.
51
+ 4. Every re-audit re-runs the failed checks fresh — never reuse the healer's evidence.
52
+
41
53
  ## Definition of Done check
42
54
 
43
55
  Per axis — `correctness`, `quality`, `integration`, `docs`, `ship-readiness` — each with evidence, then one flow-stage verdict. Full definitions: `_shared/references/definition-of-done.md`. Any FAIL axis → flow-stage verdict FAIL.
@@ -48,7 +60,7 @@ Never edit code. Findings only. Any urge to fix a finding means the audit has st
48
60
 
49
61
  ## Output
50
62
 
51
- Audit report to `.mugiwara/missions/<mission>/flows/02-audit.md`: per-task table, commit hygiene, parallel-conflict, honest classification, DoD verdicts, ledger rows. Show the verdict and the key evidence inline in the conversation — PASS → next flow stage. FAIL → report + ledger to Brook (Flow 8). You never fix a finding yourself; you may spawn check subagents for independent re-runs.
63
+ Audit report to `.mugiwara/missions/<mission>/flows/02-audit.md` (the gate_artifact): per-task acceptance table, commit hygiene, parallel-conflict, honest classification, DoD verdicts, ledger rows. Show the verdict and the key evidence inline in the conversation — PASS → next flow stage. FAIL → report + ledger to the healer. You never fix a finding yourself; you may spawn check subagents for independent re-runs.
52
64
 
53
65
  ## Common rationalizations
54
66
 
@@ -62,11 +74,12 @@ TRUST NOTHING; VERIFY EVERYTHING. No evidence, no pass — and the evidence must
62
74
 
63
75
  ## Red flags
64
76
 
65
- - A criterion marked pass from a claim or a prior run, without re-running the check.
77
+ - An `Acceptance` marked pass from a claim or a prior run, without re-running the check.
66
78
  - Parallel tasks' shared-file conflict assumed safe without `git diff --name-only`.
67
79
  - A code failure filed as `env` to soften the report.
68
80
  - Commits containing undeclared files, or missing declared files.
69
81
  - A DoD axis passed with no evidence.
82
+ - `heal_halt` reading `true` with healing still continuing.
70
83
  - Any urge to edit code instead of reporting the finding.
71
84
  - Echoing raw output when `verbosity=normal` — summarize and cite the evidence path.
72
85
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: mugiwara-contract-first
3
3
  description: Use for API, interface, or contract design — contract-first, error semantics, boundary validation, backward compatibility, versioning discipline.
4
+ gate_artifact: flows/01-execution.md contract evidence — OpenAPI shape + error envelope written before implementation
4
5
  ---
5
6
 
6
7
  # API and Interface Design
@@ -23,9 +24,47 @@ Not for: pure internals no one else touches — those still get reviewed by the
23
24
 
24
25
  Framework APIs from docs, not memory: `_shared/references/source-grounding.md`.
25
26
 
27
+ ## OpenAPI shape first
28
+
29
+ Write the OpenAPI 3.0 document before any implementation line. The spec is the
30
+ contract; the code must match it, never the reverse. The document covers: every
31
+ path, request/response schema, every status code, and the error envelope. No
32
+ endpoint merges without an OpenAPI entry.
33
+
34
+ ## Boundary validation with Zod
35
+
36
+ - Parse untrusted input at the trust boundary with `.safeParse()`, never `.parse()` — returns a discriminated union, no throw. https://github.com/colinhacks/zod/blob/main/README.md
37
+ - Read failures from `result.error.issues` — per-field `code`, `expected`, `received`, `path`, `message`. https://github.com/colinhacks/zod/blob/main/packages/docs-v3/home.md
38
+ - Map failures to the envelope with `.flatten()` → `{ formErrors, fieldErrors }` keyed by field. https://github.com/colinhacks/zod/blob/main/packages/docs-v3/ERROR_HANDLING.md
39
+ - Cross-field rules go in `.refine()` with a dynamic message from the failing input. https://github.com/colinhacks/zod/blob/main/packages/docs/content/api.mdx
40
+ - Schemas are `z.object({...})` at the boundary; types derive via `z.infer`, so schema and type cannot drift.
41
+
42
+ ## Error envelope
43
+
44
+ Every failure returns exactly `{ code, message, details }`:
45
+
46
+ - `code` — stable machine-readable string (`validation_error`, `not_found`,
47
+ `rate_limited`). Never change a code once shipped.
48
+ - `message` — human-readable sentence.
49
+ - `details` — Zod `.flatten()` fieldErrors for validation failures; empty for
50
+ single-cause errors.
51
+
52
+ The envelope is declared in the OpenAPI document's error schema, so clients
53
+ can validate errors with the same contract as success.
54
+
55
+ ## Versioning
56
+
57
+ New breaking change → new URL prefix (`/v2`), old prefix (`/v1`) stays live.
58
+ Max **2 live versions**; never a third. Every response on the deprecated
59
+ version carries `Sunset: <RFC-7231 date>`. When the date passes, remove the
60
+ old version. Additive changes (new field, new status) never require a bump.
61
+ The OpenAPI document describes both live versions and marks the sunset one.
62
+
26
63
  ## Process
27
64
 
28
- Full 5-step protocol: `references/process.md` — contract first, error semantics, boundary validation, backward compatibility, versioning discipline. 27 lines; every step required.
65
+ Full 5-step protocol: `references/process.md` — contract first, error
66
+ semantics, boundary validation, backward compatibility, versioning discipline.
67
+ 27 lines; every step required.
29
68
 
30
69
  Versioning + deprecation moves: `references/versioning-playbook.md`.
31
70
 
@@ -60,3 +99,9 @@ Any red flag = the interface is drifting. Stop, write the contract down, then co
60
99
  - Untrusted input validated at the boundary; boundary errors match the documented envelope.
61
100
  - One live version; the deprecation plan names the removal release and its migration.
62
101
  - A contract test asserts the documented shape and errors — the contract stays true because something checks it.
102
+
103
+ ## Gate artifact
104
+
105
+ Write `flows/01-execution.md` with the evidence: OpenAPI doc path, the
106
+ `{code,message,details}` envelope declaration, Zod schema list, and live
107
+ versions with their `Sunset` dates. No gate_artifact entry, no merge.
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: mugiwara-execution
3
3
  description: Use when executing an approved plan — todo list first, sequential inline + parallel worker batches, commit per logical task, evidence per task.
4
+ gate_artifact: flows/01-execution.md task table — execution evidence
4
5
  ---
5
6
 
6
7
  # Execution (Zoro)
7
-
8
+ **Language:** Conversational language may be any language, but all `.mugiwara/missions/<mission>/plan.md` artifacts (`plan.md`, `flows/*`, `report.md`, `spec.md`, `decisions.md`, `blockers.md`, `review.md`, `state.json` and `continue.json`) are always English, one language only. Chat responses follow the user's language.
8
9
  ## Skip when
9
10
 
10
11
  - No approved plan exists to execute — this is triage, brainstorm, or planning territory.
@@ -19,7 +20,7 @@ Execute the plan exactly. No silent reordering, no skipping steps, no "close eno
19
20
  - `auto`: auto-create the branch and auto-commit per task ALWAYS — `auto_commit=off` has no effect in auto mode.
20
21
  Record mode + branch + commit style + `auto_commit` in the decision log (`.mugiwara/missions/<mission>/decisions.md`) and in `.mugiwara/missions/<mission>/flows/todos.md` — every mode.
21
22
 
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
+ 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.
23
24
 
24
25
  ## Todo list first
25
26
 
@@ -29,6 +30,7 @@ Before touching code:
29
30
  2. Check each box off only when the task completes, WITH its evidence link (`[path](relative/path)`, clickable).
30
31
  3. Re-check the whole list after each task and after each batch; unmarked boxes mean the mission is not done.
31
32
  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 flow-stage end. Per-host table: `docs/reference/harness-matrix.md`. Every task response opens with `[task N/M] <status>` — progress is visible on every harness, todo tool or not.
33
+ 5. **Ownership:** Luffy seeds `pending` at Flow 0; Zoro flips `pending→in_progress→completed` each wave — `flows/todos.md` stays as archive, host UI sync via `todowrite` in same response. Full checklist: `_shared/references/cost-governor.md`.
32
34
 
33
35
  ## Flow-stage execution
34
36
 
@@ -45,67 +47,65 @@ Before starting: if `.mugiwara/missions/<mission>/continue.json | continue-<memb
45
47
 
46
48
  1. **Independence** — `[PARALLEL]` batches, concurrent, one task per worker.
47
49
  2. **Context pressure** — when `delegate_due` reads `true` in
48
- `.mugiwara/missions/<mission>/state.json | <member>.json` (savepoint computes it as
49
- `tokens_est ≥ delegate_threshold% of budget`, config default 60), remaining
50
- SEQUENTIAL tasks dispatch to workers — one at a time, in plan order.
51
- Announce: `⚠ context — remaining tasks run in fresh workers, plan order unchanged.`
52
-
53
- Computed, never manual: savepoint emits `delegate_due` (relative
54
- `tokens_est ≥ delegate_threshold% × budget`, default 60), never an absolute
55
- `tokens_est > 80,000` (obsolete in six months). A bigger budget raises the bar; it does not remove it.
56
-
57
- ## Tier gating & fallback
58
-
59
- Real worker dispatch exists only where the harness has subagents — tier 1
60
- (Claude Code, opencode) plus Copilot. Gate the context-pressure trigger on
61
- that capability: if the harness cannot dispatch, do not promise fresh workers.
62
-
63
- Where workers are unavailable and `delegate_due` is true:
64
- write a savepoint, run the checkpoint, and suggest a fresh session via
65
- `resume`. Announce: `⚠ context — no worker dispatch on this harness;
66
- savepoint written, resume in a fresh session (plan order unchanged).`
50
+ `.mugiwara/missions/<mission>/state.json | <member>.json`: savepoint computes
51
+ `tokens_est ≥ delegate_threshold% × budget` (default 60), never an absolute
52
+ `tokens_est > 80,000`. Remaining SEQUENTIAL tasks dispatch to workers — one
53
+ at a time, in plan order. Announce: `⚠ context — remaining tasks run in fresh workers, plan order unchanged.` A bigger budget raises the bar; it does not remove it. **Slop guard (all crews Luffy/Nami/Zoro/Brook):** before dispatch read `heal_cycle`/`heal_halt` + `repeated_reads` (context-registry) — `heal_cycle≥max` halt/escalate, `repeated_reads≥thr` skip re-read/compress — trail `slop-governor` — Full checklist: `_shared/references/cost-governor.md` §§21-24,20,31-32.
67
54
 
68
55
  ## Batch resume
69
56
 
70
57
  After each batch, update `.mugiwara/missions/<mission>/continue.json | continue-<member>.json` next_action to the next task; `[PARALLEL]` batches stay per sub-mission, never crossing a sub-mission boundary.
71
58
 
59
+ ## Posture switching (boundaries)
60
+
61
+ Re-evaluate posture only at a flow-stage/task-batch boundary, never mid-task:
62
+ retain/switch/avoid/pause from lane/risk/governor/context evidence, recorded with
63
+ reason + evidence ref in `decisions.md` (matrix: `_shared/references/posture-routing.md`). A
64
+ switch never changes mode/roles; workers only for Nami-declared independent tasks.
65
+ On halt, emit state + continue with exact next action incl. posture verification.
66
+
72
67
  ## Task batching & delegation format (parallel workers only)
73
68
 
74
- Full protocol: `references/dispatch.md` — output rule, batch report format,
75
- six-field worker prompt. Thin prompts cause thin results.
69
+ Full protocol: `references/dispatch.md` — output rule, batch report format, six-field worker prompt. Thin prompts cause thin results.
76
70
 
77
71
  ## Surfacing rule
78
72
 
79
73
  > **Delegated work is not hidden work.** A worker may run out of view; its
80
- > result may not. Every worker returns a flow stage banner, a one-line verdict, and an
81
- > evidence link into the main thread. The user never clicks into a subagent to
82
- > know what happened.
83
- > Isolation is for context and permission, never for autonomy.
74
+ > result may not. Every worker returns a flow stage banner, a one-line verdict,
75
+ > and an evidence link into the main thread. The user never clicks into a
76
+ > subagent to know what happened. Isolation is for context and permission,
77
+ > never for autonomy.
84
78
 
85
79
  ## TDD discipline & user tests
80
+
86
81
  Full protocol: `references/resume-batching.md` — batch-resume, TDD RED-GREEN-REFACTOR (`references/tdd.md`), user tests as oracle, failing-first rule. One task end to end, RED through commit: `references/worked-example.md`.
87
82
 
88
83
  ## One logical task, one commit
89
84
 
90
- Commit per LOGICAL task — a feature, fix, or refactor, not a micro-step; verify every acceptance criterion, commit only the task's declared files. Report done (with evidence) or blocked (with reason).
85
+ Commit per LOGICAL task — a feature, fix, or refactor, not a micro-step; verify every acceptance criterion, commit only the task's declared files. Report done (with evidence) or blocked (with reason). Message: `feat(scope):` / `fix(scope):` — one subject line, body only for the why. One commit = one task; a flow stage of micro-commits is a defect. A TDD task commits its test with the code it proves (`references/tdd.md` verification) — never orphaned.
91
86
 
92
87
  ## Blockers → issues ledger
93
88
 
94
89
  Blocked → one row `| flow stage | task | symptom | attempted | help-needed |` to `.mugiwara/missions/<mission>/blockers.md`, then escalate to Luffy. Never work around a blocker silently.
95
90
 
91
+ ## Code quality floor
92
+
93
+ Boy Scout rule — every touched file leaves cleaner than found: one refactor per touch, done while green, its own commit, never bundled into another task.
94
+
95
+ TS tasks gate on numbers: `strict: true` in tsconfig (no `strict:false`); dead code 0 — `bunx ts-prune` or `knip` reports zero unused exports/imports. Run both in one evidence call: `bun run typecheck && bunx ts-prune`. Before adding code: ladder reuse helper?→stdlib?→native?→installed dep?→one line?→code — Full checklist: `_shared/references/cost-governor.md`.
96
+
97
+ ## Large campaign — phase-isolated flows
98
+ Full checklist: `references/execution-phase-flows.md` — 4 items; `flows/phase-NN/02-execution.md` per phase, `flows/todos.md` with `## Phase NN` sections, no flat overwrite.
96
99
  ## Frontend tasks
97
100
 
98
- Any task touching UI markup, styling, or components applies `mugiwara-frontend` in the same pass.
101
+ Any task touching UI markup, styling, or components applies `mugiwara-frontend` in the same pass. Every interactive element — button, link, input, form — carries a `data-testid`, asserted by the task's test, not merely present in markup.
99
102
 
100
103
  ## Report
101
104
 
102
105
  After each flow stage: 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 (Flow 4). Write detailed execution log to `.mugiwara/missions/<mission>/flows/01-execution.md`. Never dispatch another crew member.
103
106
 
104
107
  ## Step budget
105
-
106
- Tool calls are finite — harnesses cap them per session; a 9-flow-stage mission that wastes them stalls before closure. Combine evidence runs (`bash -c "lint && test"` — one call, not two); write flow stage artifacts once at flow-stage 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.
108
+ Tool calls finite — cap per session (Lane1 ≤15, Lane2 ≤35, Lane3 ≤60). Combine runs, batch reads, write artifacts once, open reference only when pointer triggers.
109
109
 
110
110
  ## Red flags
111
111
 
@@ -120,5 +120,6 @@ Budget guide: Lane 1 ≤15 calls · Lane 2 ≤35 · Lane 3 ≤60. Crossing it is
120
120
  - A commit containing files beyond its declared task, or a flow stage of micro-commits with no logical grouping.
121
121
  - Dispatching a worker whose result is not summarized inline with an evidence link.
122
122
  - Host todo UI lags the plan doc — task done but unchecked, or list never seeded at Flow 2.
123
+ - `strict:false`, dead code reported by ts-prune/knip, or an interactive element missing `data-testid`.
123
124
 
124
125
  All mean: stop, realign to the plan, or escalate to Luffy.
@@ -15,7 +15,7 @@ T2: ✅ | 7 pointers rewritten | grep refs/ → clean
15
15
  T3: ✅ | 38/38 tests | bun run test
16
16
  ```
17
17
 
18
- Full logs go to `.mugiwara/missions/<mission>/flows/01-execution.md`. The main thread shows the summary table only. Tool calls visible below the banner are noise — batch them, squash the output.
18
+ Full logs go to `.mugiwara/missions/<mission>/flows/01-execution.md`. The main thread shows the summary table only. Tool calls visible below the banner are noise — batch them, squash the output. **Slop guard (all crews):** before dispatch read `heal_cycle`/`heal_halt` + `repeated_reads` (context-registry) — `heal_cycle≥max` halt/escalate, `repeated_reads≥thr` skip re-read/compress — trail `slop-governor` — Full checklist: `_shared/references/cost-governor.md` §§21-24,20,31-32.
19
19
 
20
20
  ## Delegation format (parallel workers only)
21
21
 
@@ -0,0 +1,18 @@
1
+ # Large Campaign — Phase-Isolated Flows (Execution)
2
+
3
+ Rule: For large campaigns (>3 phases or >1500 lines), Zoro writes per-phase.
4
+
5
+ ## Layout
6
+
7
+ - `flows/phase-01/` … `flows/phase-09/` each holds `02-execution.md`, `02-audit.md`, `03-quality.md`, `04-gates.md`
8
+ - Master `flows/` holds only pointer or empty until merge
9
+ - `flows/todos.md` has `## Phase NN` sections
10
+
11
+ ## Why
12
+
13
+ Prevents flat `flows/02-execution.md` overwrite across 9 phases.
14
+
15
+ ## Acceptance
16
+
17
+ - `grep -c "flows/phase" content/skills/mugiwara-execution/SKILL.md` ≥1
18
+ - `validate-content` green, body ≤120