@mutmutco/claude-plugin 4.5.200 → 4.5.202

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,7 +1,7 @@
1
1
  {
2
2
  "name": "mmi",
3
3
  "displayName": "MMI",
4
- "version": "4.5.200",
4
+ "version": "4.5.202",
5
5
  "mmiCompat": "4.x",
6
6
  "description": "MMI workflow skills and org gates delivery.",
7
7
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -1595,7 +1595,6 @@ __export(index_exports, {
1595
1595
  argvWantsJson: () => argvWantsJson3,
1596
1596
  awsCallerArn: () => awsCallerArn,
1597
1597
  ciAuditDeps: () => ciAuditDeps2,
1598
- classifyParseError: () => classifyParseError,
1599
1598
  commandOwnLongFlags: () => commandOwnLongFlags,
1600
1599
  envHealLockPath: () => envHealLockPath,
1601
1600
  isOrgRegisteredRepo: () => isOrgRegisteredRepo,
@@ -6299,6 +6298,31 @@ function excessArgumentMessage(extra, corrected) {
6299
6298
  const head = `unexpected positional argument ${list} \u2014 this command does not take it`;
6300
6299
  return corrected ? `${head}. Did you mean \`${corrected}\`?` : head;
6301
6300
  }
6301
+ function boardClaimStatusFlagRecovery(flag, canonicalPath, argv) {
6302
+ if (canonicalPath !== "oracle board claim") return void 0;
6303
+ if (flag !== "--status" && !flag.startsWith("--status=")) return void 0;
6304
+ const kept = [];
6305
+ for (let i = 0; i < argv.length; i++) {
6306
+ const tok = argv[i];
6307
+ if (tok.startsWith("--status=")) continue;
6308
+ if (tok === "--status") {
6309
+ if (i + 1 < argv.length && !argv[i + 1].startsWith("-")) i++;
6310
+ continue;
6311
+ }
6312
+ kept.push(tok);
6313
+ }
6314
+ return {
6315
+ message: "unknown option '--status' \u2014 `oracle board claim` automatically sets status to In Progress; retry without --status and its value",
6316
+ corrected: `mmi-cli ${kept.join(" ")}`
6317
+ };
6318
+ }
6319
+ function classifyParseError(plain) {
6320
+ if (/unknown command/i.test(plain)) return "unknown-command";
6321
+ if (/unknown option|missing required argument|too many arguments|argument missing|is invalid\. Allowed choices are|cannot be used with/i.test(plain)) {
6322
+ return "bad-arguments";
6323
+ }
6324
+ return "other";
6325
+ }
6302
6326
 
6303
6327
  // src/released-version-cache.ts
6304
6328
  var import_node_fs10 = require("node:fs");
@@ -19279,10 +19303,10 @@ var rollout_plan_default = {
19279
19303
  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)."
19280
19304
  },
19281
19305
  baseline: {
19282
- version: "4.5.200",
19283
- tag: "v4.5.200",
19284
- commit: "331035205b9a",
19285
- npm: "@mutmutco/cli@4.5.200"
19306
+ version: "4.5.202",
19307
+ tag: "v4.5.202",
19308
+ commit: "e1fe495d9b63",
19309
+ npm: "@mutmutco/cli@4.5.202"
19286
19310
  },
19287
19311
  exitCriterion: "fleet-n-of-n",
19288
19312
  hubOnlyShortcut: "forbidden",
@@ -19299,14 +19323,14 @@ var rollout_plan_default = {
19299
19323
  repo: "mutmutco/mmi-hub",
19300
19324
  role: "canary",
19301
19325
  schedule: "train",
19302
- v3Target: "v4.5.200"
19326
+ v3Target: "v4.5.202"
19303
19327
  }
19304
19328
  ],
19305
19329
  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.",
19306
19330
  rollback: {
19307
19331
  independent: true,
19308
- mechanism: "npm dist-tag latest -> 4.5.200 and redeploy the Hub Lambda from tag v4.5.200 (331035205b9a); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19309
- v3Target: "v4.5.200 (@mutmutco/cli@4.5.200, tag commit 331035205b9a \u2014 last known-good release carrying the repo-index v4-only contract)"
19332
+ mechanism: "npm dist-tag latest -> 4.5.202 and redeploy the Hub Lambda from tag v4.5.202 (e1fe495d9b63); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19333
+ v3Target: "v4.5.202 (@mutmutco/cli@4.5.202, tag commit e1fe495d9b63 \u2014 last known-good release carrying the repo-index v4-only contract)"
19310
19334
  }
19311
19335
  },
