@mutmutco/cli 4.4.0 → 4.4.1

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 +37 -11
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -15870,10 +15870,10 @@ var rollout_plan_default = {
15870
15870
  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)."
15871
15871
  },
15872
15872
  baseline: {
15873
- version: "4.4.0",
15874
- tag: "v4.4.0",
15875
- commit: "8e1fae5ff484",
15876
- npm: "@mutmutco/cli@4.4.0"
15873
+ version: "4.4.1",
15874
+ tag: "v4.4.1",
15875
+ commit: "a4bb2ac4bdb4",
15876
+ npm: "@mutmutco/cli@4.4.1"
15877
15877
  },
15878
15878
  exitCriterion: "fleet-n-of-n",
15879
15879
  hubOnlyShortcut: "forbidden",
@@ -15890,14 +15890,14 @@ var rollout_plan_default = {
15890
15890
  repo: "mutmutco/mmi-hub",
15891
15891
  role: "canary",
15892
15892
  schedule: "train",
15893
- v3Target: "v4.4.0"
15893
+ v3Target: "v4.4.1"
15894
15894
  }
15895
15895
  ],
15896
15896
  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.",
15897
15897
  rollback: {
15898
15898
  independent: true,
15899
- mechanism: "npm dist-tag latest -> 4.4.0 and redeploy the Hub Lambda from tag v4.4.0 (8e1fae5ff484); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15900
- v3Target: "v4.4.0 (@mutmutco/cli@4.4.0, tag commit 8e1fae5ff484 \u2014 last known-good release carrying the repo-index v4-only contract)"
15899
+ mechanism: "npm dist-tag latest -> 4.4.1 and redeploy the Hub Lambda from tag v4.4.1 (a4bb2ac4bdb4); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15900
+ v3Target: "v4.4.1 (@mutmutco/cli@4.4.1, tag commit a4bb2ac4bdb4 \u2014 last known-good release carrying the repo-index v4-only contract)"
15901
15901
  }
15902
15902
  },
