@mutmutco/claude-plugin 4.5.148 → 4.5.149

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.148",
4
+ "version": "4.5.149",
5
5
  "mmiCompat": "4.x",
6
6
  "description": "MMI workflow skills and org gates delivery.",
7
7
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -18666,10 +18666,10 @@ var rollout_plan_default = {
18666
18666
  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)."
18667
18667
  },
18668
18668
  baseline: {
18669
- version: "4.5.148",
18670
- tag: "v4.5.148",
18671
- commit: "4fd7a2ad34c1",
18672
- npm: "@mutmutco/cli@4.5.148"
18669
+ version: "4.5.149",
18670
+ tag: "v4.5.149",
18671
+ commit: "b6fc6812e054",
18672
+ npm: "@mutmutco/cli@4.5.149"
18673
18673
  },
18674
18674
  exitCriterion: "fleet-n-of-n",
18675
18675
  hubOnlyShortcut: "forbidden",
@@ -18686,14 +18686,14 @@ var rollout_plan_default = {
18686
18686
  repo: "mutmutco/mmi-hub",
18687
18687
  role: "canary",
18688
18688
  schedule: "train",
18689
- v3Target: "v4.5.148"
18689
+ v3Target: "v4.5.149"
18690
18690
  }
18691
18691
  ],
18692
18692
  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.",
18693
18693
  rollback: {
18694
18694
  independent: true,
18695
- mechanism: "npm dist-tag latest -> 4.5.148 and redeploy the Hub Lambda from tag v4.5.148 (4fd7a2ad34c1); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
18696
- v3Target: "v4.5.148 (@mutmutco/cli@4.5.148, tag commit 4fd7a2ad34c1 \u2014 last known-good release carrying the repo-index v4-only contract)"
18695
+ mechanism: "npm dist-tag latest -> 4.5.149 and redeploy the Hub Lambda from tag v4.5.149 (b6fc6812e054); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
18696
+ v3Target: "v4.5.149 (@mutmutco/cli@4.5.149, tag commit b6fc6812e054 \u2014 last known-good release carrying the repo-index v4-only contract)"
18697
18697
  }
18698
18698
  },
18699
18699
  {
@@ -26425,6 +26425,7 @@ async function runTrainDoctor(input) {
26425
26425
  const emitters = (workflows ?? []).filter((f) => parseWorkflowJobIds(f.body).some((id) => required.some((context) => contextMatchesJobId(id, context))));
26426
26426
  const gateFiles = emitters.length ? emitters : (workflows ?? []).filter((f) => isGateWorkflowPath(f.path));
26427
26427
  const gates = gateFiles.length ? gateFiles.map((f) => f.path.split("/").pop()) : ["gate"];
26428
+ const tagGateAwaitsPush = new Set(gateFiles.filter((f) => f.body.includes("scripts/gate-tag-reuse.mjs")).map((f) => f.path.split("/").pop()));
26428
26429
  try {
26429
26430
  const tip = await git3(["rev-parse", "--verify", "--quiet", `refs/remotes/origin/${startBranch}`]);
26430
26431
  for (const workflow of gates) {
@@ -26432,7 +26433,8 @@ async function runTrainDoctor(input) {
26432
26433
  let lastUrl = run.runUrl;
26433
26434
  let elapsed = 0;
26434
26435
  const startedAt = Date.now();
26435
- while (input.refuse && run.read === "found" && run.conclusion === "pending" && elapsed < CANDIDATE_PUSH_GATE_WAIT_MS) {
26436
+ const awaitsPush = tagGateAwaitsPush.has(workflow);
26437
+ while (input.refuse && !awaitsPush && run.read === "found" && run.conclusion === "pending" && elapsed < CANDIDATE_PUSH_GATE_WAIT_MS) {
26436
26438
  train.warn?.(`candidate push gate ${run.runUrl} still running \u2014 ${elapsed / 1e3}s elapsed (20m bound)`);
26437
26439
  await deps.sleep(CANDIDATE_PUSH_GATE_POLL_MS);
26438
26440
  run = await readTargetRun(train, repo, { workflow, event: "push" }, tip);
@@ -26454,6 +26456,8 @@ async function runTrainDoctor(input) {
26454
26456
  } catch {
26455
26457
  }
26456
26458
  add({ code: "candidate-push-gate-red", severity: "blocker", source: "origin", title: `${workflow} push gate failed on ${startBranch}@${tip.slice(0, 12)} \u2014 ${url}`, remedy: `${url} \u2014 failed job(s): ${jobs}. Fix on development through a normal CI-gated PR and rerun; --heal never clears a red gate` });
26459
+ } else if (run.conclusion === "pending" && awaitsPush) {
26460
+ add({ code: "candidate-push-gate-running", severity: "info", source: "origin", title: `${workflow} push gate still running \u2014 ${url}; the tag gate waits on it (scripts/gate-tag-reuse.mjs), so the train does not`, remedy: "nothing \u2014 a red push gate still blocks; the tag gate runs its full test union if this run ends red or times out (#8318)" });
26457
26461
  } else if (run.conclusion === "pending") {
26458
26462
  add({ code: "candidate-push-gate-running", severity: "warning", source: "origin", title: `${workflow} push gate still running \u2014 ${url}`, remedy: "wait for the run to conclude and rerun; apply waits up to 20 minutes before refusing" });
26459
26463
  if (input.refuse) throw new Error(`candidate push gate still running after 20 minutes \u2014 ${url}; nothing was tagged`);
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.148",
3
+ "version": "4.5.149",
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.148",
3
+ "version": "4.5.149",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",