@mutmutco/cli 4.3.28 → 4.3.29
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 +25 -11
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -11896,7 +11896,10 @@ function laneResumeEvidence(evidence) {
|
|
|
11896
11896
|
return `prior claim by lane ${describeClaimMarker(evidence.marker)} (@${evidence.markerBy}, ${formatClaimAge(evidence.markerAgeMs)} old) is verifiably not running on this host \u2014 its local session transcript is gone or stale${artifacts.length ? `; resuming over ${artifacts.join("; ")}` : ""}`;
|
|
11897
11897
|
}
|
|
11898
11898
|
async function checkLaneContest(client, item, actor = describeSessionIdentity(), viewerLogin) {
|
|
11899
|
-
|
|
11899
|
+
let evidence = await gatherClaimLiveness(client, item.repository, item.number, openPullsFetcher(client));
|
|
11900
|
+
if (evidence.failed.some((channel) => channel !== "session")) {
|
|
11901
|
+
evidence = await gatherClaimLiveness(client, item.repository, item.number, openPullsFetcher(client));
|
|
11902
|
+
}
|
|
11900
11903
|
const ownership = laneOwnership(evidence.marker, actor);
|
|
11901
11904
|
const sameOwner = Boolean(viewerLogin && evidence.markerBy && evidence.markerBy.toLowerCase() === viewerLogin.toLowerCase());
|
|
11902
11905
|
const resume = ownership !== "mine" && sameOwner ? laneResumeEvidence(evidence) : void 0;
|
|
@@ -15581,10 +15584,10 @@ var rollout_plan_default = {
|
|
|
15581
15584
|
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)."
|
|
15582
15585
|
},
|
|
15583
15586
|
baseline: {
|
|
15584
|
-
version: "4.3.
|
|
15585
|
-
tag: "v4.3.
|
|
15586
|
-
commit: "
|
|
15587
|
-
npm: "@mutmutco/cli@4.3.
|
|
15587
|
+
version: "4.3.29",
|
|
15588
|
+
tag: "v4.3.29",
|
|
15589
|
+
commit: "5a5b64c2d604",
|
|
15590
|
+
npm: "@mutmutco/cli@4.3.29"
|
|
15588
15591
|
},
|
|
15589
15592
|
exitCriterion: "fleet-n-of-n",
|
|
15590
15593
|
hubOnlyShortcut: "forbidden",
|
|
@@ -15601,14 +15604,14 @@ var rollout_plan_default = {
|
|
|
15601
15604
|
repo: "mutmutco/mmi-hub",
|
|
15602
15605
|
role: "canary",
|
|
15603
15606
|
schedule: "train",
|
|
15604
|
-
v3Target: "v4.3.
|
|
15607
|
+
v3Target: "v4.3.29"
|
|
15605
15608
|
}
|
|
15606
15609
|
],
|
|
15607
15610
|
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.",
|
|
15608
15611
|
rollback: {
|
|
15609
15612
|
independent: true,
|
|
15610
|
-
mechanism: "npm dist-tag latest -> 4.3.
|
|
15611
|
-
v3Target: "v4.3.
|
|
15613
|
+
mechanism: "npm dist-tag latest -> 4.3.29 and redeploy the Hub Lambda from tag v4.3.29 (5a5b64c2d604); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
15614
|
+
v3Target: "v4.3.29 (@mutmutco/cli@4.3.29, tag commit 5a5b64c2d604 \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
15612
15615
|
}
|
|
15613
15616
|
},
|
|
15614
15617
|
{
|
|
@@ -23644,6 +23647,12 @@ function refPatternCovers(pattern, ref) {
|
|
|
23644
23647
|
function uncoveredTrackBranches(liveIncludes, trackBranches) {
|
|
23645
23648
|
return trackBranches.filter((branch) => !liveIncludes.some((pattern) => refPatternCovers(pattern, `refs/heads/${branch}`)));
|
|
23646
23649
|
}
|
|
23650
|
+
function unreachableTrackBranches(uncovered, requiredContexts, emittedByBranch) {
|
|
23651
|
+
return uncovered.filter((branch) => {
|
|
23652
|
+
const emitted = emittedByBranch[branch];
|
|
23653
|
+
return emitted !== void 0 && !requiredContexts.every((context) => emitted.includes(context));
|
|
23654
|
+
});
|
|
23655
|
+
}
|
|
23647
23656
|
function rulesetCoversReleaseBranches(payload, track) {
|
|
23648
23657
|
const conditions = payload.conditions;
|
|
23649
23658
|
const include = conditions?.ref_name?.include;
|
|
@@ -23945,14 +23954,19 @@ async function auditRepoCi(repo, deps) {
|
|
|
23945
23954
|
}
|
|
23946
23955
|
}
|
|
23947
23956
|
if (productRuleset != null) {
|
|
23948
|
-
const
|
|
23957
|
+
const presentTrackBranches = [];
|
|
23949
23958
|
for (const branch of uncoveredTrackBranches(liveBranchIncludes, branchesForTrack(resolveReleaseTrack(meta, void 0, repo)))) {
|
|
23950
|
-
if (await branchPresence(deps, repo, branch) === true)
|
|
23959
|
+
if (await branchPresence(deps, repo, branch) === true) presentTrackBranches.push(branch);
|
|
23951
23960
|
}
|
|
23961
|
+
const emittedByTrackBranch = {};
|
|
23962
|
+
for (const branch of presentTrackBranches) emittedByTrackBranch[branch] = await resolveEmittedPrContexts(deps, repo, branch);
|
|
23963
|
+
const toleratedTrackBranches = unreachableTrackBranches(presentTrackBranches, liveContexts, emittedByTrackBranch);
|
|
23964
|
+
const missingTrackBranches = presentTrackBranches.filter((branch) => !toleratedTrackBranches.includes(branch));
|
|
23965
|
+
const toleratedNote = toleratedTrackBranches.length ? ` (tolerated until first release: [${toleratedTrackBranches.join(", ")}] \u2014 their trees cannot emit every one of [${liveContexts.join(", ")}], #6385)` : "";
|
|
23952
23966
|
checks.push({
|
|
23953
23967
|
ok: missingTrackBranches.length === 0,
|
|
23954
23968
|
label: RULESET_TRACK_SCOPE_LABEL,
|
|
23955
|
-
detail: missingTrackBranches.length ? `live ${PRODUCT_RULESET_NAME} includes [${liveBranchIncludes.join(", ")}] but the release track also requires [${missingTrackBranches.join(", ")}] \u2014 those branches tag and merge with no required check` : void 0,
|
|
23969
|
+
detail: missingTrackBranches.length ? `live ${PRODUCT_RULESET_NAME} includes [${liveBranchIncludes.join(", ")}] but the release track also requires [${missingTrackBranches.join(", ")}] \u2014 those branches tag and merge with no required check${toleratedNote}` : toleratedNote ? toleratedNote.trim().replace(/^\(|\)$/g, "") : void 0,
|
|
23956
23970
|
remediation: missingTrackBranches.length ? `mmi-cli oracle org project set ${repo} --var requiredCheckBranches=${JSON.stringify(branchesForTrack(resolveReleaseTrack(meta, void 0, repo)))} then mmi-cli devops bootstrap apply ${repo} --execute` : void 0
|
|
23957
23971
|
});
|
|
23958
23972
|
}
|
package/package.json
CHANGED