@mutmutco/cli 4.3.56 → 4.3.57
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 +21 -15
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -15877,10 +15877,10 @@ var rollout_plan_default = {
|
|
|
15877
15877
|
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)."
|
|
15878
15878
|
},
|
|
15879
15879
|
baseline: {
|
|
15880
|
-
version: "4.3.
|
|
15881
|
-
tag: "v4.3.
|
|
15882
|
-
commit: "
|
|
15883
|
-
npm: "@mutmutco/cli@4.3.
|
|
15880
|
+
version: "4.3.57",
|
|
15881
|
+
tag: "v4.3.57",
|
|
15882
|
+
commit: "b988569fdfe3",
|
|
15883
|
+
npm: "@mutmutco/cli@4.3.57"
|
|
15884
15884
|
},
|
|
15885
15885
|
exitCriterion: "fleet-n-of-n",
|
|
15886
15886
|
hubOnlyShortcut: "forbidden",
|
|
@@ -15897,14 +15897,14 @@ var rollout_plan_default = {
|
|
|
15897
15897
|
repo: "mutmutco/mmi-hub",
|
|
15898
15898
|
role: "canary",
|
|
15899
15899
|
schedule: "train",
|
|
15900
|
-
v3Target: "v4.3.
|
|
15900
|
+
v3Target: "v4.3.57"
|
|
15901
15901
|
}
|
|
15902
15902
|
],
|
|
15903
15903
|
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.",
|
|
15904
15904
|
rollback: {
|
|
15905
15905
|
independent: true,
|
|
15906
|
-
mechanism: "npm dist-tag latest -> 4.3.
|
|
15907
|
-
v3Target: "v4.3.
|
|
15906
|
+
mechanism: "npm dist-tag latest -> 4.3.57 and redeploy the Hub Lambda from tag v4.3.57 (b988569fdfe3); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
15907
|
+
v3Target: "v4.3.57 (@mutmutco/cli@4.3.57, tag commit b988569fdfe3 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
15908
15908
|
}
|
|
15909
15909
|
},
|
|
15910
15910
|
{
|
|
@@ -26539,6 +26539,11 @@ function rcandVersionStep(targets) {
|
|
|
26539
26539
|
function trainPlan(command, options = {}) {
|
|
26540
26540
|
const isHub = options.repo?.toLowerCase() === "mutmutco/mmi-hub";
|
|
26541
26541
|
const isDirect = options.releaseTrack === "direct" || options.releaseTrack === void 0 && isHub;
|
|
26542
|
+
const authority = {
|
|
26543
|
+
label: isHub ? "verify Hub master-admin train authority" : "verify project-admin or master train authority on this repo",
|
|
26544
|
+
command: "mmi-cli oracle org access role <owner/repo> --json",
|
|
26545
|
+
gated: true
|
|
26546
|
+
};
|
|
26542
26547
|
if (command === "rcand") {
|
|
26543
26548
|
if (isDirect) {
|
|
26544
26549
|
return [
|
|
@@ -26546,7 +26551,7 @@ function trainPlan(command, options = {}) {
|
|
|
26546
26551
|
];
|
|
26547
26552
|
}
|
|
26548
26553
|
return [
|
|
26549
|
-
|
|
26554
|
+
authority,
|
|
26550
26555
|
{ label: "verify current branch is development", gated: true },
|
|
26551
26556
|
rcandVersionStep(options),
|
|
26552
26557
|
{ label: "verify registry META for this project", command: "mmi-cli oracle org project get <owner/repo>", gated: true },
|
|
@@ -26559,7 +26564,7 @@ function trainPlan(command, options = {}) {
|
|
|
26559
26564
|
if (command === "release") {
|
|
26560
26565
|
if (isDirect) {
|
|
26561
26566
|
return [
|
|
26562
|
-
|
|
26567
|
+
authority,
|
|
26563
26568
|
{ label: "verify current branch is development", gated: true },
|
|
26564
26569
|
{ label: "verify registry META for this project", command: "mmi-cli oracle org project get <owner/repo>", gated: true },
|
|
26565
26570
|
{ label: "preflight required main secret names", command: "mmi-cli vault secrets preflight --stage main --repo <owner/repo>", gated: true },
|
|
@@ -26574,7 +26579,7 @@ function trainPlan(command, options = {}) {
|
|
|
26574
26579
|
}
|
|
26575
26580
|
if (options.dev) {
|
|
26576
26581
|
return [
|
|
26577
|
-
|
|
26582
|
+
authority,
|
|
26578
26583
|
{ label: "verify current branch is development", gated: true },
|
|
26579
26584
|
{ label: "guard: refuse if origin/rc carries content not in development (a dev -> main release would drop it)", command: "git rev-list --count --right-only --cherry-pick --no-merges origin/development...origin/rc", gated: true },
|
|
26580
26585
|
{ label: "verify registry META for this project", command: "mmi-cli oracle org project get <owner/repo>", gated: true },
|
|
@@ -26590,7 +26595,7 @@ function trainPlan(command, options = {}) {
|
|
|
26590
26595
|
];
|
|
26591
26596
|
}
|
|
26592
26597
|
return [
|
|
26593
|
-
|
|
26598
|
+
authority,
|
|
26594
26599
|
{ label: "verify current branch is rc", gated: true },
|
|
26595
26600
|
{ label: "verify registry META for this project", command: "mmi-cli oracle org project get <owner/repo>", gated: true },
|
|
26596
26601
|
{ label: "preflight required main secret names", command: "mmi-cli vault secrets preflight --stage main --repo <owner/repo>", gated: true },
|
|
@@ -26605,6 +26610,7 @@ function trainPlan(command, options = {}) {
|
|
|
26605
26610
|
];
|
|
26606
26611
|
}
|
|
26607
26612
|
return [
|
|
26613
|
+
authority,
|
|
26608
26614
|
{ label: "verify the fix is merged on development (the only hotfix origin)", gated: true },
|
|
26609
26615
|
// #6068: hotfix start/release run the SAME shared preflight as release/rcand, before any git mutation.
|
|
26610
26616
|
{ label: "verify registry META for this project", command: "mmi-cli oracle org project get <owner/repo>", gated: true },
|
|
@@ -30114,7 +30120,7 @@ function buildSetDeployPatch(_slug, input) {
|
|
|
30114
30120
|
}
|
|
30115
30121
|
var DEPLOY_STAGE_BRANCH = { dev: "development", rc: "rc", main: "main" };
|
|
30116
30122
|
function filelessTransitionGuide(repo, stage) {
|
|
30117
|
-
const authority =
|
|
30123
|
+
const authority = "Authority: a project-admin may complete this for their own repo; master may also do it.";
|
|
30118
30124
|
return [
|
|
30119
30125
|
`Fileless transition for ${repo} (${stage}):`,
|
|
30120
30126
|
` ${authority}`,
|
|
@@ -44573,7 +44579,7 @@ function registerTrainCommandsAndInventory(program3) {
|
|
|
44573
44579
|
}
|
|
44574
44580
|
function registerTrainOperationsCommands(program3, runProjectInfoSyncCallback) {
|
|
44575
44581
|
for (const commandName of ["rcand", "release"]) {
|
|
44576
|
-
const trainCmd = program3.command(commandName).description(`plan ${commandName} train operations; mutations require explicit
|
|
44582
|
+
const trainCmd = program3.command(commandName).description(`plan ${commandName} train operations; mutations require explicit project-admin or master approval`).option("--json", "machine-readable output").option("--watch", "block on the deploy/publish workflow runs and report their outcomes").option("--apply", "execute the guarded repo-authorized train after explicit approval (Hub: master only)").option("--resume", commandName === "rcand" ? "finish a candidate whose immutable public rc tag passed policy but origin/rc was not pushed (#3881)" : "finish a partial release or its protected post-release alignment without re-cutting, republishing, or redeploying (#3851/#3885)").option("--out <path>", "write the terminal result (--apply, --resume, --abort, --retry-publish) to this file as UTF-8 (no BOM) instead of stdout \u2014 the shell-free receipt path (#5983/#6068)");
|
|
44577
44583
|
const RELEASE_ONLY_FLAGS = [
|
|
44578
44584
|
{ flags: "--announce-summary-file <path>", description: "agent-curated 3-6 line release Slack summary; required for a new MMI-Hub --apply (#883/#3901) and for a product repo whose registry META sets `releaseChannel` (#6523), in its `releaseLanguage`; nothing is posted to a project channel without it" },
|
|
44579
44585
|
{ flags: "--ack <shas>", description: "comma-separated dev shas a human verified are in the candidate, overriding the hotfix-coverage guard for a conflicted port whose -x trailer was lost (#958)" },
|
|
@@ -45914,8 +45920,8 @@ ${filelessTransitionGuide(target, o.stage)}`
|
|
|
45914
45920
|
}
|
|
45915
45921
|
return reportWrite("org project set-deploy", res);
|
|
45916
45922
|
});
|
|
45917
|
-
var projectTenantTasks = project.command("tenant-tasks").description("project-admin self-declare of tenant tasks for your own repo
|
|
45918
|
-
projectTenantTasks.command("declare <name>").description(
|
|
45923
|
+
var projectTenantTasks = project.command("tenant-tasks").description("project-admin self-declare of tenant tasks for every stage of your own repo \u2014 new-task-only; editing an existing task stays master-only (`org project set --var tenantTasks=...`)");
|
|
45924
|
+
projectTenantTasks.command("declare <name>").description("register a NEW tenant task \u2014 becomes runnable via `runtime tenant control \u2026 run-task` on its declared dev/rc/main stages. Body shape {service,command[],stages[],timeoutSeconds?,artifact?}; required artifact tasks must carry {artifact} in the command argv.").option("--service <name>", "service in the tenant runtime the task runs in (required unless --var carries it)").option("--command <argv...>", "task command as argv (repeatable; required unless --var carries it)").option("--stages <list>", "comma-separated dev,rc,main stages this task may run on (required unless --var carries it)").option("--timeout-seconds <n>", "optional wall-clock ceiling 1..3600").option("--artifact <none|required>", "artifact contract (default none; required tasks must contain {artifact} in argv)").option("--var <json>", "full task object {service,command[],stages[],timeoutSeconds?,artifact?} \u2014 use instead of the individual flags").option("--repo <owner/repo>", "target repo (defaults to the current repo)").option("--json", "machine-readable output").action(async (name, o) => {
|
|
45919
45925
|
const cfg = await loadConfig();
|
|
45920
45926
|
let target;
|
|
45921
45927
|
try {
|
package/package.json
CHANGED