@mutmutco/cli 4.3.64 → 4.3.66

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 (2) hide show
  1. package/dist/main.cjs +35 -12
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -15801,10 +15801,10 @@ var rollout_plan_default = {
15801
15801
  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)."
15802
15802
  },
15803
15803
  baseline: {
15804
- version: "4.3.64",
15805
- tag: "v4.3.64",
15806
- commit: "91fe5c009629",
15807
- npm: "@mutmutco/cli@4.3.64"
15804
+ version: "4.3.66",
15805
+ tag: "v4.3.66",
15806
+ commit: "a6cdc9d43e2e",
15807
+ npm: "@mutmutco/cli@4.3.66"
15808
15808
  },
15809
15809
  exitCriterion: "fleet-n-of-n",
15810
15810
  hubOnlyShortcut: "forbidden",
@@ -15821,14 +15821,14 @@ var rollout_plan_default = {
15821
15821
  repo: "mutmutco/mmi-hub",
15822
15822
  role: "canary",
15823
15823
  schedule: "train",
15824
- v3Target: "v4.3.64"
15824
+ v3Target: "v4.3.66"
15825
15825
  }
15826
15826
  ],
15827
15827
  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.",
15828
15828
  rollback: {
15829
15829
  independent: true,
15830
- mechanism: "npm dist-tag latest -> 4.3.64 and redeploy the Hub Lambda from tag v4.3.64 (91fe5c009629); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15831
- v3Target: "v4.3.64 (@mutmutco/cli@4.3.64, tag commit 91fe5c009629 \u2014 last known-good release carrying the repo-index v4-only contract)"
15830
+ mechanism: "npm dist-tag latest -> 4.3.66 and redeploy the Hub Lambda from tag v4.3.66 (a6cdc9d43e2e); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15831
+ v3Target: "v4.3.66 (@mutmutco/cli@4.3.66, tag commit a6cdc9d43e2e \u2014 last known-good release carrying the repo-index v4-only contract)"
15832
15832
  }
15833
15833
  },
