@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.
- package/.codex-plugin/plugin.json +1 -1
- package/cli/dist/main.cjs +19 -10
- package/cli/package.json +1 -1
- package/package.json +1 -1
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.
|
|
19066
|
-
tag: "v4.5.
|
|
19067
|
-
commit: "
|
|
19068
|
-
npm: "@mutmutco/cli@4.5.
|
|
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.
|
|
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.
|
|
19092
|
-
v3Target: "v4.5.
|
|
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
|
|
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