@mutmutco/codex-plugin 4.5.165 → 4.5.167

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.5.165",
3
+ "version": "4.5.167",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/cli/dist/main.cjs CHANGED
@@ -16624,6 +16624,15 @@ function localRunbookBase(refExists) {
16624
16624
  function checkRunbookCoverage(docs, base, git3) {
16625
16625
  const changed = git3(["diff", "--name-only", `${base}...HEAD`]).split(/\r?\n/).filter(Boolean);
16626
16626
  const findings = [];
16627
+ const usesOnly = /* @__PURE__ */ new Map();
16628
+ const changesOnlyUses = (path2) => {
16629
+ if (!usesOnly.has(path2)) {
16630
+ const diff = git3(["diff", "-U0", `${base}...HEAD`, "--", path2]);
16631
+ const content = diff.split(/\r?\n/).filter((line) => /^[+-]/.test(line) && !/^(\+\+\+|---)/.test(line));
16632
+ usesOnly.set(path2, content.length > 0 && content.every((line) => /^[+-]\s*(-\s+)?uses:\s*\S/.test(line)));
16633
+ }
16634
+ return usesOnly.get(path2);
16635
+ };
16627
16636
  const matches = (glob, path2) => {
16628
16637
  const pattern = glob.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*\//g, "\0").replace(/\*\*/g, "").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]").replaceAll("\0", "(?:.*/)?").replaceAll("", ".*");
16629
16638
  return new RegExp(`^${pattern}$`).test(path2);
@@ -16641,7 +16650,7 @@ function checkRunbookCoverage(docs, base, git3) {
16641
16650
  const end = headings.slice(i + 1).find((h) => h.level <= heading.level)?.start ?? lines2.length + 1;
16642
16651
  const markerEnd = headings[i + 1]?.start ?? end;
16643
16652
  const globs = lines2.slice(heading.start, markerEnd - 1).flatMap((text) => /<!--\s*runbook-covers:\s*(.*?)\s*-->/.exec(text)?.[1].split(",").map((s) => s.trim()) ?? []);
16644
- const affected = changed.filter((path2) => globs.some((glob) => matches(glob, path2)));
16653
+ const affected = changed.filter((path2) => globs.some((glob) => matches(glob, path2)) && !changesOnlyUses(path2));
16645
16654
  if (affected.length && !ranges.some((r) => r.count > 0 && r.start < end && r.start + r.count > heading.start)) {
16646
16655
  findings.push({ kind: "runbook-section-stale", doc, line: heading.start, detail: `${heading.title}: changed ${affected.join(", ")}; update this section or declare Runbook-Unaffected: <reason>`, section: { heading: heading.title, level: heading.level, startLine: heading.start, endLine: end - 1, covers: globs }, sources: affected });
16647
16656
  }
@@ -19062,10 +19071,10 @@ var rollout_plan_default = {
19062
19071
  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)."
19063
19072
  },
19064
19073
  baseline: {
19065
- version: "4.5.165",
19066
- tag: "v4.5.165",
19067
- commit: "e50afbd193c3",
19068
- npm: "@mutmutco/cli@4.5.165"
19074
+ version: "4.5.167",
19075
+ tag: "v4.5.167",
19076
+ commit: "75accc753c8f",
19077
+ npm: "@mutmutco/cli@4.5.167"
19069
19078
  },
19070
19079
  exitCriterion: "fleet-n-of-n",
19071
19080
  hubOnlyShortcut: "forbidden",
@@ -19082,14 +19091,14 @@ var rollout_plan_default = {
19082
19091
  repo: "mutmutco/mmi-hub",
19083
19092
  role: "canary",
19084
19093
  schedule: "train",
19085
- v3Target: "v4.5.165"
19094
+ v3Target: "v4.5.167"
19086
19095
  }
19087
19096
  ],
19088
19097
  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.",
19089
19098
  rollback: {
19090
19099
  independent: true,
19091
- mechanism: "npm dist-tag latest -> 4.5.165 and redeploy the Hub Lambda from tag v4.5.165 (e50afbd193c3); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19092
- v3Target: "v4.5.165 (@mutmutco/cli@4.5.165, tag commit e50afbd193c3 \u2014 last known-good release carrying the repo-index v4-only contract)"
19100
+ mechanism: "npm dist-tag latest -> 4.5.167 and redeploy the Hub Lambda from tag v4.5.167 (75accc753c8f); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
19101
+ v3Target: "v4.5.167 (@mutmutco/cli@4.5.167, tag commit 75accc753c8f \u2014 last known-good release carrying the repo-index v4-only contract)"
19093
19102
  }
19094
19103
  },
19095
19104
  {
@@ -23249,7 +23258,6 @@ async function retireRcRuntime(deps, ctx, model, deployStatus, releasedRcSha) {
23249
23258
  }
23250
23259
  async function runTenantRedeploy(deps, options) {
23251
23260
  const { stage } = options;
23252
- const ref = options.ref ?? (stage === "dev" ? "development" : stage);
23253
23261
  const watch = options.watch ?? false;
23254
23262
  const repo = options.repo;
23255
23263
  const [owner, name] = repo.split("/");
@@ -23261,6 +23269,7 @@ async function runTenantRedeploy(deps, options) {
23261
23269
  const ctx = { repo, owner, slug: name.toLowerCase(), login };
23262
23270
  const meta = requireProjectMetaForTrain(await loadProjectMeta(deps, ctx), repo);
23263
23271
  const deployModel = requireDeployModel(meta, repo);
23272
+ const ref = options.ref ?? (stage === "dev" || stage === "main" && meta.releaseTrack === "single" ? "development" : stage);
23264
23273
  if (!isCentralDispatchModel(deployModel)) {
23265
23274
  throw new Error(`${repo} is ${deployModel}, not a centrally-dispatched model (tenant-container/solo-container/static-cdn) \u2014 there is no central tenant-deploy run to retry (its deploy fires from its own workflow)`);
23266
23275
  }
@@ -57393,7 +57402,7 @@ tenant.command("status <owner/repo> <stage>").description("read tenant runtime r
57393
57402
  console.log(JSON.stringify(result, null, 2));
57394
57403
  if (result.publicProbe?.ok === false || result.edgeCertificate?.missing) process.exitCode = 1;
57395
57404
  });
57396
- tenant.command("redeploy <owner/repo> <stage>").description("re-dispatch the central tenant-deploy.yml for an already-promoted ref (no re-tag/merge); train-authority gated").option("--ref <ref>", "ref to deploy (defaults to the stage branch rc/main, or `development` for dev \u2014 the promoted/staging ref)").option("--watch", "block on the dispatched run and report its outcome (gh run watch --exit-status)").option("--json", "machine-readable output").action(async (repo, stage, o) => {
57405
+ tenant.command("redeploy <owner/repo> <stage>").description("re-dispatch the central tenant-deploy.yml for an already-promoted ref (no re-tag/merge); train-authority gated").option("--ref <ref>", "ref to deploy (defaults to the stage branch rc/main, or `development` for dev and for a single-track repo's main)").option("--watch", "block on the dispatched run and report its outcome (gh run watch --exit-status)").option("--json", "machine-readable output").action(async (repo, stage, o) => {
57397
57406
  if (stage !== "dev" && stage !== "rc" && stage !== "main") return fail("runtime tenant redeploy: <stage> must be dev, rc, or main");
57398
57407
  try {
57399
57408
  const raw = await runTenantRedeploy(trainApplyDeps(), { repo, stage, ref: o.ref, watch: o.watch });
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.165",
3
+ "version": "4.5.167",
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.5.165",
3
+ "version": "4.5.167",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",