@mutmutco/codex-plugin 4.5.204 → 4.5.206

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.5.204",
3
+ "version": "4.5.206",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -1603,7 +1603,8 @@ __export(index_exports, {
1603
1603
  registryClientDeps: () => registryClientDeps,
1604
1604
  repoSlug: () => repoSlug,
1605
1605
  suggestCommandPath: () => suggestCommandPath,
1606
- unknownCommandCandidates: () => unknownCommandCandidates
1606
+ unknownCommandCandidates: () => unknownCommandCandidates,
1607
+ unknownCommandTail: () => unknownCommandTail
1607
1608
  });
1608
1609
  module.exports = __toCommonJS(index_exports);
1609
1610
 
@@ -6238,6 +6239,39 @@ function localTrainSyncBannerLine(result) {
6238
6239
  }
6239
6240
 
6240
6241
  // src/parse-error-hints.ts
6242
+ init_error_codes();
6243
+ function unknownCommandTail(argv, unknownToken) {
6244
+ if (unknownToken === void 0) return [];
6245
+ const firstFlag = argv.findIndex((t) => t.startsWith("-"));
6246
+ const leading = argv.slice(0, firstFlag < 0 ? argv.length : firstFlag);
6247
+ const idx = leading.indexOf(unknownToken);
6248
+ return idx < 0 ? [] : leading.slice(idx + 1);
6249
+ }
6250
+ function suggestCommandPath(token, paths, tail = []) {
6251
+ const all = [...paths];
6252
+ const leafOf = (p) => p.slice(p.lastIndexOf(" ") + 1);
6253
+ const exact = all.filter((p) => leafOf(p) === token);
6254
+ if (exact.length === 1) return exact[0];
6255
+ if (exact.length > 1) return void 0;
6256
+ const leaves = /* @__PURE__ */ new Map();
6257
+ for (const p of all) {
6258
+ const leaf = leafOf(p);
6259
+ leaves.set(leaf, [...leaves.get(leaf) ?? [], p]);
6260
+ }
6261
+ const near = didYouMean(token, leaves.keys());
6262
+ const hits = near ? leaves.get(near) ?? [] : [];
6263
+ if (hits.length !== 1) return void 0;
6264
+ const candidate = hits[0];
6265
+ const subcommandTail = tail.filter((t) => !/^\d+$/.test(t));
6266
+ if (subcommandTail.length > 0) {
6267
+ const continued = `${candidate} ${subcommandTail.join(" ")}`;
6268
+ const resolves = all.some(
6269
+ (p) => p === continued || p.startsWith(`${continued} `) || !candidate.includes(" ") && (p.endsWith(` ${continued}`) || p.includes(` ${continued} `))
6270
+ );
6271
+ if (!resolves) return void 0;
6272
+ }
6273
+ return candidate;
6274
+ }
6241
6275
  var TARGET_SELECTOR_FLAGS = /* @__PURE__ */ new Set(["--repo", "--ref", "--target", "--project", "--issue", "--number"]);
6242
6276
  function targetFlagValueFromArgv(flag, argv) {
6243
6277
  const i = argv.indexOf(flag);
@@ -19309,10 +19343,10 @@ var rollout_plan_default = {
19309
19343
  note: "The v4.0.0 stamp happens at cut time (D6e #4463); until then the candidate is the origin/development head artifacts (built cli/dist + npm pack), identity proven by dist content hash (D6a)."
19310
19344
  },
19311
19345
  baseline: {
19312
- version: "4.5.204",
19313
- tag: "v4.5.204",
19314
- commit: "571bd6b94824",
19315
- npm: "@mutmutco/cli@4.5.204"
19346
+ version: "4.5.206",
19347
+ tag: "v4.5.206",
19348
+ commit: "8031f7a9a4a8",
19349
+ npm: "@mutmutco/cli@4.5.206"
19316
19350
  },
19317
19351
  exitCriterion: "fleet-n-of-n",
19318
19352
  hubOnlyShortcut: "forbidden",
@@ -19329,14 +19363,14 @@ var rollout_plan_default = {
19329
19363
  repo: "mutmutco/mmi-hub",
19330
19364
  role: "canary",
19331
19365
  schedule: "train",
19332
- v3Target: "v4.5.204"
19366
+ v3Target: "v4.5.206"
19333
19367
  }
19334
19368
  ],
