@mutmutco/codex-plugin 4.5.232 → 4.5.233
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 +46 -10
- package/cli/package.json +1 -1
- package/package.json +1 -1
package/cli/dist/main.cjs
CHANGED
|
@@ -17712,7 +17712,7 @@ var DECLARED_ENTRIES = [
|
|
|
17712
17712
|
// #4118: Listening + systemd-active ≠ GitHub online after acquirejob 503. restart.conf cannot see
|
|
17713
17713
|
// it; an Actions workflow on mmi-live cannot heal it when half the fleet is offline. Root cron.
|
|
17714
17714
|
{ 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)" },
|
|
17715
|
-
{ name: "mmi-runner-online-reconcile (mmi-runner2)", 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; scripts/runner2-online-reconcile.cron selects lanes
|
|
17715
|
+
{ name: "mmi-runner-online-reconcile (mmi-runner2)", 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; scripts/runner2-online-reconcile.cron selects lanes 15-16, disables credential files, _diag acquirejob only, max 2 restarts/tick; rollout #7859 (verify: mmi-cli devops runtime box get mmi-runner2 --ssh)" },
|
|
17716
17716
|
// #5292: a lane that holds a dispatched JOB but produces zero output past the budget honestly
|
|
17717
17717
|
// reports "busy", so the online reconcile never fires and GitHub will not re-dispatch while the
|
|
17718
17718
|
// run holds the assignment. This tick cancels + re-triggers those runs (max 1/tick, debounced).
|
|
@@ -27242,10 +27242,10 @@ var rollout_plan_default = {
|
|
|
27242
27242
|
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)."
|
|
27243
27243
|
},
|
|
27244
27244
|
baseline: {
|
|
27245
|
-
version: "4.5.
|
|
27246
|
-
tag: "v4.5.
|
|
27247
|
-
commit: "
|
|
27248
|
-
npm: "@mutmutco/cli@4.5.
|
|
27245
|
+
version: "4.5.233",
|
|
27246
|
+
tag: "v4.5.233",
|
|
27247
|
+
commit: "5abbe7fd4238",
|
|
27248
|
+
npm: "@mutmutco/cli@4.5.233"
|
|
27249
27249
|
},
|
|
27250
27250
|
exitCriterion: "fleet-n-of-n",
|
|
27251
27251
|
hubOnlyShortcut: "forbidden",
|
|
@@ -27262,14 +27262,14 @@ var rollout_plan_default = {
|
|
|
27262
27262
|
repo: "mutmutco/mmi-hub",
|
|
27263
27263
|
role: "canary",
|
|
27264
27264
|
schedule: "train",
|
|
27265
|
-
v3Target: "v4.5.
|
|
27265
|
+
v3Target: "v4.5.233"
|
|
27266
27266
|
}
|
|
27267
27267
|
],
|
|
27268
27268
|
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.",
|
|
27269
27269
|
rollback: {
|
|
27270
27270
|
independent: true,
|
|
27271
|
-
mechanism: "npm dist-tag latest -> 4.5.
|
|
27272
|
-
v3Target: "v4.5.
|
|
27271
|
+
mechanism: "npm dist-tag latest -> 4.5.233 and redeploy the Hub Lambda from tag v4.5.233 (5abbe7fd4238); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
27272
|
+
v3Target: "v4.5.233 (@mutmutco/cli@4.5.233, tag commit 5abbe7fd4238 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
27273
27273
|
}
|
|
27274
27274
|
},
|
|
27275
27275
|
{
|
|
@@ -52646,6 +52646,38 @@ var ReleaseCustodySession = class _ReleaseCustodySession {
|
|
|
52646
52646
|
return result;
|
|
52647
52647
|
}
|
|
52648
52648
|
};
|
|
52649
|
+
function supersededLocalSnapshot(state, raw) {
|
|
52650
|
+
const local = parseReleaseLedger(raw);
|
|
52651
|
+
const keys = /* @__PURE__ */ new Set(["schema", "repo", "tag", "tagSha", "lane", "cutBy", "phases", "updatedAt"]);
|
|
52652
|
+
if (local.repo !== state.repo || Object.keys(local).some((key) => !keys.has(key))) return void 0;
|
|
52653
|
+
for (const [digest, archive] of Object.entries(state.archives)) {
|
|
52654
|
+
if (archive.disposition !== "retired" || archive.tagSha !== local.tagSha || archive.proof?.kind !== "ledger-lifecycle") continue;
|
|
52655
|
+
const retired = parseReleaseLedger(archive.raw);
|
|
52656
|
+
if (retired.repo !== local.repo || retired.tag !== local.tag || retired.tagSha !== local.tagSha) continue;
|
|
52657
|
+
const consistent = Object.entries(retired.phases).every(([name, done]) => {
|
|
52658
|
+
const phase = local.phases[name];
|
|
52659
|
+
return done.state === "complete" && !done.superseded && phase && ["pending", "complete"].includes(phase.state) && !phase.superseded && ["sha", "runId", "runRepo", "workflow", "event"].every((key) => phase[key] === void 0 || phase[key] === done[key]);
|
|
52660
|
+
});
|
|
52661
|
+
if (consistent && Object.keys(local.phases).every((name) => name in retired.phases)) {
|
|
52662
|
+
return {
|
|
52663
|
+
raw,
|
|
52664
|
+
tagSha: local.tagSha,
|
|
52665
|
+
disposition: "obsolete-local-copy",
|
|
52666
|
+
proof: { kind: "superseded-snapshot-of-retired-ledger", retiredDigest: digest }
|
|
52667
|
+
};
|
|
52668
|
+
}
|
|
52669
|
+
}
|
|
52670
|
+
return void 0;
|
|
52671
|
+
}
|
|
52672
|
+
function reclassifySupersededArchives(state) {
|
|
52673
|
+
let archives = state.archives;
|
|
52674
|
+
for (const [digest, archive] of Object.entries(state.archives)) {
|
|
52675
|
+
if (archive.disposition !== "unresolved") continue;
|
|
52676
|
+
const superseded = supersededLocalSnapshot(state, archive.raw);
|
|
52677
|
+
if (superseded) archives = { ...archives, [digest]: superseded };
|
|
52678
|
+
}
|
|
52679
|
+
return archives === state.archives ? state : { ...state, archives };
|
|
52680
|
+
}
|
|
52649
52681
|
function localRaw(path2) {
|
|
52650
52682
|
try {
|
|
52651
52683
|
return (0, import_node_fs40.readFileSync)(path2, "utf8");
|
|
@@ -52786,12 +52818,16 @@ function withHubReleaseCustody(deps) {
|
|
|
52786
52818
|
if (!input) throw new ReleaseCustodyError("repository custody needs fresh bootstrap evidence for its baseline or unresolved local records");
|
|
52787
52819
|
return verifyCustodyBootstrap(JSON.parse(input), api, controller, await requiredContexts(), { localRecords: raw ? [raw] : [] });
|
|
52788
52820
|
};
|
|
52789
|
-
session = await ReleaseCustodySession.acquire(store, controller, HUB_RELEASE_REPO, bootstrap, async (
|
|
52821
|
+
session = await ReleaseCustodySession.acquire(store, controller, HUB_RELEASE_REPO, bootstrap, async (prior) => {
|
|
52822
|
+
const state = reclassifySupersededArchives(prior);
|
|
52790
52823
|
if (!raw || raw === state.ledger) return state;
|
|
52791
52824
|
const archived = state.archives[custodyDigest(raw)];
|
|
52792
52825
|
if (archived && archived.disposition !== "unresolved") return state;
|
|
52793
52826
|
const local = parseReleaseLedger(raw);
|
|
52794
|
-
if (state.ledger && parseReleaseLedger(state.ledger).tagSha === local.tagSha
|
|
52827
|
+
if (state.ledger && parseReleaseLedger(state.ledger).tagSha === local.tagSha) return state;
|
|
52828
|
+
const superseded = supersededLocalSnapshot(state, raw);
|
|
52829
|
+
if (superseded) return { ...state, archives: { ...state.archives, [custodyDigest(raw)]: superseded } };
|
|
52830
|
+
if (!Object.values(local.phases).every((phase) => phase.state === "complete")) return state;
|
|
52795
52831
|
const baseline = state.baseline;
|
|
52796
52832
|
if (!baseline || typeof baseline.tag !== "string" || typeof baseline.tagSha !== "string") {
|
|
52797
52833
|
throw new ReleaseCustodyError("completed local evidence needs an observed release baseline");
|
package/cli/package.json
CHANGED