@mutmutco/cli 4.5.3 → 4.5.4
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.
- package/dist/main.cjs +29 -37
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -15998,10 +15998,10 @@ var rollout_plan_default = {
|
|
|
15998
15998
|
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)."
|
|
15999
15999
|
},
|
|
16000
16000
|
baseline: {
|
|
16001
|
-
version: "4.5.
|
|
16002
|
-
tag: "v4.5.
|
|
16003
|
-
commit: "
|
|
16004
|
-
npm: "@mutmutco/cli@4.5.
|
|
16001
|
+
version: "4.5.4",
|
|
16002
|
+
tag: "v4.5.4",
|
|
16003
|
+
commit: "0993d5d2fa7b",
|
|
16004
|
+
npm: "@mutmutco/cli@4.5.4"
|
|
16005
16005
|
},
|
|
16006
16006
|
exitCriterion: "fleet-n-of-n",
|
|
16007
16007
|
hubOnlyShortcut: "forbidden",
|
|
@@ -16018,14 +16018,14 @@ var rollout_plan_default = {
|
|
|
16018
16018
|
repo: "mutmutco/mmi-hub",
|
|
16019
16019
|
role: "canary",
|
|
16020
16020
|
schedule: "train",
|
|
16021
|
-
v3Target: "v4.5.
|
|
16021
|
+
v3Target: "v4.5.4"
|
|
16022
16022
|
}
|
|
16023
16023
|
],
|
|
16024
16024
|
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.",
|
|
16025
16025
|
rollback: {
|
|
16026
16026
|
independent: true,
|
|
16027
|
-
mechanism: "npm dist-tag latest -> 4.5.
|
|
16028
|
-
v3Target: "v4.5.
|
|
16027
|
+
mechanism: "npm dist-tag latest -> 4.5.4 and redeploy the Hub Lambda from tag v4.5.4 (0993d5d2fa7b); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
16028
|
+
v3Target: "v4.5.4 (@mutmutco/cli@4.5.4, tag commit 0993d5d2fa7b \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
16029
16029
|
}
|
|
16030
16030
|
},
|
|
16031
16031
|
{
|
|
@@ -19275,38 +19275,14 @@ function staleServedProcess(probe) {
|
|
|
19275
19275
|
function servedChannelRow(product, conclusion, evidence) {
|
|
19276
19276
|
return { workflow: `served-channel(${product})`, runUrlNote: evidence, conclusion };
|
|
19277
19277
|
}
|
|
19278
|
-
var JERV_GATEWAY_REMEDY = "from the Jerv-Hub checkout, re-run the Gateway deploy on its current release tag: `bash scripts/jerv-gateway-release-deploy.sh --tag <jerv-hub tag>`";
|
|
19279
|
-
var SERVED_CHANNELS = {
|
|
19280
|
-
"mutmutco/mm-strategy": {
|
|
19281
|
-
product: "mm-strategy",
|
|
19282
|
-
url: "https://strategy.mutmut.work/release/version",
|
|
19283
|
-
mover: "the MM-Strategy container deploy (the running server's own version is the pointer)",
|
|
19284
|
-
remedy: "`mmi-cli devops runtime tenant redeploy mutmutco/MM-Strategy main`"
|
|
19285
|
-
},
|
|
19286
|
-
"mutmutco/jerv-hub": {
|
|
19287
|
-
product: "jerv",
|
|
19288
|
-
url: "https://get.jerv.ai/jerv/release/version",
|
|
19289
|
-
mover: "the Jerv Gateway deploy (`jerv-gate fetch-release --product jerv`)",
|
|
19290
|
-
remedy: JERV_GATEWAY_REMEDY
|
|
19291
|
-
},
|
|
19292
|
-
"mutmutco/jerv-jervcode": {
|
|
19293
|
-
product: "jervcode",
|
|
19294
|
-
url: "https://get.jerv.ai/jervcode/release/version",
|
|
19295
|
-
// Jerv-JervCode#6456: JervCode's own publish.yml `serve` job moves and proves this pointer.
|
|
19296
|
-
mover: "JervCode's own release (publish.yml `serve` job: `jerv-gate fetch-release --product jervcode` on jerv-central)",
|
|
19297
|
-
remedy: "re-run the `serve` job of the JervCode release's publish.yml run (`gh run rerun <run-id> --job serve --repo mutmutco/Jerv-JervCode`), or `gh workflow run publish.yml --repo mutmutco/Jerv-JervCode -f tag=<tag>`"
|
|
19298
|
-
}
|
|
19299
|
-
};
|
|
19300
19278
|
function servedChannelFor(repo, installer) {
|
|
19301
|
-
|
|
19302
|
-
if (!installer) return known;
|
|
19279
|
+
if (!installer) return void 0;
|
|
19303
19280
|
if (isHubControlRepo(repo)) return void 0;
|
|
19304
|
-
const url = installerVersionUrl(installer);
|
|
19305
19281
|
return {
|
|
19306
19282
|
product: installer.product,
|
|
19307
|
-
url,
|
|
19308
|
-
mover:
|
|
19309
|
-
remedy:
|
|
19283
|
+
url: installerVersionUrl(installer),
|
|
19284
|
+
mover: `this repo's own release (it serves /${installer.product} on its installer host)`,
|
|
19285
|
+
remedy: `re-run this repo's own served-channel publish for ${installer.product}, then \`mmi-cli devops release --resume\``
|
|
19310
19286
|
};
|
|
19311
19287
|
}
|
|
19312
19288
|
var SERVED_CHANNEL_PROBE_ATTEMPTS = 3;
|
|
@@ -44354,6 +44330,15 @@ function neutralizeHubProductBrands(text) {
|
|
|
44354
44330
|
s = s.replace(/\bdesign-system\s+design-system\b/gi, "design-system");
|
|
44355
44331
|
return s.replace(/\s{2,}/g, " ").trim();
|
|
44356
44332
|
}
|
|
44333
|
+
var JERV_SIDE = /\bjerv/i;
|
|
44334
|
+
function namesJervSide(text) {
|
|
44335
|
+
return JERV_SIDE.test(text);
|
|
44336
|
+
}
|
|
44337
|
+
function hubSummaryJervRefusal(lines2) {
|
|
44338
|
+
const bad = lines2.filter(namesJervSide);
|
|
44339
|
+
if (bad.length === 0) return null;
|
|
44340
|
+
return `--announce-summary-file names a Jerv-side project in ${bad.length} line(s) \u2014 an MMI-Hub release note describes MMI-Hub only and never mentions Jerv-side projects; drop or rewrite those lines, then rerun the same command`;
|
|
44341
|
+
}
|
|
44357
44342
|
function escapeMrkdwn(text) {
|
|
44358
44343
|
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
44359
44344
|
}
|
|
@@ -44465,6 +44450,7 @@ async function announceRelease(deps, args) {
|
|
|
44465
44450
|
}
|
|
44466
44451
|
lines2 = curateReleaseNotes(view.body ?? "", MAX_BULLETS, neutralize);
|
|
44467
44452
|
}
|
|
44453
|
+
if (neutralize) lines2 = lines2.filter((l) => !namesJervSide(l));
|
|
44468
44454
|
if (lines2.length === 0) lines2 = ["\u2022 maintenance release \u2014 see the notes for details"];
|
|
44469
44455
|
const text = formatAnnouncement({
|
|
44470
44456
|
repo: args.repo,
|
|
@@ -45224,6 +45210,8 @@ async function runHotfixReleaseLocked(deps, versionInput, options, doctor) {
|
|
|
45224
45210
|
if (lines2.length < 3 || lines2.length > 6) {
|
|
45225
45211
|
throw new Error(`--announce-summary-file must contain 3-6 non-empty LLM-curated lines (found ${lines2.length}) \u2014 see docs/Guides/train-troubleshooting.md#announce-summary-missing`);
|
|
45226
45212
|
}
|
|
45213
|
+
const jerv = hubSummaryJervRefusal(lines2);
|
|
45214
|
+
if (jerv) throw new Error(jerv);
|
|
45227
45215
|
let rangeLog;
|
|
45228
45216
|
try {
|
|
45229
45217
|
rangeLog = await deps.run("git", ["log", "--format=%B", "origin/main..HEAD"]);
|
|
@@ -45976,7 +45964,7 @@ var NODE_VERIFY_TIMEOUT_MS = 5 * 6e4;
|
|
|
45976
45964
|
var NPM_TRAIN_TIMEOUT_MS = 6e4;
|
|
45977
45965
|
var NPM_FOLD_TIMEOUT_MS = NODE_PREPARE_TIMEOUT_MS;
|
|
45978
45966
|
var JERV_GATEWAY_DEPLOY_TIMEOUT_MS = 20 * 6e4;
|
|
45979
|
-
async function announceSummaryRefusal(path2) {
|
|
45967
|
+
async function announceSummaryRefusal(path2, isHub = false) {
|
|
45980
45968
|
let lines2;
|
|
45981
45969
|
try {
|
|
45982
45970
|
lines2 = summaryFileLines(await (0, import_promises10.readFile)(path2, "utf8"));
|
|
@@ -45986,6 +45974,10 @@ async function announceSummaryRefusal(path2) {
|
|
|
45986
45974
|
if (lines2.length < 3 || lines2.length > 6) {
|
|
45987
45975
|
return `release: --announce-summary-file must contain 3-6 non-empty LLM-curated lines (found ${lines2.length}) \u2014 see docs/Guides/train-troubleshooting.md#announce-summary-missing`;
|
|
45988
45976
|
}
|
|
45977
|
+
if (isHub) {
|
|
45978
|
+
const jerv = hubSummaryJervRefusal(lines2);
|
|
45979
|
+
if (jerv) return `release: ${jerv}`;
|
|
45980
|
+
}
|
|
45989
45981
|
try {
|
|
45990
45982
|
await execFileP("git", ["fetch", "origin"], { timeout: GIT_TIMEOUT_MS });
|
|
45991
45983
|
} catch (e) {
|
|
@@ -46603,7 +46595,7 @@ function registerTrainOperationsCommands(program3, runProjectInfoSyncCallback) {
|
|
|
46603
46595
|
isHub ? "release: a new MMI-Hub release requires --announce-summary-file <path> with 3-6 short LLM-curated lines; create the summary file, then rerun the same release command \u2014 see docs/Guides/train-troubleshooting.md#announce-summary-missing" : `release: ${slug} announces to its project release channel, so a new release requires --announce-summary-file <path> with 3-6 short plain-language lines in the project's releaseLanguage (${releaseLanguage2}); create the summary file, then rerun the same release command \u2014 see docs/Guides/train-troubleshooting.md#announce-summary-missing`
|
|
46604
46596
|
);
|
|
46605
46597
|
}
|
|
46606
|
-
const refusal = await announceSummaryRefusal(o.announceSummaryFile);
|
|
46598
|
+
const refusal = await announceSummaryRefusal(o.announceSummaryFile, isHub);
|
|
46607
46599
|
if (refusal) return fail(refusal);
|
|
46608
46600
|
}
|
|
46609
46601
|
}
|
package/package.json
CHANGED