@mutmutco/codex-plugin 4.5.138 → 4.5.140

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.138",
3
+ "version": "4.5.140",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -18277,10 +18277,10 @@ var rollout_plan_default = {
18277
18277
  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)."
18278
18278
  },
18279
18279
  baseline: {
18280
- version: "4.5.138",
18281
- tag: "v4.5.138",
18282
- commit: "2b2ba344f112",
18283
- npm: "@mutmutco/cli@4.5.138"
18280
+ version: "4.5.140",
18281
+ tag: "v4.5.140",
18282
+ commit: "4a198fde4423",
18283
+ npm: "@mutmutco/cli@4.5.140"
18284
18284
  },
18285
18285
  exitCriterion: "fleet-n-of-n",
18286
18286
  hubOnlyShortcut: "forbidden",
@@ -18297,14 +18297,14 @@ var rollout_plan_default = {
18297
18297
  repo: "mutmutco/mmi-hub",
18298
18298
  role: "canary",
18299
18299
  schedule: "train",
18300
- v3Target: "v4.5.138"
18300
+ v3Target: "v4.5.140"
18301
18301
  }
18302
18302
  ],
18303
18303
  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.",
18304
18304
  rollback: {
18305
18305
  independent: true,
18306
- mechanism: "npm dist-tag latest -> 4.5.138 and redeploy the Hub Lambda from tag v4.5.138 (2b2ba344f112); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
18307
- v3Target: "v4.5.138 (@mutmutco/cli@4.5.138, tag commit 2b2ba344f112 \u2014 last known-good release carrying the repo-index v4-only contract)"
18306
+ mechanism: "npm dist-tag latest -> 4.5.140 and redeploy the Hub Lambda from tag v4.5.140 (4a198fde4423); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
18307
+ v3Target: "v4.5.140 (@mutmutco/cli@4.5.140, tag commit 4a198fde4423 \u2014 last known-good release carrying the repo-index v4-only contract)"
18308
18308
  }
18309
18309
  },
