@mutmutco/cli 4.5.165 → 4.5.166
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 +17 -8
- package/dist/runbook-sweep.cjs +10 -1
- package/package.json +1 -1
package/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.
|
|
19066
|
-
tag: "v4.5.
|
|
19067
|
-
commit: "
|
|
19068
|
-
npm: "@mutmutco/cli@4.5.
|
|
19074
|
+
version: "4.5.166",
|
|
19075
|
+
tag: "v4.5.166",
|
|
19076
|
+
commit: "4dbaaf17ac67",
|
|
19077
|
+
npm: "@mutmutco/cli@4.5.166"
|
|
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.
|
|
19094
|
+
v3Target: "v4.5.166"
|
|
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.
|
|
19092
|
-
v3Target: "v4.5.
|
|
19100
|
+
mechanism: "npm dist-tag latest -> 4.5.166 and redeploy the Hub Lambda from tag v4.5.166 (4dbaaf17ac67); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
19101
|
+
v3Target: "v4.5.166 (@mutmutco/cli@4.5.166, tag commit 4dbaaf17ac67 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
19093
19102
|
}
|
|
19094
19103
|
},
|
|
19095
19104
|
{
|
package/dist/runbook-sweep.cjs
CHANGED
|
@@ -813,6 +813,15 @@ function checkRunbookClaims(root, docs, deps) {
|
|
|
813
813
|
function checkRunbookCoverage(docs, base, git) {
|
|
814
814
|
const changed = git(["diff", "--name-only", `${base}...HEAD`]).split(/\r?\n/).filter(Boolean);
|
|
815
815
|
const findings = [];
|
|
816
|
+
const usesOnly = /* @__PURE__ */ new Map();
|
|
817
|
+
const changesOnlyUses = (path2) => {
|
|
818
|
+
if (!usesOnly.has(path2)) {
|
|
819
|
+
const diff = git(["diff", "-U0", `${base}...HEAD`, "--", path2]);
|
|
820
|
+
const content = diff.split(/\r?\n/).filter((line) => /^[+-]/.test(line) && !/^(\+\+\+|---)/.test(line));
|
|
821
|
+
usesOnly.set(path2, content.length > 0 && content.every((line) => /^[+-]\s*(-\s+)?uses:\s*\S/.test(line)));
|
|
822
|
+
}
|
|
823
|
+
return usesOnly.get(path2);
|
|
824
|
+
};
|
|
816
825
|
const matches = (glob, path2) => {
|
|
817
826
|
const pattern = glob.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*\//g, "\0").replace(/\*\*/g, "").replace(/\*/g, "[^/]*").replace(/\?/g, "[^/]").replaceAll("\0", "(?:.*/)?").replaceAll("", ".*");
|
|
818
827
|
return new RegExp(`^${pattern}$`).test(path2);
|
|
@@ -830,7 +839,7 @@ function checkRunbookCoverage(docs, base, git) {
|
|
|
830
839
|
const end = headings.slice(i + 1).find((h) => h.level <= heading.level)?.start ?? lines.length + 1;
|
|
831
840
|
const markerEnd = headings[i + 1]?.start ?? end;
|
|
832
841
|
const globs = lines.slice(heading.start, markerEnd - 1).flatMap((text) => /<!--\s*runbook-covers:\s*(.*?)\s*-->/.exec(text)?.[1].split(",").map((s) => s.trim()) ?? []);
|
|
833
|
-
const affected = changed.filter((path2) => globs.some((glob) => matches(glob, path2)));
|
|
842
|
+
const affected = changed.filter((path2) => globs.some((glob) => matches(glob, path2)) && !changesOnlyUses(path2));
|
|
834
843
|
if (affected.length && !ranges.some((r) => r.count > 0 && r.start < end && r.start + r.count > heading.start)) {
|
|
835
844
|
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 });
|
|
836
845
|
}
|
package/package.json
CHANGED