@mutmutco/cli 4.3.4 → 4.3.5
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 +39 -8
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -15375,10 +15375,10 @@ var rollout_plan_default = {
|
|
|
15375
15375
|
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)."
|
|
15376
15376
|
},
|
|
15377
15377
|
baseline: {
|
|
15378
|
-
version: "4.3.
|
|
15379
|
-
tag: "v4.3.
|
|
15380
|
-
commit: "
|
|
15381
|
-
npm: "@mutmutco/cli@4.3.
|
|
15378
|
+
version: "4.3.5",
|
|
15379
|
+
tag: "v4.3.5",
|
|
15380
|
+
commit: "125c3bf83846",
|
|
15381
|
+
npm: "@mutmutco/cli@4.3.5"
|
|
15382
15382
|
},
|
|
15383
15383
|
exitCriterion: "fleet-n-of-n",
|
|
15384
15384
|
hubOnlyShortcut: "forbidden",
|
|
@@ -15395,14 +15395,14 @@ var rollout_plan_default = {
|
|
|
15395
15395
|
repo: "mutmutco/mmi-hub",
|
|
15396
15396
|
role: "canary",
|
|
15397
15397
|
schedule: "train",
|
|
15398
|
-
v3Target: "v4.3.
|
|
15398
|
+
v3Target: "v4.3.5"
|
|
15399
15399
|
}
|
|
15400
15400
|
],
|
|
15401
15401
|
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.",
|
|
15402
15402
|
rollback: {
|
|
15403
15403
|
independent: true,
|
|
15404
|
-
mechanism: "npm dist-tag latest -> 4.3.
|
|
15405
|
-
v3Target: "v4.3.
|
|
15404
|
+
mechanism: "npm dist-tag latest -> 4.3.5 and redeploy the Hub Lambda from tag v4.3.5 (125c3bf83846); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
15405
|
+
v3Target: "v4.3.5 (@mutmutco/cli@4.3.5, tag commit 125c3bf83846 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
15406
15406
|
}
|
|
15407
15407
|
},
|
|
15408
15408
|
{
|
|
@@ -19902,6 +19902,29 @@ async function startReleaseLedger(ledger, anchors, opts = {}) {
|
|
|
19902
19902
|
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
19903
19903
|
}
|
|
19904
19904
|
}
|
|
19905
|
+
function alignmentPrNumbers(note) {
|
|
19906
|
+
return [...new Set([...(note ?? "").matchAll(/\/pull\/(\d+)/g)].map((m) => Number.parseInt(m[1], 10)))];
|
|
19907
|
+
}
|
|
19908
|
+
async function alignmentLegClosedLive(deps, prior) {
|
|
19909
|
+
const leg = prior.phases.alignment;
|
|
19910
|
+
if (leg.state !== "pending") return void 0;
|
|
19911
|
+
const numbers = alignmentPrNumbers(leg.note);
|
|
19912
|
+
if (numbers.length === 0) return void 0;
|
|
19913
|
+
for (const n of numbers) {
|
|
19914
|
+
let state = "";
|
|
19915
|
+
try {
|
|
19916
|
+
state = JSON.parse(await deps.run("gh", ["pr", "view", String(n), "--repo", prior.repo, "--json", "state"])).state;
|
|
19917
|
+
} catch {
|
|
19918
|
+
return void 0;
|
|
19919
|
+
}
|
|
19920
|
+
if (state !== "MERGED") return void 0;
|
|
19921
|
+
}
|
|
19922
|
+
return {
|
|
19923
|
+
state: "complete",
|
|
19924
|
+
note: `alignment: already-merged \u2014 alignment PR ${numbers.map((n) => `#${n}`).join(", ")} merged on GitHub after the train returned; closed live at the next release's pre-flight (#6061)`,
|
|
19925
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
19926
|
+
};
|
|
19927
|
+
}
|
|
19905
19928
|
async function beginReleaseLedger(deps, cwd, targetTag) {
|
|
19906
19929
|
let path2;
|
|
19907
19930
|
try {
|
|
@@ -19924,7 +19947,15 @@ async function beginReleaseLedger(deps, cwd, targetTag) {
|
|
|
19924
19947
|
return { ok: false, error: `the active release ledger at ${path2} is unreadable (${e instanceof Error ? e.message : String(e)}) \u2014 resolve it by hand before starting a release (#5987)` };
|
|
19925
19948
|
}
|
|
19926
19949
|
if (targetTag && prior.tag === targetTag) return { ok: true };
|
|
19927
|
-
|
|
19950
|
+
let derived = deriveReleasePhaseStatus(prior);
|
|
19951
|
+
if (derived.phaseStatus === "phases-pending" && derived.legs.every((l) => l.state !== "pending" || l.phase === "alignment")) {
|
|
19952
|
+
const closed = await alignmentLegClosedLive(deps, prior);
|
|
19953
|
+
if (closed) {
|
|
19954
|
+
prior = { ...prior, phases: { ...prior.phases, alignment: closed }, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
|
|
19955
|
+
atomicWriteJson(path2, prior);
|
|
19956
|
+
derived = deriveReleasePhaseStatus(prior);
|
|
19957
|
+
}
|
|
19958
|
+
}
|
|
19928
19959
|
if (derived.phaseStatus !== "phases-green") {
|
|
19929
19960
|
const open2 = derived.legs.filter((l) => l.state === "pending" || l.state === "failed");
|
|
19930
19961
|
return {
|
package/package.json
CHANGED