15903
15903
  {
@@ -21628,6 +21628,9 @@ async function supersedeContentCausedDeployLeg(deps, cwd) {
21628
21628
  function supersedeablePublishLegShape(rec) {
21629
21629
  return rec.state === "failed" || rec.state === "pending" && rec.runId == null;
21630
21630
  }
21631
+ function deferredGatewayDeployLegShape(rec) {
21632
+ return rec.state === "pending" && rec.runId == null && rec.workflow === "jerv-gateway";
21633
+ }
21631
21634
  async function supersedeContentCausedPublishLeg(deps, cwd) {
21632
21635
  const path2 = releaseLedgerPath(cwd);
21633
21636
  return withFileLock(`${path2}.lock`, { label: "release ledger" }, async () => {
@@ -21653,7 +21656,9 @@ async function supersedeContentCausedPublishLeg(deps, cwd) {
21653
21656
  const closed = await alignmentLegClosedLive(deps, prior);
21654
21657
  if (closed) phases.alignment = closed;
21655
21658
  }
21656
- const unresolved = ["promotion", "ordinaryCi", "githubRelease", "deploy", "alignment"].filter((phase) => phases[phase].state === "pending" || phases[phase].state === "failed");
21659
+ let gatewayDeploy;
21660
+ const deferredGateway = isJervHubRepo(prior.repo) && deferredGatewayDeployLegShape(phases.deploy);
21661
+ const unresolved = ["promotion", "ordinaryCi", "githubRelease", "deploy", "alignment"].filter((phase) => !(phase === "deploy" && deferredGateway)).filter((phase) => phases[phase].state === "pending" || phases[phase].state === "failed");
21657
21662
  if (unresolved.length > 0) {
21658
21663
  throw new Error(
21659
21664
  `release --supersede-publish: ${prior.tag} has unresolved legs besides publish (${unresolved.map((p) => `${p}=${phases[p].state}`).join(", ")}) \u2014 the supersession closes only the publish leg of an otherwise-complete release; resolve those first, nothing was written (#6638)`
@@ -21706,6 +21711,25 @@ async function supersedeContentCausedPublishLeg(deps, cwd) {
21706
21711
  note: `closed the deleted ${prior.tag} publish failure by archiving its ledger after origin and GitHub both proved absent; start a fresh release train to carry the cause fix`
21707
21712
  };
21708
21713
  }
21714
+ if (deferredGateway) {
21715
+ const dispatch = await appendJervGatewayReleaseDeploy(
21716
+ deps,
21717
+ prior.repo,
21718
+ prior.tag,
21719
+ prior.tagSha,
21720
+ { note: `Jerv Gateway operator-host deploy leg for ${prior.tag} run during the publish supersession`, deployStatus: "success" }
21721
+ );
21722
+ phases.deploy = {
21723
+ ...phaseEntry(deployPhaseInput("registry-publish", dispatch, { releaseSha: prior.tagSha })),
21724
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
21725
+ };
21726
+ if (dispatch.deployStatus !== "success") {
21727
+ throw new Error(
21728
+ `release --supersede-publish: the deferred ${prior.tag} Jerv Gateway operator-host deploy leg did not verify (${dispatch.note}) \u2014 run \`scripts/jerv-gateway-release-deploy.sh --tag ${prior.tag}\` to a healthy receipt naming the released tag and commit, then retry; nothing was written (#6742)`
21729
+ );
21730
+ }
21731
+ gatewayDeploy = { workflow: "jerv-gateway", state: "complete", note: dispatch.note };
21732
+ }
21709
21733
  const note = `superseded: content-caused publish failure on the immutable promoted ${prior.tag} \u2014 the cause fix rides the next patch train (master-approved closure, #6638)`;
21710
21734
  atomicWriteJson(path2, {
21711
21735
  ...prior,
@@ -21720,7 +21744,8 @@ async function supersedeContentCausedPublishLeg(deps, cwd) {
21720
21744
  repo: prior.repo,
21721
21745
  tag: prior.tag,
21722
21746
  tagSha: prior.tagSha,
21723
- note: `closed the ${prior.tag} publish leg as superseded (skipped) \u2014 the ledger is phases-green; rerun the train doctor to confirm, then run the next patch train (hotfix or release) to carry the cause fix`
21747
+ note: `closed the ${prior.tag} publish leg as superseded (skipped) \u2014 the ledger is phases-green; rerun the train doctor to confirm, then run the next patch train (hotfix or release) to carry the cause fix`,
21748
+ ...gatewayDeploy ? { gatewayDeploy } : {}
21724
21749
  };
21725
21750
  });
21726
21751
  }
@@ -44613,7 +44638,8 @@ function renderReleaseSupersedeDeploy(r) {
44613
44638
  return `mmi-cli devops release --supersede-deploy --apply: ${r.repo} ${r.tag} (${r.tagSha.slice(0, 12)}) \u2014 ${r.note}`;
44614
44639
  }
44615
44640
  function renderReleaseSupersedePublish(r) {
44616
- return `mmi-cli devops release --supersede-publish --apply: ${r.repo} ${r.tag} (${r.tagSha.slice(0, 12)}) \u2014 ${r.note}`;
44641
+ const base = `mmi-cli devops release --supersede-publish --apply: ${r.repo} ${r.tag} (${r.tagSha.slice(0, 12)}) \u2014 ${r.note}`;
44642
+ return r.gatewayDeploy ? `${base}; the deferred Jerv Gateway operator-host deploy leg was run and verified during the supersession (jerv-gateway=complete): ${r.gatewayDeploy.note}` : base;
44617
44643
  }
44618
44644
  function renderReleasePublishRetry(r) {
44619
44645
  return `mmi-cli devops release --retry-publish: ${r.repo} ${r.tag} (${r.tagSha.slice(0, 12)}) \u2014 ${r.note}; ${r.runUrl}`;
@@ -44845,7 +44871,7 @@ function registerTrainOperationsCommands(program3, runProjectInfoSyncCallback) {
44845
44871
  { flags: "--dev", description: "full-track repos release development -> main directly, skipping rc (refuses if rc carries content not in development; no-op on direct-track repos) (#1062)" },
44846
44872
  { flags: "--abort", description: "with --apply, delete only a proven unpublished failed release candidate on any registered deploy model and restore local main for a same-version recut (#3944/#5650/#5657)" },
44847
44873
  { flags: "--supersede-deploy", description: "with --apply, master-approved closure of a content-caused failed deploy leg on a PUBLISHED release whose immutable tag can never deploy green \u2014 the next patch train then carries the fix (#6553)" },
44848
- { flags: "--supersede-publish", description: "with --apply, master-approved closure of a content-caused failed publish leg on a fully PROMOTED release whose immutable tag can never publish green \u2014 the next patch train then carries the fix (#6638)" },
44874
+ { flags: "--supersede-publish", description: "with --apply, master-approved closure of a content-caused failed publish leg on a fully PROMOTED release whose immutable tag can never publish green \u2014 a deferred Jerv-Hub operator-host Gateway deploy leg is run and verified as part of the closure \u2014 the next patch train then carries the fix (#6638/#6742)" },
44849
44875
  { flags: "--retry-publish <run-id>", description: "with --apply, retry one proven failed or cancelled Hub publish release run (#3949/#5797)" }
44850
44876
  ];
44851
44877
  for (const f of RELEASE_ONLY_FLAGS) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.4.0",
3
+ "version": "4.4.1",
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",