19335
19369
  rollbackTrigger: "Any red inside the post-contract soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a pre-v4 client admitted instead of receiving actionable HTTP 426, or npm consumer install/doctor failure on the v4-only dist.",
19336
19370
  rollback: {
19337
19371
  independent: true,
19338
- mechanism: "npm dist-tag latest -> 4.5.204 and redeploy the Hub Lambda from tag v4.5.204 (571bd6b94824); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19339
- v3Target: "v4.5.204 (@mutmutco/cli@4.5.204, tag commit 571bd6b94824 \u2014 last known-good release carrying the repo-index v4-only contract)"
19372
+ mechanism: "npm dist-tag latest -> 4.5.206 and redeploy the Hub Lambda from tag v4.5.206 (8031f7a9a4a8); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19373
+ v3Target: "v4.5.206 (@mutmutco/cli@4.5.206, tag commit 8031f7a9a4a8 \u2014 last known-good release carrying the repo-index v4-only contract)"
19340
19374
  }
19341
19375
  },
19342
19376
  {
@@ -57964,21 +57998,6 @@ function allCommandPaths() {
57964
57998
  cachedCommandPaths = acc;
57965
57999
  return cachedCommandPaths;
57966
58000
  }
57967
- function suggestCommandPath(token, paths) {
57968
- const all = [...paths];
57969
- const leafOf = (p) => p.slice(p.lastIndexOf(" ") + 1);
57970
- const exact = all.filter((p) => leafOf(p) === token);
57971
- if (exact.length === 1) return exact[0];
57972
- if (exact.length > 1) return void 0;
57973
- const leaves = /* @__PURE__ */ new Map();
57974
- for (const p of all) {
57975
- const leaf = leafOf(p);
57976
- leaves.set(leaf, [...leaves.get(leaf) ?? [], p]);
57977
- }
57978
- const near = didYouMean(token, leaves.keys());
57979
- const hits = near ? leaves.get(near) ?? [] : [];
57980
- return hits.length === 1 ? hits[0] : void 0;
57981
- }
57982
58001
  function argvWantsJson3() {
57983
58002
  return process.argv.some((a) => a === "--json" || a.startsWith("--json="));
57984
58003
  }
@@ -58058,7 +58077,8 @@ function resolveParseHint() {
58058
58077
  const guide = unknownCommandDomainGuide(parentPath, lastUnknownCommand);
58059
58078
  if (guide) return `(${guide.hint}. ${DISCOVERY_HINT})`;
58060
58079
  const candidates = unknownCommandCandidates(parent, allCommandPaths());
58061
- const path3 = lastUnknownCommand ? suggestCommandPath(lastUnknownCommand, candidates) : void 0;
58080
+ const tail = unknownCommandTail(process.argv.slice(2), lastUnknownCommand);
58081
+ const path3 = lastUnknownCommand ? suggestCommandPath(lastUnknownCommand, candidates, tail) : void 0;
58062
58082
  const canonical = path3 ? canonicalPathFor(path3) ?? path3 : void 0;
58063
58083
  if (canonical) return `(did you mean \`mmi-cli ${canonical}\`? ${DISCOVERY_HINT})`;
58064
58084
  return parent ? `(${DISCOVERY_HINT})` : STALE_HINT;
@@ -58113,7 +58133,11 @@ function envelopeAwareWriteErr(str2) {
58113
58133
  pendingHumanParseError = void 0;
58114
58134
  return;
58115
58135
  }
58116
- const hint = str2.replace(PARSE_HINT_SENTINEL, resolveParseHint());
58136
+ const resolvedHint = resolveParseHint();
58137
+ if (lastParseErrorKind === "unknown-command" && (resolvedHint === STALE_HINT || resolvedHint === `(${DISCOVERY_HINT})`)) {
58138
+ pendingHumanParseError = pendingHumanParseError?.replace(/\n\(Did you mean [^)]+\?\)/g, "");
58139
+ }
58140
+ const hint = str2.replace(PARSE_HINT_SENTINEL, resolvedHint);
58117
58141
  if (lastParseErrorKind === "bad-arguments") {
58118
58142
  process.stderr.write(hint);
58119
58143
  if (pendingHumanParseError) process.stderr.write(pendingHumanParseError);
@@ -59418,5 +59442,6 @@ program2.parseAsync(process.argv).then(() => finishCliRun()).catch((e) => failGr
59418
59442
  registryClientDeps,
59419
59443
  repoSlug,
59420
59444
  suggestCommandPath,
59421
- unknownCommandCandidates
59445
+ unknownCommandCandidates,
59446
+ unknownCommandTail
59422
59447
  });
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.204",
3
+ "version": "4.5.206",
4
4
  "description": "MMI Future CLI — the org dev toolbox and shared cross-IDE engine for every registry-declared MMI coding surface.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.5.204",
3
+ "version": "4.5.206",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -21,7 +21,7 @@ The server exposes `/health` and `/module.js`. Register the module's bundle URL,
21
21
 
22
22
  ## The MM Open Design System Bible (owner, 2026-10-25; Hub#8837 / Hub#8839)
23
23
 
24
- The bible for the MM open design system; every agent doing UI, design or MM Artifact work in this module treats it as second nature. Part 1 is how the system is built and used; Part 2 is how agents improve it when it fails them; Part 3 governs A/B choosing architecture and viewer behavior.
24
+ The bible for the MM open design system; every agent doing UI, design or MM Artifact work in this module treats it as second nature. Part 1 is how the system is built and used; Part 2 is how agents improve it when it fails them; Part 3 governs A/B choosing architecture and viewer behavior; Part 4 makes design-spec requests a visual A/B choice before any kit change.
25
25
 
26
26
  ### Part 1 — The five pillars (owner, 2026-10-25; Hub#8837)
27
27
 
@@ -42,7 +42,7 @@ Four owner decisions (2026-10-25T15:35:52Z):
42
42
 
43
43
  Craft essentials (owner, 2026-10-25; Hub#8839):
44
44
 
45
- - **Rich module colour and frosted glass — never graywashed.** Use purposeful module tones (`blue`, `coral`, `teal`, `purple`, `terracotta`, `green`, `pink`, `lime`, `cyan`, `magenta`, `fuchsia`) through kit props on `Card` (`tone`, `icon`/`mark`, `edge="bite"`), `Badge`, `Mark` and `Checkbox` (`lead`), backed by the kit's `--card-tint-dark: 34%`, `--card-tint-light: 22%` and `--card-blur`. Never override these tokens locally.
45
+ - **Sleek translucent glass cards and zero GPU usage — never color-washed (`2026-10-25T16:21:19.344Z`).** Cards use sleek, modern translucent glass material (neutral translucent surface with a crisp glass rim, `--card-tint-dark: 0%`, `--card-tint-light: 0%`) rather than color-washed card fills in any theme, and zero GPU-compositing blur or shadow (`--card-blur: none`, `--card-blur-frost: none`, `--frost-see-blur: 0px`, `--glass-blur: none`, `--card-shadow-dark: none`; never `backdrop-filter: blur(...)`). Module tones (`blue`, `coral`, `teal`, `purple`, `terracotta`, `green`, `pink`, `lime`, `cyan`, `magenta`, `fuchsia`) belong on `Badge`, `Mark`, `Checkbox` (`lead`), and card `icon`/`mark` accents (`edge="bite"`).
46
46
  - **Surface modes.** After `impeccable context --target <path>`, `DESIGN.md` and `reference/craft-floor.md`, choose the surface mode (`Operate`, `Read`, `Persuade` or `Experience`) and load the matching playbooks (`shape`, `distill`, `typeset`, `layout`, `colorize`, `clarify`, `polish`, `harden`, `adapt`) before writing markup.
47
47
  - **Restraint and hierarchy.** Group related items into section `Card`s (`heading: 2` under the page `<h1>`), keep main-column rows concise (`Cluster` with `fill` = `Checkbox` plus one trailing action), and put multi-line inspector detail in the right-hand `HelperCard` as `Stack` + `Text` — never `DataList`, which clips multi-line prose.
48
48
  - **Verify SSR pre-rendered HTML.** `impeccable detect --json` is blind on an unrendered `<div id="root"></div>` file; verify the output of `review.mjs <folder> --standalone --open`, which pre-renders into `#root`. An empty `#root`, missing fonts or an unrendered detector run is a failure, not a pass.
@@ -86,6 +86,54 @@ Settled owner ruling: present clear, distinct choices in the existing MM Artifac
86
86
  viewer zoom controls must keep the outer A/B selector shell, question bar and controls at a fixed
87
87
  1:1 UI size.
88
88
 
89
+ ### Part 4 — Visual A/B Choice via Designer Subagent Before Kit Implementation — Never Prose Specs (owner ruling 2026-10-25T16:29:46.339Z, #8844, #8846, #8848)
90
+
91
+ Settled owner ruling (verbatim): "You should use a designer to create a couple card designs with my
92
+ specifications and then let me choose then build the complete spec into the design system, replacing
93
+ any other card available atomically. That's the proper way to do it. Learn from this mistake of yours,
94
+ requests like this should follow this structure, not prose guide."
95
+
96
+ 1. **Never reply with a prose specification in chat or jump straight to kit implementation.**
97
+ When the owner asks to "design the spec for X and add it to the design system" (for example, The One
98
+ Card), writing a markdown or prose spec in chat violates Principle 7 ("Choices for Jervaise go only
99
+ on the A/B canvas"). Building one guessed design straight into the kit skips the owner's choice.
100
+ 2. **Always follow the visual spec pipeline:**
101
+ - **Phase 0 — Inspiration via Better Design MCP (`https://better-design.com/api/mcp`) and 21st.dev MCP (`https://21st.dev/api/mcp`) (owner ruling 2026-10-25T16:48:00Z, #8848).**
102
+ Before building visual A/B boards, query the two owner-selected prebuilt design inspiration MCP
103
+ servers — **Better Design MCP** (`https://better-design.com/api/mcp`) and **21st.dev MCP**
104
+ (`https://21st.dev/api/mcp`, verbatim selection: `"21st.dev MCP Better Design MCP"`) — alongside
105
+ front-loaded Impeccable to study high-craft reference patterns, layout proportions, and interaction
106
+ details. Always translate inspired patterns into zero-GPU `@mutmutco/mmwork-ds` tokens
107
+ (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`, sleek translucent glass
108
+ cards) and Atomic Design layers; never copy raw third-party CSS/HTML or GPU-heavy effects.
109
+ `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never an internal tool
110
+ for designing the MM-Work app or its design system.
111
+ - **Stage 1 — a designer subagent builds visual A/B alternatives on an MM Artifact canvas.**
112
+ Dispatch a `designer` subagent with front-loaded Impeccable (`impeccable context`, `craft-floor`,
113
+ `distill`, `typeset`, `layout`, `colorize`, `polish`) to create 2–3 genuinely distinct visual
114
+ designs that honor every constraint in the owner's brief: Option A, Option B and optionally
115
+ Option C, each its own full-resolution `1440x900` live HTML board in one MM Artifact A/B canvas
116
+ (Part 3 rules: content-only `Ctrl + Mousewheel` zoom, 1:1 or side-by-side live comparison). Open
117
+ the verified canvas in the browser automatically with
118
+ `node artifacts/review/review.mjs <folder> --standalone --open`. Spawn a dedicated, fresh
119
+ `designer` subagent for each distinct design task (item 3); never reuse a busy designer seat.
120
+ - **Stage 2 — the owner chooses visually on the A/B canvas.** Wait while the owner inspects the
121
+ live HTML alternatives, zooms into details and picks the preferred design or asks for
122
+ adjustments. Record the canvas choice ID and the owner-decision reference.
123
+ - **Stage 3 — atomic replacement in the kit source.** Only AFTER the owner picks on the A/B canvas,
124
+ build the chosen design into the source folder of packages/mmwork-ds in mutmutco/MM-Work,
125
+ **atomically replacing** every other legacy or competing variant of that piece across the design
126
+ system, publish it to `Canlı belgeler` / MM-Work, and propagate it to all 10 suite modules.
127
+ 3. **One dedicated `designer` subagent per distinct design task — never overload a designer seat
128
+ (owner ruling 2026-10-25T16:33:00Z, #8846).**
129
+ Settled owner ruling (verbatim): "The lead designer sent the card building to the same designer
130
+ agent, overloading it. I don't think it was a wise idea. Please learn from this."
131
+ Spawn a separate, fresh `designer` subagent in its own isolated lane for each distinct design task
132
+ or visual A/B canvas (for example, a theme A/B exploration vs. a unified Card spec A/B). Never steer
133
+ or queue a second unrelated design task onto an active `designer` seat: overloading one
134
+ `designer` subagent serializes work that should run in parallel, bloats its context window, and
135
+ degrades craft quality.
136
+
89
137
  ## Mandatory Impeccable workflow (owner, 2026-10-25; Hub#8814 / MM-Work#7629)
90
138
 
91
139
  UI and design verification uses `@mutmutco/mmwork-ds` (`mmwork-check-ui`) plus Impeccable on every design task: inspect the toolkit for applicable capabilities, work directly on the live app, and use our own MM Artifacts A/B canvas only when an owner A/B choice is needed. Functional journeys, where separately permitted, stay opt-in `workflow_dispatch`-only and never act as design checks.
@@ -39,7 +39,7 @@ Functional browser journeys remain opt-in `workflow_dispatch`-only, never design
39
39
  This is the bible for the MM open design system: every agent doing UI, design, document or MM
40
40
  Artifact work reads it first and treats it as second nature. Part 1 says how the system is built and
41
41
  used; Part 2 says how agents improve it when it fails them; Part 3 governs A/B choosing architecture
42
- and viewer behavior.
42
+ and viewer behavior; Part 4 makes design-spec requests a visual A/B choice before any kit change.
43
43
 
44
44
  ### Part 1 — The five pillars of the MM Open Design System
45
45
 
@@ -103,11 +103,14 @@ Impeccable **v4.7.0 / engine v0.1.16** details:
103
103
 
104
104
  Craft essentials every agent applies (owner, 2026-10-25, #8839):
105
105
 
106
- - **Rich module colour and frosted glass — never graywashed.** Give surfaces purposeful module
107
- tones (`blue`, `coral`, `teal`, `purple`, `terracotta`, `green`, `pink`, `lime`, `cyan`, `magenta`,
108
- `fuchsia`) through kit props: `Card` (`tone`, `icon`/`mark`, `edge="bite"`), `Badge`, `Mark` and
109
- `Checkbox` (`lead`). The kit backs them with `--card-tint-dark: 34%`, `--card-tint-light: 22%`
110
- and `--card-blur`; never override these tokens locally or flatten a module to gray.
106
+ - **Sleek translucent glass cards and zero GPU usage — never color-washed
107
+ (`2026-10-25T16:21:19.344Z`).** Cards use sleek, modern translucent glass material (neutral
108
+ translucent surface with a crisp glass rim, `--card-tint-dark: 0%`, `--card-tint-light: 0%`)
109
+ rather than color-washed card fills in any theme, and zero GPU-compositing blur or shadow
110
+ (`--card-blur: none`, `--card-blur-frost: none`, `--frost-see-blur: 0px`, `--glass-blur: none`,
111
+ `--card-shadow-dark: none`; never `backdrop-filter: blur(...)`). Module tones (`blue`, `coral`,
112
+ `teal`, `purple`, `terracotta`, `green`, `pink`, `lime`, `cyan`, `magenta`, `fuchsia`)
113
+ belong on `Badge`, `Mark`, `Checkbox` (`lead`), and card `icon`/`mark` accents (`edge="bite"`).
111
114
  - **Front-loaded Impeccable v4.7.0, in front of creation.** Run `impeccable context --target <path>`,
112
115
  read `DESIGN.md` and `reference/craft-floor.md`, choose the surface mode (`Operate`, `Read`,
113
116
  `Persuade` or `Experience`) and load the matching playbooks (`shape`, `distill`, `typeset`,
@@ -178,6 +181,54 @@ Settled owner ruling: present clear, distinct choices in the existing MM Artifac
178
181
  viewer zoom controls must keep the outer A/B selector shell, question bar and controls at a fixed
179
182
  1:1 UI size.
180
183
 
184
+ ### Part 4 — Visual A/B Choice via Designer Subagent Before Kit Implementation — Never Prose Specs (owner ruling 2026-10-25T16:29:46.339Z, #8844, #8846, #8848)
185
+
186
+ Settled owner ruling (verbatim): "You should use a designer to create a couple card designs with my
187
+ specifications and then let me choose then build the complete spec into the design system, replacing
188
+ any other card available atomically. That's the proper way to do it. Learn from this mistake of yours,
189
+ requests like this should follow this structure, not prose guide."
190
+
191
+ 1. **Never reply with a prose specification in chat or jump straight to kit implementation.**
192
+ When the owner asks to "design the spec for X and add it to the design system" (for example, The One
193
+ Card), writing a markdown or prose spec in chat violates Principle 7 ("Choices for Jervaise go only
194
+ on the A/B canvas"). Building one guessed design straight into the kit skips the owner's choice.
195
+ 2. **Always follow the visual spec pipeline:**
196
+ - **Phase 0 — Inspiration via Better Design MCP (`https://better-design.com/api/mcp`) and 21st.dev MCP (`https://21st.dev/api/mcp`) (owner ruling 2026-10-25T16:48:00Z, #8848).**
197
+ Before building visual A/B boards, query the two owner-selected prebuilt design inspiration MCP
198
+ servers — **Better Design MCP** (`https://better-design.com/api/mcp`) and **21st.dev MCP**
199
+ (`https://21st.dev/api/mcp`, verbatim selection: `"21st.dev MCP Better Design MCP"`) — alongside
200
+ front-loaded Impeccable to study high-craft reference patterns, layout proportions, and interaction
201
+ details. Always translate inspired patterns into zero-GPU `@mutmutco/mmwork-ds` tokens
202
+ (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`, sleek translucent glass
203
+ cards) and Atomic Design layers; never copy raw third-party CSS/HTML or GPU-heavy effects.
204
+ `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never an internal tool
205
+ for designing the MM-Work app or its design system.
206
+ - **Stage 1 — a designer subagent builds visual A/B alternatives on an MM Artifact canvas.**
207
+ Dispatch a `designer` subagent with front-loaded Impeccable (`impeccable context`, `craft-floor`,
208
+ `distill`, `typeset`, `layout`, `colorize`, `polish`) to create 2–3 genuinely distinct visual
209
+ designs that honor every constraint in the owner's brief: Option A, Option B and optionally
210
+ Option C, each its own full-resolution `1440x900` live HTML board in one MM Artifact A/B canvas
211
+ (Part 3 rules: content-only `Ctrl + Mousewheel` zoom, 1:1 or side-by-side live comparison). Open
212
+ the verified canvas in the browser automatically with
213
+ `node artifacts/review/review.mjs <folder> --standalone --open`. Spawn a dedicated, fresh
214
+ `designer` subagent for each distinct design task (item 3); never reuse a busy designer seat.
215
+ - **Stage 2 — the owner chooses visually on the A/B canvas.** Wait while the owner inspects the
216
+ live HTML alternatives, zooms into details and picks the preferred design or asks for
217
+ adjustments. Record the canvas choice ID and the owner-decision reference.
218
+ - **Stage 3 — atomic replacement in the kit source.** Only AFTER the owner picks on the A/B canvas,
219
+ build the chosen design into the source folder of packages/mmwork-ds in mutmutco/MM-Work,
220
+ **atomically replacing** every other legacy or competing variant of that piece across the design
221
+ system, publish it to `Canlı belgeler` / MM-Work, and propagate it to all 10 suite modules.
222
+ 3. **One dedicated `designer` subagent per distinct design task — never overload a designer seat
223
+ (owner ruling 2026-10-25T16:33:00Z, #8846).**
224
+ Settled owner ruling (verbatim): "The lead designer sent the card building to the same designer
225
+ agent, overloading it. I don't think it was a wise idea. Please learn from this."
226
+ Spawn a separate, fresh `designer` subagent in its own isolated lane for each distinct design task
227
+ or visual A/B canvas (for example, a theme A/B exploration vs. a unified Card spec A/B). Never steer
228
+ or queue a second unrelated design task onto an active `designer` seat: overloading one
229
+ `designer` subagent serializes work that should run in parallel, bloats its context window, and
230
+ degrades craft quality.
231
+
181
232
  ## Documentation preflight
182
233
 
183
234
  Before each push or PR, follow this order: