@mutmutco/cli 4.3.17 → 4.3.19

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 +22 -15
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -6298,11 +6298,11 @@ function decorateAwsModel(entries, registry2, verdicts) {
6298
6298
  }
6299
6299
  var DECLARED_ENTRIES = [
6300
6300
  { name: "mmi-backup (mm-central, mmi-fofu, zuber, mmi-oguz)", cadence: "17 2 * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-backup \u2192 /opt/mmi-control/nightly-backup.sh (verify: mmi-cli devops runtime box get <box> --ssh)" },
6301
- // #3370: the floor under runner-hygiene.yml. That workflow runs ON the runner and needs checkout +
6301
+ // #3370/#6270: the one runner hygiene layer (runner-hygiene.yml was folded in and deleted). A workflow ran ON the runner and needed checkout +
6302
6302
  // setup-node before it can prune, so at 100% it dies at checkout and never prunes — the cleanup is
6303
6303
  // unavailable exactly when it is needed. This one is root cron on the box: no checkout, no node, and
6304
6304
  // a no-op below 90% disk, which is why 15 minutes is affordable.
6305
- { name: "mmi-runner-hygiene-oob (mmi-runner)", cadence: "*/15 * * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-runner-hygiene \u2192 /opt/mmi-control/runner-hygiene-oob.sh; acts only at >=90% disk (verify: mmi-cli devops runtime box get mmi-runner --ssh)" },
6305
+ { name: "mmi-runner-hygiene-oob (mmi-runner)", cadence: "*/15 * * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-runner-hygiene \u2192 /opt/mmi-control/runner-hygiene-oob.sh; routine docker/cache prunes every tick, _work relief only at >=90% disk (verify: mmi-cli devops runtime box get mmi-runner --ssh)" },
6306
6306
  // #4118: Listening + systemd-active ≠ GitHub online after acquirejob 503. restart.conf cannot see
6307
6307
  // it; an Actions workflow on mmi-live cannot heal it when half the fleet is offline. Root cron.
6308
6308
  { name: "mmi-runner-online-reconcile (mmi-runner)", cadence: "*/5 * * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-runner-online \u2192 /opt/mmi-control/runner-online-reconcile.sh; API-offline + _diag acquirejob, max 2 restarts/tick (verify: mmi-cli devops runtime box get mmi-runner --ssh)" },
@@ -6313,7 +6313,7 @@ var DECLARED_ENTRIES = [
6313
6313
  // #3852: the runner /tmp sweep — daily inode hygiene (03:41 UTC), deliberately the one clutter path the
6314
6314
  // out-of-band disk-relief script must never touch. Verified installed 2026-08-18: the cron.d file and
6315
6315
  // flock line match scripts/runner-tmp-sweep.cron exactly.
6316
- { name: "mmi-runner-tmp-sweep (mmi-runner)", cadence: "41 3 * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-runner-tmp-sweep \u2192 /opt/mmi-control/runner-tmp-sweep.sh; daily inode hygiene, flock -n (verify: mmi-cli devops runtime box get mmi-runner --ssh)" }
6316
+ { name: "mmi-runner-tmp-sweep (mmi-runner)", cadence: "41 * * * *", executor: "box cron.d", llm: "no", resolved: "declared", source: "/etc/cron.d/mmi-runner-tmp-sweep \u2192 /opt/mmi-control/runner-tmp-sweep.sh; hourly inode hygiene, 6h age (#6274), flock -n (verify: mmi-cli devops runtime box get mmi-runner --ssh)" }
6317
6317
  // RETIRED 2026-08-18 (MMI-Hub#5234): `zuber-bake` (every 30 min) and `zuber-bake-full` (daily 00:30 UTC)
6318
6318
  // were declared as zuber systemd timers. The ZuberShade full park (#1774, 2026-08-06) stopped them: on
6319
6319
  // the box (46.225.58.31) zuber-bake.timer / zuber-bake-full.timer answer not-found and
@@ -15502,10 +15502,10 @@ var rollout_plan_default = {
15502
15502
  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)."
15503
15503
  },
15504
15504
  baseline: {
15505
- version: "4.3.17",
15506
- tag: "v4.3.17",
15507
- commit: "3b07c941910b",
15508
- npm: "@mutmutco/cli@4.3.17"
15505
+ version: "4.3.19",
15506
+ tag: "v4.3.19",
15507
+ commit: "5776052e13af",
15508
+ npm: "@mutmutco/cli@4.3.19"
15509
15509
  },
15510
15510
  exitCriterion: "fleet-n-of-n",
15511
15511
  hubOnlyShortcut: "forbidden",
@@ -15522,14 +15522,14 @@ var rollout_plan_default = {
15522
15522
  repo: "mutmutco/mmi-hub",
15523
15523
  role: "canary",
15524
15524
  schedule: "train",
15525
- v3Target: "v4.3.17"
15525
+ v3Target: "v4.3.19"
15526
15526
  }
15527
15527
  ],
15528
15528
  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.",
15529
15529
  rollback: {
15530
15530
  independent: true,
15531
- mechanism: "npm dist-tag latest -> 4.3.17 and redeploy the Hub Lambda from tag v4.3.17 (3b07c941910b); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15532
- v3Target: "v4.3.17 (@mutmutco/cli@4.3.17, tag commit 3b07c941910b \u2014 last known-good release carrying the repo-index v4-only contract)"
15531
+ mechanism: "npm dist-tag latest -> 4.3.19 and redeploy the Hub Lambda from tag v4.3.19 (5776052e13af); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
15532
+ v3Target: "v4.3.19 (@mutmutco/cli@4.3.19, tag commit 5776052e13af \u2014 last known-good release carrying the repo-index v4-only contract)"
15533
15533
  }