18310
18310
  {
@@ -20427,7 +20427,10 @@ async function readTrainLogin(deps, waitMs = 18e4, attempts = 5) {
20427
20427
  try {
20428
20428
  return requireValue(clean2(await deps.run("gh", ["api", "user", "--jq", ".login"])), "GitHub login");
20429
20429
  } catch (e) {
20430
- if (i >= attempts || !isRateLimitText(e instanceof Error ? e.message : String(e))) throw e;
20430
+ if (!isRateLimitText(e instanceof Error ? e.message : String(e))) throw e;
20431
+ const stored = clean2(await deps.run("gh", ["config", "get", "user", "-h", "github.com"]).catch(() => ""));
20432
+ if (stored) return stored;
20433
+ if (i >= attempts) throw e;
20431
20434
  deps.warn?.(`GitHub login read rate-limited; retrying in ${waitMs / 6e4} min (${i}/${attempts - 1})`);
20432
20435
  await resolveSleep(deps)(waitMs);
20433
20436
  }
@@ -26491,6 +26494,14 @@ var UPDATE_LINE_MAX = 120;
26491
26494
  var UPDATE_SECTION_MAX = 8;
26492
26495
  var UPDATE_LINE = /^[^:\s][^:]{0,39}: \S.*\.$/u;
26493
26496
  var UPDATE_FORBIDDEN = /#\d|\bv?\d+\.\d+\.\d+|^(?:feat|fix|chore|refactor|docs|test|ci|build|perf|style)\b/;
26497
+ var FIXED_OUTCOME = {
26498
+ en: /\b(?:now|again|no longer)\b/i,
26499
+ tr: /(?:^|[\s:])(?:artık|yeniden|tekrar|yine)(?=[\s.,]|$)/iu
26500
+ };
26501
+ var FIXED_EXAMPLE = {
26502
+ en: "Drive: Scans of large drives now finish without timing out.",
26503
+ tr: "Drive: B\xFCy\xFCk s\xFCr\xFCc\xFClerde tarama art\u0131k zaman a\u015F\u0131m\u0131na u\u011Framadan tamamlan\u0131yor."
26504
+ };
26494
26505
  function parseUpdateNotes(content, lang = "en") {
26495
26506
  const words = UPDATE_SECTIONS[lang];
26496
26507
  const lines2 = content.split(/\r?\n/).map((s) => s.trim()).filter(Boolean);
@@ -26509,6 +26520,9 @@ function parseUpdateNotes(content, lang = "en") {
26509
26520
  if (line.length > UPDATE_LINE_MAX || !UPDATE_LINE.test(line) || UPDATE_FORBIDDEN.test(line)) {
26510
26521
  throw new Error(`${lang} summary line must read "<Area>: <sentence>." in at most ${UPDATE_LINE_MAX} characters, with no issue numbers, versions or commit prefixes: "${line}" \u2014 see ${SUMMARY_GUIDE}`);
26511
26522
  }
26523
+ if (section === "fixed" && !FIXED_OUTCOME[lang].test(line)) {
26524
+ throw new Error(`${lang} summary: a "${words.fixed}" line states what works now, not the problem (e.g. "${FIXED_EXAMPLE[lang]}"): "${line}" \u2014 see ${SUMMARY_GUIDE}`);
26525
+ }
26512
26526
  notes[section].push(line);
26513
26527
  }
26514
26528
  for (const key of seen) {
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.138",
3
+ "version": "4.5.140",
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.138",
3
+ "version": "4.5.140",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -109,7 +109,7 @@ commit, so build and verify the lines from one pass over that range —
109
109
  subject, body and changed files — never from subjects, PR titles or memory; a line whose claim is not
110
110
  in that output does not go in the file. A Hub summary never mentions a Jerv-side project; the train
111
111
  refuses such a line.
112
- Every new MM-Work suite Release, solo and hotfix included, requires `--announce-summary-file` and `--announce-summary-file-tr` in the bilingual update-notes template of the [MM-Work GUIDE, "Update notes"](https://github.com/mutmutco/MM-Work/blob/development/packages/mmwork-ds/GUIDE.md#update-notes) (`Fixed`/`Düzeldi`, then `New`/`Yeni`, with `<Area>: <sentence>.` lines). A suite release requires `--member-summary-file owner/repo=path` and `--member-summary-file-tr owner/repo=path` for every member it releases. Details: the release skill.
112
+ Every new MM-Work suite Release, solo and hotfix included, requires `--announce-summary-file` and `--announce-summary-file-tr` in the bilingual update-notes template of the [MM-Work GUIDE, "Update notes"](https://github.com/mutmutco/MM-Work/blob/development/packages/mmwork-ds/GUIDE.md#update-notes) (`Fixed`/`Düzeldi`, then `New`/`Yeni`, with `<Area>: <sentence>.` lines; a Fixed line states what works now, never the problem). A suite release requires `--member-summary-file owner/repo=path` and `--member-summary-file-tr owner/repo=path` for every member it releases. Details: the release skill.
113
113
 
114
114
  Announcement delivery uses the developer's GitHub-authenticated Hub session. The Hub checks project
115
115
  authority, resolves the registered channel, and reads the MMI Future Slack key inside its vault boundary.
@@ -15,7 +15,7 @@ Full-track repos ship exactly what is on `rc` (never `development`): merge `rc
15
15
 
16
16
  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.
17
17
 
18
- 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` (the problem the person saw, present tense) 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.
18
+ 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.
19
19
  The `/user-releases` feed serves template notes as `updateNotes: {en?, tr?: {fixed[], new[]}}`. Older title-and-notes bodies keep `plainWords` and get `updateNotes: null`.
20
20
 
21
21
  Read META and name the lane before describing or executing anything: