@mutmutco/cli 4.5.53 → 4.5.55
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 +30 -9
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -17043,10 +17043,10 @@ var rollout_plan_default = {
|
|
|
17043
17043
|
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)."
|
|
17044
17044
|
},
|
|
17045
17045
|
baseline: {
|
|
17046
|
-
version: "4.5.
|
|
17047
|
-
tag: "v4.5.
|
|
17048
|
-
commit: "
|
|
17049
|
-
npm: "@mutmutco/cli@4.5.
|
|
17046
|
+
version: "4.5.55",
|
|
17047
|
+
tag: "v4.5.55",
|
|
17048
|
+
commit: "ed1c9586cbdd",
|
|
17049
|
+
npm: "@mutmutco/cli@4.5.55"
|
|
17050
17050
|
},
|
|
17051
17051
|
exitCriterion: "fleet-n-of-n",
|
|
17052
17052
|
hubOnlyShortcut: "forbidden",
|
|
@@ -17063,14 +17063,14 @@ var rollout_plan_default = {
|
|
|
17063
17063
|
repo: "mutmutco/mmi-hub",
|
|
17064
17064
|
role: "canary",
|
|
17065
17065
|
schedule: "train",
|
|
17066
|
-
v3Target: "v4.5.
|
|
17066
|
+
v3Target: "v4.5.55"
|
|
17067
17067
|
}
|
|
17068
17068
|
],
|
|
17069
17069
|
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.",
|
|
17070
17070
|
rollback: {
|
|
17071
17071
|
independent: true,
|
|
17072
|
-
mechanism: "npm dist-tag latest -> 4.5.
|
|
17073
|
-
v3Target: "v4.5.
|
|
17072
|
+
mechanism: "npm dist-tag latest -> 4.5.55 and redeploy the Hub Lambda from tag v4.5.55 (ed1c9586cbdd); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
17073
|
+
v3Target: "v4.5.55 (@mutmutco/cli@4.5.55, tag commit ed1c9586cbdd \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
17074
17074
|
}
|
|
17075
17075
|
},
|
|
17076
17076
|
{
|
|
@@ -26320,6 +26320,13 @@ Nothing was written. Inspect ${ledger.path} (or clear it only after proving the
|
|
|
26320
26320
|
dispatch2.deployStatus = "success";
|
|
26321
26321
|
dispatch2.note = `historical ${deployModel} deploy/publish status: success (re-verified by the recorded run)`;
|
|
26322
26322
|
}
|
|
26323
|
+
if (validSuiteCutContext(ctx.repo, deps.suiteCut) && ctx.slug !== "mmi-katip") {
|
|
26324
|
+
phaseInputs.deploy = { state: "skipped", sha: tagSha, note: "suite bundle-only: live backend not deployed (#7263)" };
|
|
26325
|
+
if (dispatch2.deployStatus !== "failure" && (phaseInputs.publish.state === "complete" || phaseInputs.publish.state === "skipped")) {
|
|
26326
|
+
dispatch2.deployStatus = "success";
|
|
26327
|
+
dispatch2.note = `${dispatch2.note}; suite bundle-only: no main deploy by design (#7263), publish green`;
|
|
26328
|
+
}
|
|
26329
|
+
}
|
|
26323
26330
|
if (persisted) {
|
|
26324
26331
|
if (persisted.phases.deploy.superseded !== true) {
|
|
26325
26332
|
await recordPhase(ledger, deps, anchors, "deploy", phaseEntry(phaseInputs.deploy), { strict: true, landed: "the verified GitHub Release and origin/main at the immutable tag SHA" });
|
|
@@ -35267,11 +35274,13 @@ async function suiteRelease(deps, ownerGo) {
|
|
|
35267
35274
|
continue;
|
|
35268
35275
|
}
|
|
35269
35276
|
const [sha, live, rcHead] = await Promise.all([deps.tagSha(member.repo, member.tag), deps.backend({ repo: member.repo, id: member.id, bundles: {} }), deps.head(member.repo, "rc")]);
|
|
35270
|
-
|
|
35277
|
+
let rcAligned = false;
|
|
35278
|
+
if (!member.released && !member.releasedAs && rcHead && rcHead.toLowerCase() !== member.sha?.toLowerCase()) {
|
|
35271
35279
|
const shipped = await deps.shippedTag(member.repo, member.sha);
|
|
35272
35280
|
if (shipped) member.releasedAs = shipped;
|
|
35281
|
+
else rcAligned = await deps.sameContent(member.repo, member.sha, rcHead);
|
|
35273
35282
|
}
|
|
35274
|
-
if (!sha || sha.toLowerCase() !== member.sha?.toLowerCase() || !member.released && !member.releasedAs && rcHead?.toLowerCase() !== member.sha?.toLowerCase()) throw new Error(`${member.repo}: rc tag/branch ${member.tag} changed after the cut; release refused`);
|
|
35283
|
+
if (!sha || sha.toLowerCase() !== member.sha?.toLowerCase() || !member.released && !member.releasedAs && !rcAligned && rcHead?.toLowerCase() !== member.sha?.toLowerCase()) throw new Error(`${member.repo}: rc tag/branch ${member.tag} changed after the cut; release refused`);
|
|
35275
35284
|
const katipReleaseSha = member.id === "katip" ? await deps.tagSha(member.repo, member.releasedAs ?? suiteReleaseTag(member.tag)) : void 0;
|
|
35276
35285
|
const expectedBackend = member.id === "katip" && member.released ? member.backendAfterRelease ?? katipReleaseSha : member.backend;
|
|
35277
35286
|
if (live.version !== expectedBackend && !(member.id === "katip" && !member.released && katipReleaseSha && live.version === katipReleaseSha))
|
|
@@ -45346,6 +45355,17 @@ function suiteTrainIo(root, summaryFile) {
|
|
|
45346
45355
|
await exec("git", ["fetch", "origin", "--tags"], target);
|
|
45347
45356
|
return releaseTagsFrom(await exec("git", ["tag", "--contains", rcSha, "--list", "v*"], target))[0];
|
|
45348
45357
|
};
|
|
45358
|
+
const sameContent2 = async (repo, candidate, head) => {
|
|
45359
|
+
const target = await checkout(repo);
|
|
45360
|
+
await exec("git", ["fetch", "origin", "--tags"], target);
|
|
45361
|
+
try {
|
|
45362
|
+
await exec("git", ["merge-base", "--is-ancestor", candidate, head], target);
|
|
45363
|
+
} catch {
|
|
45364
|
+
return false;
|
|
45365
|
+
}
|
|
45366
|
+
const [a, b] = (await exec("git", ["rev-parse", `${candidate}^{tree}`, `${head}^{tree}`], target)).trim().split(/\s+/);
|
|
45367
|
+
return !!a && a === b;
|
|
45368
|
+
};
|
|
45349
45369
|
const rcRuns = async () => JSON.parse(await gh(["run", "list", "--repo", "mutmutco/MMI-Hub", "--workflow", "module-rc-publish.yml", "--event", "workflow_dispatch", "--limit", "100", "--json", "databaseId,displayTitle,conclusion,status,createdAt"]));
|
|
45350
45370
|
const watchRcRun = async (title, fields, reuse) => {
|
|
45351
45371
|
const since = Date.now() - 1e4;
|
|
@@ -45433,6 +45453,7 @@ function suiteTrainIo(root, summaryFile) {
|
|
|
45433
45453
|
},
|
|
45434
45454
|
release,
|
|
45435
45455
|
shippedTag,
|
|
45456
|
+
sameContent: sameContent2,
|
|
45436
45457
|
announce: async (record) => {
|
|
45437
45458
|
if (!summaryFile) throw new Error("suite announcement requires --announce-summary-file; outcome was not posted");
|
|
45438
45459
|
const result = await trainApplyDeps().announce?.({ repo: SUITE_REPO, tag: record.leadRcTag.replace(/-rc\.\d+$/, ""), summaryFile });
|
package/package.json
CHANGED