15534
15534
  },
15535
15535
  {
@@ -23393,7 +23393,7 @@ var GATE_GREEN_ON_BASE_LABEL = "gate is green on the default branch (#3819)";
23393
23393
  var REQUIRED_CONTEXTS_EMITTED_LABEL = "required check contexts match PR workflows";
23394
23394
  var TAG_ADDRESSABLE_CONTEXTS_LABEL = "rc/main required contexts are tag-addressable (#3880)";
23395
23395
  var RELEASE_BRANCH_REACHABLE_LABEL = "rc/main required contexts are reachable from a release-base head (#5193)";
23396
- var RECONCILE_SEED_BRANCH_PREFIX = "ci-reconcile-ruleset-ref";
23396
+ var RECONCILE_SEED_BRANCH_PREFIX = "bootstrap-seed-ruleset-ref";
23397
23397
  function slugFromRepo(repo) {
23398
23398
  return (repo.includes("/") ? repo.split("/")[1] : repo).toLowerCase();
23399
23399
  }
@@ -31891,7 +31891,8 @@ var LOOP_PLAYBOOKS = {
31891
31891
  { label: "Apply the repository test policy, then build the touched package", command: "mmi-cli tests policy --base origin/development && npm run build" },
31892
31892
  { label: "Publish the branch", command: "git push origin <branch>:<branch>" },
31893
31893
  { label: "Open the development-base PR", command: 'mmi-cli devops pr create --title "<title>" --body-file .jerv/PR_BODY.md --base development' },
31894
- { label: "Wait for checks and land to development", command: "mmi-cli devops pr checks-wait <PR-number> && mmi-cli devops pr land <PR-number>" },
31894
+ { label: "Post the review verdict (pr merge / pr land refuse an unreviewed PR, #6255)", command: 'mmi-cli devops pr review-verdict <PR-number> --repo <owner/repo> --verdict PROCEED --scope "<one line>" --risk "<one line>" --reviewer <seat-or-model-id>' },
31895
+ { label: "Land to development (waits for checks itself and demands the review verdict)", command: "mmi-cli devops pr land <PR-number>" },
31895
31896
  { label: "Release only after the gated train is authorized", command: "mmi-cli devops release --apply" },
31896
31897
  // #5552: learning-tagged filings are cloud-agent owned — file and return to the current task.
31897
31898
  { label: "Learning reports are fire-and-forget (file, then return to the current task \u2014 never claim/poll/duplicate the learning issue)", command: 'mmi-cli learning report --title "<one-line>" --body "<what hurt>"' }
@@ -31912,15 +31913,14 @@ var LOOP_PLAYBOOKS = {
31912
31913
  steps: [
31913
31914
  { label: "Publish the branch", command: "git push origin <branch>:<branch>" },
31914
31915
  { label: "Open the development-base PR", command: 'mmi-cli devops pr create --title "<title>" --body-file .jerv/PR_BODY.md --base development' },
31915
- { label: "Wait for CI checks", command: "mmi-cli devops pr checks-wait <PR-number>" },
31916
- { label: "Land the PR (merge to development)", command: "mmi-cli devops pr land <PR-number>" }
31916
+ { label: "Land the PR (merge to development \u2014 waits for checks itself and demands the review verdict)", command: "mmi-cli devops pr land <PR-number>" }
31917
31917
  ]
31918
31918
  },
31919
31919
  "hotfix": {
31920
31920
  title: "Hotfix",
31921
31921
  steps: [
31922
31922
  { label: "Create the main-base hotfix PR from every already-merged fix this cycle carries", command: "mmi-cli devops hotfix start --from <pr#|sha>[,<pr#|sha>...]" },
31923
- { label: "Wait for the hotfix PR checks", command: "mmi-cli devops pr checks-wait <PR-number>" },
31923
+ { label: "Merge the main-base PR (waits for checks itself and demands the review verdict)", command: "mmi-cli devops pr merge <PR-number> --squash" },
31924
31924
  { label: "After the PR is merged, run the gated release", command: "mmi-cli devops hotfix release <vX.Y.Z> --carries <pr#|sha>[,<pr#|sha>...]" }
31925
31925
  ]
31926
31926
  }
@@ -44446,6 +44446,13 @@ ${filelessTransitionGuide(target, o.stage)}`
44446
44446
  return fail(e.message);
44447
44447
  }
44448
44448
  const res = await setDeployCoords(slug, body, registryClientDeps(cfg));
44449
+ if (res.ok && target.includes("/")) {
44450
+ const reconcile = await tenantReconcile({ repo: target, stage: o.stage }, registryClientDeps(cfg));
44451
+ if (!reconcile.ok) {
44452
+ const detail = reconcile.body?.error ?? reconcile.error ?? `HTTP ${reconcile.status}`;
44453
+ console.error(`org project set-deploy: tenant-reconcile dispatch refused (${detail}) \u2014 run \`mmi-cli devops runtime tenant reconcile ${target} ${o.stage}\` by hand`);
44454
+ }
44455
+ }
44449
44456
  return reportWrite("org project set-deploy", res);
44450
44457
  });
44451
44458
  var projectTenantTasks = project.command("tenant-tasks").description("project-admin self-declare of tenant tasks for your own repo's dev/rc stages (#5316, #5308) \u2014 new-task-only, dev/rc-only; editing an existing task or declaring a main-stage task stays master-only (`org project set --var tenantTasks=...`)");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.3.17",
3
+ "version": "4.3.19",
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",