15834
15834
  {
@@ -28077,11 +28077,21 @@ function applyWaivers(checks, waivers) {
28077
28077
  const set = new Set(waivers);
28078
28078
  return checks.map((c) => !c.ok && set.has(c.label) ? { ...c, waived: true } : c);
28079
28079
  }
28080
+ function laneNotEvaluatedFromThisBranch(doctor) {
28081
+ if (doctor.ready) return void 0;
28082
+ const reasons = doctor.findings.filter((f) => f.severity === "blocker" || f.code === "origin-unverified");
28083
+ const only = reasons.length === 1 ? reasons[0] : void 0;
28084
+ return only?.code === "branch-mismatch" ? only.title : void 0;
28085
+ }
28080
28086
  function attachTrainDoctorVerdicts(report, trainDoctors) {
28087
+ const marked = trainDoctors.map((doctor) => {
28088
+ const notEvaluatedFromThisBranch = laneNotEvaluatedFromThisBranch(doctor);
28089
+ return notEvaluatedFromThisBranch ? { ...doctor, notEvaluatedFromThisBranch } : doctor;
28090
+ });
28081
28091
  return {
28082
28092
  ...report,
28083
- ok: report.ok && trainDoctors.every((doctor) => doctor.ready),
28084
- ...trainDoctors.length ? { trainDoctors } : {}
28093
+ ok: report.ok && marked.every((doctor) => doctor.ready || doctor.notEvaluatedFromThisBranch !== void 0),
28094
+ ...marked.length ? { trainDoctors: marked } : {}
28085
28095
  };
28086
28096
  }
28087
28097
  function renderBootstrapVerifyReport(report) {
@@ -28090,7 +28100,12 @@ function renderBootstrapVerifyReport(report) {
28090
28100
  const status = check.ok ? "OK" : check.waived ? "WAIVE" : "FAIL";
28091
28101
  lines2.push(`${status} ${check.code ? `[${check.code}] ` : ""}${check.label}${check.detail ? ` - ${check.detail}` : ""}`);
28092
28102
  }
28093
- for (const doctor of report.trainDoctors ?? []) lines2.push("", formatTrainDoctor(doctor));
28103
+ for (const doctor of report.trainDoctors ?? []) {
28104
+ lines2.push("", formatTrainDoctor(doctor));
28105
+ if (doctor.notEvaluatedFromThisBranch) {
28106
+ lines2.push(` NOT EVALUATED from this branch \u2014 ${doctor.notEvaluatedFromThisBranch}; one checkout stands on one branch, so this lane does not fail the verify (#6677). Run \`mmi-cli devops train doctor --lane ${doctor.lane}\` from that branch for its own verdict.`);
28107
+ }
28108
+ }
28094
28109
  return lines2.join("\n");
28095
28110
  }
28096
28111
 
@@ -31923,7 +31938,8 @@ var surfaces_default = {
31923
31938
  enforcementCeilings: [
31924
31939
  "MMI ships no Hermes hooks (#5908): the plugin contributes skills and the /mmi command only; enforcement is host-side.",
31925
31940
  "Hermes user plugins are opt-in through plugins.enabled (#6656): after a verified converge MMI-Hub enables its OWN mmi key through Hermes' own `hermes plugins enable mmi --no-allow-tool-override` command, and never reads, reorders, or writes another operator entry. Built-in tool override is explicitly declined, since MMI ships no Hermes hooks. Host process isolation remains Hermes-owned.",
31926
- "npm is MMI transport only: MMI-Hub extracts @mutmutco/hermes-plugin into $HERMES_HOME/plugins/mmi and provisions the canonical skills into $HERMES_HOME/skills/mmi/; a fresh Hermes Agent process is required for discovery."
31941
+ "npm is MMI transport only: MMI-Hub extracts @mutmutco/hermes-plugin into $HERMES_HOME/plugins/mmi and provisions the canonical skills into $HERMES_HOME/skills/mmi/; a fresh Hermes Agent process is required for discovery.",
31942
+ "Every Hermes home is covered per home (#6672): a profile under $HERMES_HOME/profiles/<name> is a full sibling home and Hermes scans only the active home's plugins/, so MMI-Hub repeats the same single-home install, skills provisioning, and host-command enable in the resolved home and in each profile home with HERMES_HOME bound to it. No profile is enumerated for any other purpose, and nothing outside those per-home MMI paths is read or written."
31927
31943
  ]
31928
31944
  }
31929
31945
  ],
@@ -44604,6 +44620,11 @@ function emitTrainResult(label, output, out) {
44604
44620
  if (!out) printLine(output);
44605
44621
  else printLine(`Wrote ${label} result to ${out} (UTF-8, ${writeUtf8Receipt(out, output)} bytes)`);
44606
44622
  }
44623
+ function writeTrainFailureReceipt(commandName, json, out, error) {
44624
+ if (!out) return;
44625
+ const output = json ? JSON.stringify({ command: `${commandName} --apply`, verdict: "failed", error: error.message }, null, 2) : `mmi-cli ${commandName} --apply: FAILED \u2014 ${error.message}`;
44626
+ emitTrainResult(`${commandName} apply`, output, out);
44627
+ }
44607
44628
  function renderTenantRedeploy(r) {
44608
44629
  return `mmi-cli devops runtime tenant redeploy: ${r.repo} ${r.stage} (ref=${r.ref}) [${r.deployModel}]; ${renderDeployLine(r)}`;
44609
44630
  }
@@ -44852,9 +44873,11 @@ function registerTrainOperationsCommands(program3, runProjectInfoSyncCallback) {
44852
44873
  applyTrainFollowUpExit(followUpStatus);
44853
44874
  return;
44854
44875
  } catch (e) {
44876
+ const error = e;
44877
+ writeTrainFailureReceipt(commandName, o.json === true, o.out, error);
44855
44878
  process.exitCode = 1;
44856
44879
  if (commandName === "release") consoleIo.err("mmi-cli: Release: Release blocked \u2014 see the error below");
44857
- return await failGraceful(`${commandName}: ${e.message}`);
44880
+ return await failGraceful(`${commandName}: ${error.message}`);
44858
44881
  }
44859
44882
  }
44860
44883
  const repo = o.repo ?? await resolveRepo();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.3.64",
3
+ "version": "4.3.66",
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",