19312
19336
  {
@@ -57958,13 +57982,7 @@ var DISCOVERY_HINT = "run `mmi-cli commands` for the agentic-coding map, `mmi-cl
57958
57982
  var STALE_HINT = `(${DISCOVERY_HINT}). If you expected this command to exist, your installed tooling may be stale \u2014 run \`mmi-hub update\`, then retry`;
57959
57983
  var lastParseErrorKind = "other";
57960
57984
  var lastUnknownCommand;
57961
- function classifyParseError(plain) {
57962
- if (/unknown command/i.test(plain)) return "unknown-command";
57963
- if (/unknown option|missing required argument|too many arguments|argument missing|is invalid\. Allowed choices are/i.test(plain)) {
57964
- return "bad-arguments";
57965
- }
57966
- return "other";
57967
- }
57985
+ var lastParseErrorConflict = false;
57968
57986
  function parseInvalidChoiceError(plain) {
57969
57987
  const m = /option '([^']+)' argument '([^']*)' is invalid\. Allowed choices are ([^.]+)\./.exec(plain);
57970
57988
  if (!m) return void 0;
@@ -58045,7 +58063,7 @@ function resolveParseHint() {
58045
58063
  const path2 = canonicalPathFor(commandPath3(cmd));
58046
58064
  return [
58047
58065
  `Usage: mmi-cli ${path2} ${cmd.usage()}`,
58048
- "This command exists and your mmi-cli is not the problem \u2014 the ARGUMENTS did not parse.",
58066
+ lastParseErrorConflict ? "This command exists and your mmi-cli is not the problem \u2014 two of the options conflict. Choose one of them and retry." : "This command exists and your mmi-cli is not the problem \u2014 the ARGUMENTS did not parse.",
58049
58067
  `Run \`mmi-cli ${path2} --help\` for its signature, \`mmi-cli explain ${path2} --json\` for exact detail, or \`mmi-cli commands\` for the task map.`
58050
58068
  ].join("\n");
58051
58069
  }
@@ -58101,6 +58119,7 @@ function envelopeAwareWriteErr(str2) {
58101
58119
  return;
58102
58120
  }
58103
58121
  lastParseErrorKind = classifyParseError(plain);
58122
+ lastParseErrorConflict = /cannot be used with/i.test(plain);
58104
58123
  lastUnknownCommand = /unknown command '?([\w:-]+)'?/.exec(plain)?.[1];
58105
58124
  const badChoice = parseInvalidChoiceError(plain);
58106
58125
  if (badChoice) {
@@ -58141,6 +58160,24 @@ function envelopeAwareWriteErr(str2) {
58141
58160
  const flag = match[1];
58142
58161
  const argv = process.argv.slice(2);
58143
58162
  const invoked = resolveCommandFromArgv(program2, argv);
58163
+ const claimStatus = invoked ? boardClaimStatusFlagRecovery(flag, canonicalPathFor(commandPath3(invoked)) ?? commandPath3(invoked), canonicalArgvFor(argv)) : void 0;
58164
+ if (claimStatus) {
58165
+ if (argvWantsJson3()) {
58166
+ process.stderr.write(
58167
+ formatErrorEnvelope(claimStatus.message, {
58168
+ code: ERROR_CODES.ERR_UNKNOWN_FLAG,
58169
+ offending_flag: "--status",
58170
+ corrected_command: claimStatus.corrected
58171
+ }) + "\n"
58172
+ );
58173
+ unknownFlagJsonHandled = true;
58174
+ return;
58175
+ }
58176
+ writeHumanParseError(
58177
+ str2.replace(/unknown option '[^']+'/, `${claimStatus.message}: run \`${claimStatus.corrected}\``)
58178
+ );
58179
+ return;
58180
+ }
58144
58181
  const positional = TARGET_SELECTOR_FLAGS.has(flag) ? positionalTargetForm(invoked, { flag, argv }) : void 0;
58145
58182
  if (argvWantsJson3()) {
58146
58183
  const ownFlags = commandOwnLongFlags(invoked);
@@ -59367,7 +59404,6 @@ program2.parseAsync(process.argv).then(() => finishCliRun()).catch((e) => failGr
59367
59404
  argvWantsJson,
59368
59405
  awsCallerArn,
59369
59406
  ciAuditDeps,
59370
- classifyParseError,
59371
59407
  commandOwnLongFlags,
59372
59408
  envHealLockPath,
59373
59409
  isOrgRegisteredRepo,
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.200",
3
+ "version": "4.5.202",
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/claude-plugin",
3
- "version": "4.5.200",
3
+ "version": "4.5.202",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -2,6 +2,9 @@ name: browser-pass
2
2
  # OPT-IN: copy to .github/workflows/browser-pass.yml, edit the dev URL, and replace
3
3
  # {{BROWSER_PASS_SHA}} with a reviewed 40-character Hub commit containing browser-pass.yml.
4
4
  # Never add PR, push, merge_group or gate callers. Not installed by bootstrap/propagation.
5
+ # Owner 2026-10-25 (#8814, #8816): functional journeys only, workflow_dispatch-only, never design checks.
6
+ # UI/design verification uses @mutmutco/mmwork-ds (mmwork-check-ui) and the Impeccable v4.7.0 toolkit
7
+ # (context, hooks on, detect --json, critique, audit, playbooks); MM Artifacts A/B canvas for owner choices.
5
8
  on:
6
9
  workflow_dispatch:
7
10
  inputs:
@@ -3,10 +3,12 @@ name: gate
3
3
  # and v* tags so /release and /hotfix can discover required contexts on the tagged SHA.
4
4
  #
5
5
  # Runner: self-hosted mmi-runner (mmi-live) — see docs/Guides/gh-runner-runbook.md in MMI-Hub.
6
- # #7914 (owner, 2026-10-06): this gate holds only fast, deterministic checks. Browser and long suites
7
- # (screens, geometry/motion, synthetic, Chrome renders and tests) never go here; they run in their own
8
- # workflow, nightly through the Hub schedule plane and on demand (docs/decisions/2026-10-06-browser-checks-nightly.md).
9
- # #4118: if GATE_CMD runs tsgo or other memory-heavy typecheck / browser work, pin this job to
6
+ # #8814 / #8816 (owner, 2026-10-25): fast deterministic checks only (lint, types, build, unit/db tests).
7
+ # UI/design uses @mutmutco/mmwork-ds (mmwork-check-ui) plus the Impeccable v4.7.0 skill/toolkit:
8
+ # context, hooks on, detect --json, critique, audit and refinement playbooks. Use our own MM Artifacts
9
+ # A/B canvas only when an owner A/B choice is needed.
10
+ # Functional browser journeys remain opt-in workflow_dispatch-only, never a required gate.
11
+ # #4118: if GATE_CMD runs tsgo or other memory-heavy typecheck/build work, pin this job to
10
12
  # runs-on: [self-hosted, linux, x64, mmi-heavy]
11
13
  # instead — standard lanes are MemoryMax=1200M and will cgroup-OOM those workloads.
12
14
  # Stack-aware (#1550): the runtime is rendered into the setup-step `if:` — both the Node and Python
@@ -1,6 +1,6 @@
1
1
  # MM-Work module
2
2
 
3
- Read the matching `module/node_modules/@mutmutco/mmwork-ds/GUIDE.md` before changing this module. The starter entry and Vite setting come from MM-Work's `examples/example-module`; replace the example screens with your product's screens using only the shared design system.
3
+ Use the MM-Work Atomic Design v1.1.0 contract and Designer Card. Query only task pieces/import ancestry through kit MCP or `catalog.json`, then the relevant contract/GUIDE section, never the whole registry or GUIDE. The starter entry and Vite setting come from MM-Work's `examples/example-module`; replace the example screens using only existing shared kit pieces, templates and tokens. Report the installed kit version and available checks separately from contract identity; missing information stays unknown with a lookup action.
4
4
 
5
5
  Sign-in belongs to MM-Work: verify its pass before adding protected backend routes. Do not provision a Google OAuth client or implement a separate login. Google and other shared services are reached through `ctx.act`, not module-owned credentials.
6
6
 
@@ -8,4 +8,26 @@ Before the first CI/deploy, an org admin must grant this repo **Read** on `@mutm
8
8
 
9
9
  The server exposes `/health` and `/module.js`. Register the module's bundle URL, id, name and capabilities with MM-Work following the GUIDE. The seed deliberately exposes no authenticated product API yet.
10
10
 
11
- `gate` installs and checks the backend and module. Product repos carry no screenshot or browser tests (owner ruling 2026-10-15, MM-Work#5388).
11
+ `gate` installs and checks the backend and module, including `mmwork-check-ui` from `@mutmutco/mmwork-ds`. Gates run fast deterministic checks only (owner rulings 2026-10-15, MM-Work#5388, and 2026-10-25, MM-Work#7629).
12
+
13
+ ## How the design pipeline reaches this module (owner, 2026-10-25; MM-Work#7651 / MM-Work#7654 / Hub#8827)
14
+
15
+ 1. **Single source of truth:** the source folder of `packages/mmwork-ds` in `mutmutco/MM-Work`, owned by the MM-Work Design Lead (tokens, layers, component bundle, component docs, `DESIGN.md` and its `design.json` sidecar). Never edit the kit or its copies here; a missing piece or variant is built there first, or requested via kit MCP `request_piece`.
16
+ 2. **MM Artifact on Live Docs:** Live Docs (`Canlı belgeler / MM-Work`) displays document `3a5c79df-5274-40ad-a1b5-a75e67a74dac` (ATOMIC, module `mm-work-kit`), an MM Artifact in the `design-system` format rebuilt from the kit source on every kit release: Overview, Guide (kit README + `DESIGN.md`), Tokens, Atoms, Molecules, Organisms, Templates and Files. Browse it to see every piece live.
17
+ 3. **Impeccable knows Atomic Design at boot:** `impeccable context` loads `PRODUCT.md`, `DESIGN.md` and the `design.json` sidecar in `.impeccable`, which carry the Atomic Design contract 1.1.0: `Atoms -> Molecules -> Organisms -> Templates -> Pages`, upward-only composition enforced by `npx mmwork-check-ui --rules=all`. Pages arrange exported `@mutmutco/mmwork-ds` pieces around one template and never paint custom controls, raw `<button>`/`<input>`, `mw-*` classes, inline visual styles or raw hex/px values.
18
+ 4. **Automatic propagation:** on every kit release the Hub kit-adopt workflow opens an adoption PR here that bumps `@mutmutco/mmwork-ds`, runs `mmwork-sync-impeccable`, and writes `DESIGN.md`, the `.impeccable` design manifest and `.impeccable/config.json` (`hook.enabled: true`) at the repository root, and deletes any stale copies under `module/`. These files are kit-owned: do not hand-edit them, and keep them committed even if `.impeccable/` is ignored (the adoption PR force-stages them).
19
+ 5. **Root only:** `PRODUCT.md`, `DESIGN.md`, the `.impeccable` design manifest and `.impeccable/config.json` live only at this repository's root, never duplicated under `module/`; a copy there makes Impeccable treat `module/` as a separate root without `PRODUCT.md` and the config. Run `impeccable context` from the root. Any suite-wide propagation of these files needs an explicit intercom ACK handshake with the MM-Work Design Lead naming the files written and removed, `impeccable context` + `impeccable doctor --json` verification, and the issue/PR reference.
20
+
21
+ ## Mandatory Impeccable workflow (owner, 2026-10-25; Hub#8814 / MM-Work#7629)
22
+
23
+ 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.
24
+
25
+ Impeccable v4.7.0 (engine v0.1.16) workflow; CLI verbs and agent playbooks are distinct:
26
+
27
+ 1. Boot once with `impeccable context --target <path>`. Use the `init` playbook for durable PRODUCT.md context, `document` for DESIGN.md + `.impeccable/design.json`, `impeccable doctor --json` to report drift, and `extract` to identify reuse. Read `reference/craft-floor.md` immediately before UI edits and `reference/operate.md` for task-oriented app UI. Extract through the existing kit; only the Design Lead can authorize kit changes.
28
+ 2. Run `impeccable hooks on`: shared `.impeccable/config.json` enables hooks; private overrides/consent live in gitignored `.impeccable/config.local.json`. Tier 1 scans mechanical issues per edit; Tier 2 runs a deep scan at turn-end `Stop` on supported hosts. Hook support is host-specific: verify `hooks status`; hosts without automatic hooks must run the manual detector. `impeccable detect --json <target>` exits **0 clean / 2 findings**; crashes or malformed output are failures, not clean passes. Source scans need markup files/directories, not CSS-only targets.
29
+ 3. Use the dual-subagent `critique` playbook, persisting through `critique-storage`, and `audit` (accessibility, performance, theming, responsive design, implementation integrity; five dimensions scored 0–4, **20 points** total). Keep independent design judgment separate from detector evidence; disclose degraded runs and unavailable checks. Still inspect the live result.
30
+ 4. Select applicable refinement/enhancement/fix playbooks, not every playbook blindly: `polish`, `bolder`, `quieter`, `distill`, `harden`, `onboard`, `layout`, `typeset`, `colorize`, `animate`, `delight`, `overdrive`, `clarify`, `adapt`, `optimize` (15 names in v4.7.0).
31
+ 5. Iterate live with `live` and `generate` (`live-generate`, `live-poll`, `live-server`). `serve-question` supports choices; MM-Work owner choices use the MM Artifacts review canvas with live kit pieces, never loose pictures. Record canvas choice ID and owner-decision reference; no A/B needed means no canvas. Stop temporary servers when finished.
32
+
33
+ Check installed skill/engine versions and the approved upstream update channel before design work; apply available updates through the owning installer, not by modifying shared skill files from a module task. Shared config alone does not prove hook installation or CI toolkit availability. Record piece/import provenance and command + exit + findings in the task/PR; neither agent reports nor detector success establish conformance.
@@ -27,11 +27,36 @@ Open a PR through `mmi-cli devops pr create` with a closing issue link, and land
27
27
  `mmi-cli devops pr land`. Verify required checks, merge, issue closure, and cleanup before calling
28
28
  the implementation complete. A merged implementation is not a production release.
29
29
 
30
- Browser checks and long CI run nightly, never as PR checks (owner, 2026-10-06;
31
- `docs/decisions/2026-10-06-browser-checks-nightly.md`). The required `gate` holds only fast,
32
- deterministic checks. Screen, geometry, motion, synthetic and Chrome suites run in a separate
33
- workflow armed nightly through the Hub schedule plane and on demand; it is never required, and a red
34
- run updates one `ci-heavy-red` issue. Never add such a suite to a gate or a local test policy.
30
+ Owner ruling 2026-10-25 (#8814, #8816, MM-Work#7629; `docs/decisions/2026-10-06-browser-checks-nightly.md`):
31
+ the required `gate` holds fast deterministic checks only; UI/design uses `@mutmutco/mmwork-ds`
32
+ (`mmwork-check-ui`) and the mandatory Impeccable skill/toolkit. Inspect all applicable toolkit
33
+ capabilities for every design task. Work on the live app; use our own MM Artifacts A/B canvas only
34
+ for owner choices, with live kit pieces and recorded choice ID / owner-decision reference.
35
+ Functional browser journeys remain opt-in `workflow_dispatch`-only, never design checks or gates.
36
+
37
+ Impeccable **v4.7.0 / engine v0.1.16** workflow:
38
+
39
+ - Boot once: `impeccable context --target <path>`; `init` captures PRODUCT.md, `document` maintains
40
+ `DESIGN.md` and its `design.json` sidecar, `impeccable doctor --json` reports drift, and `extract`
41
+ identifies reusable candidates (kit additions still need the Design Lead). Read
42
+ `reference/craft-floor.md` before UI edits and `reference/operate.md` for app UI.
43
+ - `impeccable hooks on` enables shared `.impeccable/config.json`; local overrides/consent belong in
44
+ ignored `.impeccable/config.local.json`. Tier 1 scans mechanical problems per edit; Tier 2 deep-scans
45
+ at turn-end `Stop` on supported hosts. Verify `hooks status` and host support, not config alone.
46
+ If automatic hooks are unavailable, run `impeccable detect --json <target>` manually on markup
47
+ files/directories (not CSS-only): **0 clean / 2 findings**. Unavailable or broken scans are not passes.
48
+ - Dual-subagent `critique` keeps design assessment independent from detector evidence and persists via
49
+ `critique-storage`; disclose degraded runs. `audit` scores accessibility, performance, theming,
50
+ responsive design and implementation integrity 0–4 each (**20 points**). These evaluations are
51
+ agent playbooks, not standalone engine CLI verbs; still inspect the live result.
52
+ - Pick relevant playbooks: `polish`, `bolder`, `quieter`, `distill`, `harden`, `onboard`, `layout`,
53
+ `typeset`, `colorize`, `animate`, `delight`, `overdrive`, `clarify`, `adapt`, `optimize` (15 names in
54
+ v4.7.0, despite the requested “14”). Do not apply conflicting playbooks blindly.
55
+ - Iterate with `live` / `generate` (`live-generate`, `live-poll`, `live-server`); `serve-question`
56
+ supports choices, while owner A/B decisions use the MM Artifacts canvas.
57
+ Stop temporary servers. Check installed versions and approved upstream updates via the owning
58
+ installer; do not modify shared skills from a module task. Record command + exit + findings,
59
+ kit version and available checks separately from contract identity; reports are not conformance.
35
60
 
36
61
  ## Documentation preflight
37
62
 
@@ -1,2 +1,4 @@
1
1
  In the suite lead (MM-Work) a plain rcand, release or hotfix refuses: run `mmi-cli devops suite rcand --owner-go` or `mmi-cli devops suite release --owner-go` instead (a lead-only cut needs `--suite-solo --owner-go`). A suite member cannot run standalone rcand, release or hotfix: cut from the suite lead; only a backward-compatible solo backend release/hotfix with explicit owner approval may pass `--suite-solo --owner-go`, and its MM-Work development pin PR must land before the suite is in sync.
2
2
 
3
+ Support sessions (MMI-Hub, Jerv-Hub, Jerv-JervCode) are not suite members and hold standing owner authorization (2026-10-25) to cut and ship releases at their discretion during suite runs without repeated per-release approval; record this standing rule in every suite session's working note and briefing while keeping all standard release preflight, gate, and verification checks.
4
+
@@ -7,7 +7,7 @@ description: Ship rc or direct-track development to main and production.
7
7
 
8
8
  # /release — ship to main + prod
9
9
 
10
- Bare `minor|major|patch` (default `patch`), never a flag; needs Jervaise's yes (principle 12). `minor`: `MMI_BUMP_REASON`. `major`: also `MMI_MAJOR_APPROVED=<exact version>` after the yes ([docs/versioning.md](../../docs/versioning.md)).
10
+ Bare `minor|major|patch` (default `patch`), never a flag; needs Jervaise's yes (principle 12). Support sessions (`MMI-Hub`, `Jerv-Hub`, `Jerv-JervCode`) hold standing owner authorization (2026-10-25) to release at their discretion during active suite runs without repeated per-release approval; record this standing rule in every suite session's working note and briefing ([suite.md](suite.md)). All standard release preflight, gate, and verification checks still apply. `minor`: `MMI_BUMP_REASON`. `major`: also `MMI_MAJOR_APPROVED=<exact version>` after the yes ([docs/versioning.md](../../docs/versioning.md)).
11
11
 
12
12
  ## Lane
13
13
 
@@ -1,5 +1,7 @@
1
1
  In the suite lead (MM-Work) a plain rcand, release or hotfix refuses: run `mmi-cli devops suite rcand --owner-go` or `mmi-cli devops suite release --owner-go` instead (a lead-only cut needs `--suite-solo --owner-go`). A suite member cannot run standalone rcand, release or hotfix: cut from the suite lead; only a backward-compatible solo backend release/hotfix with explicit owner approval may pass `--suite-solo --owner-go`, and its MM-Work development pin PR must land before the suite is in sync.
2
2
 
3
+ Support sessions (MMI-Hub, Jerv-Hub, Jerv-JervCode) are not suite members and hold standing owner authorization (2026-10-25) to cut and ship releases at their discretion during suite runs without repeated per-release approval; record this standing rule in every suite session's working note and briefing while keeping all standard release preflight, gate, and verification checks.
4
+
3
5
  Every new mm-work suite Release (including solo and hotfix releases) requires both `--announce-summary-file <path>` (English) and `--announce-summary-file-tr <path>` (Turkish, "sen" form) in the update-notes template. The canonical wording lives in the [MM-Work GUIDE, "Update notes"](https://github.com/mutmutco/MM-Work/blob/development/packages/mmwork-ds/GUIDE.md#update-notes); this repo links it and never copies it. Each file has the section word `Fixed` / `Düzeldi` (what works now, never the problem: "Drive: Scans of large drives now finish without timing out."; a line without now / again / no longer, or artık / yeniden / tekrar / yine, is refused) and/or `New` / `Yeni` (what you can now do) on its own line, Fixed first, each only when it has lines. Under them go 1–8 lines of `<Area>: <sentence>.`, each at most 120 characters, with no issue numbers, versions or commit prefixes. Off-template or missing files refuse before tagging. Do not write the head (app · date · time) or the thanks line: MM-Work renders both from the Release date and credits. Suite release also requires a valid `--member-summary-file <owner/repo=path>` and `--member-summary-file-tr <owner/repo=path>` for every member being released, before promoting any member. Carried, held and already-released members need none, and existing Releases can resume without new files.
4
6
  The `/user-releases` feed serves template notes as `updateNotes: {en?, tr?: {fixed[], new[]}}`. Older title-and-notes bodies keep `plainWords` and get `updateNotes: null`.
5
7
 
@@ -33,7 +33,7 @@ mmi-cli stage run --apply --port 5180 # pin a port
33
33
  mmi-cli stage run --apply --timeout-ms 120000 # slow stacks
34
34
  ```
35
35
 
36
- All artifacts (build output, screenshots, traces, local DB files) stay under untracked `tmp/stage/`. When grinding or issue acceptance criteria exist, read [smoke.md](smoke.md) and run its post-smoke panel before teardown.
36
+ All artifacts (build output, traces, local DB files) stay under untracked `tmp/stage/`. When grinding or issue acceptance criteria exist, read [smoke.md](smoke.md) and run its post-smoke panel before teardown.
37
37
 
38
38
  ## Step 2 — stop when done
39
39