@mutmutco/codex-plugin 4.5.94 → 4.5.95
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 +29 -7
- package/cli/package.json +1 -1
- package/package.json +1 -1
package/cli/dist/main.cjs
CHANGED
|
@@ -17255,10 +17255,10 @@ var rollout_plan_default = {
|
|
|
17255
17255
|
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)."
|
|
17256
17256
|
},
|
|
17257
17257
|
baseline: {
|
|
17258
|
-
version: "4.5.
|
|
17259
|
-
tag: "v4.5.
|
|
17260
|
-
commit: "
|
|
17261
|
-
npm: "@mutmutco/cli@4.5.
|
|
17258
|
+
version: "4.5.95",
|
|
17259
|
+
tag: "v4.5.95",
|
|
17260
|
+
commit: "d6d4a135bce9",
|
|
17261
|
+
npm: "@mutmutco/cli@4.5.95"
|
|
17262
17262
|
},
|
|
17263
17263
|
exitCriterion: "fleet-n-of-n",
|
|
17264
17264
|
hubOnlyShortcut: "forbidden",
|
|
@@ -17275,14 +17275,14 @@ var rollout_plan_default = {
|
|
|
17275
17275
|
repo: "mutmutco/mmi-hub",
|
|
17276
17276
|
role: "canary",
|
|
17277
17277
|
schedule: "train",
|
|
17278
|
-
v3Target: "v4.5.
|
|
17278
|
+
v3Target: "v4.5.95"
|
|
17279
17279
|
}
|
|
17280
17280
|
],
|
|
17281
17281
|
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.",
|
|
17282
17282
|
rollback: {
|
|
17283
17283
|
independent: true,
|
|
17284
|
-
mechanism: "npm dist-tag latest -> 4.5.
|
|
17285
|
-
v3Target: "v4.5.
|
|
17284
|
+
mechanism: "npm dist-tag latest -> 4.5.95 and redeploy the Hub Lambda from tag v4.5.95 (d6d4a135bce9); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
17285
|
+
v3Target: "v4.5.95 (@mutmutco/cli@4.5.95, tag commit d6d4a135bce9 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
17286
17286
|
}
|
|
17287
17287
|
},
|
|
17288
17288
|
{
|
|
@@ -36127,6 +36127,21 @@ async function suiteMarkAbandoned(deps, ownerGo = false) {
|
|
|
36127
36127
|
for (const t of tags) await deps.markAbandoned(t.repo, t.tag, t.sha);
|
|
36128
36128
|
return tags.map((t) => `${t.repo}@${t.tag}`);
|
|
36129
36129
|
}
|
|
36130
|
+
async function retireFailedLeadRcLedger(deps, ownerGo) {
|
|
36131
|
+
if (!(0, import_node_fs29.existsSync)(deps.ledgerPath)) return void 0;
|
|
36132
|
+
return withLedgerLock(deps.ledgerPath, async (fence) => {
|
|
36133
|
+
const ledger = parseReleaseLedger((0, import_node_fs29.readFileSync)(deps.ledgerPath, "utf8"));
|
|
36134
|
+
const states = Object.values(ledger.phases).map((p) => p.state);
|
|
36135
|
+
if (ledger.repo !== SUITE_REPO || ledger.lane !== "rcand" || ledger.phases.promotion.state === "complete" || !states.includes("failed")) return void 0;
|
|
36136
|
+
if (!ownerGo) throw new Error(`the lead's failed rcand ledger for ${ledger.tag} blocks every train; retire it with suite abandon --owner-go`);
|
|
36137
|
+
if ((await deps.rcHead())?.toLowerCase() === ledger.tagSha.toLowerCase()) throw new Error(`origin rc already points at ${ledger.tag}; it was promoted, so its ledger is not retired`);
|
|
36138
|
+
const archive = (0, import_node_path29.join)((0, import_node_path29.dirname)(deps.ledgerPath), `phases.archive-${ledger.tag}.json`);
|
|
36139
|
+
if ((0, import_node_fs29.existsSync)(archive)) throw new Error(`ledger archive already exists at ${archive}; inspect before retiring again`);
|
|
36140
|
+
await deps.markAbandoned(SUITE_REPO, ledger.tag, ledger.tagSha);
|
|
36141
|
+
await fence(() => (0, import_node_fs29.renameSync)(deps.ledgerPath, archive));
|
|
36142
|
+
return `${ledger.tag} (ledger archived to ${archive})`;
|
|
36143
|
+
});
|
|
36144
|
+
}
|
|
36130
36145
|
function suiteAbandon(recordPath, ownerGo = false, now = /* @__PURE__ */ new Date()) {
|
|
36131
36146
|
const record = abandonableCut(recordPath, ownerGo);
|
|
36132
36147
|
const archive = `${recordPath}.abandoned-${record.leadDevelopment.slice(0, 12)}-${now.toISOString().replace(/[:.]/g, "")}.json`;
|
|
@@ -47480,8 +47495,14 @@ function registerSuiteCommands(program3) {
|
|
|
47480
47495
|
let result;
|
|
47481
47496
|
let restored;
|
|
47482
47497
|
let marked;
|
|
47498
|
+
let retired;
|
|
47483
47499
|
try {
|
|
47484
47500
|
const io = suiteTrainIo(root);
|
|
47501
|
+
retired = await retireFailedLeadRcLedger({ ledgerPath: releaseLedgerPath(root), rcHead: () => io.head(SUITE_REPO, "rc").then((h) => h ?? void 0), markAbandoned: io.markAbandoned }, o.ownerGo === true);
|
|
47502
|
+
if (retired && !(0, import_node_fs44.existsSync)(io.recordPath)) {
|
|
47503
|
+
console.log(o.json ? JSON.stringify({ retiredLeadRc: retired }, null, 2) : `suite abandon: retired the lead's failed, never-promoted rc candidate ${retired}; marked abandoned on origin (#7854)`);
|
|
47504
|
+
return;
|
|
47505
|
+
}
|
|
47485
47506
|
restored = o.ownerGo === true ? await suiteRestoreMainPins(io) : void 0;
|
|
47486
47507
|
marked = await suiteMarkAbandoned(io, o.ownerGo === true);
|
|
47487
47508
|
result = suiteAbandon(io.recordPath, o.ownerGo === true);
|
|
@@ -47492,6 +47513,7 @@ function registerSuiteCommands(program3) {
|
|
|
47492
47513
|
`suite abandon: archived the cut record to ${result.archive}`,
|
|
47493
47514
|
...result.orphanTags.length ? [" member rc tags left in place (immutable; the next cut reuses one still unreleased on its rc head, #7450):", ...result.orphanTags.map((t) => ` - ${t}`)] : [" no member rc tag was minted"],
|
|
47494
47515
|
...restored ? [` main pins the cut planned for unreleased tags are restored by ${restored.pr} (${restored.status}, #7758)`] : [],
|
|
47516
|
+
...retired ? [` retired the lead's failed, never-promoted rc candidate ${retired} (#7854)`] : [],
|
|
47495
47517
|
...marked.length ? [` marked abandoned on origin, so the hotfix guard stops counting them as active (#7801): ${marked.join(", ")}`] : [],
|
|
47496
47518
|
" the next suite rcand --owner-go re-snapshots every member"
|
|
47497
47519
|
].join("\n"));
|
package/cli/package.json
CHANGED