From f5ceba085b3ef1ad604265c6dd9ec50b5665d07c Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 12 Feb 2021 23:27:48 +0100
Subject: [PATCH] refactor: add bucket to update

---
 lib/manager/common.ts                         |  1 +
 .../lookup/__snapshots__/index.spec.ts.snap   | 98 +++++++++++++++++++
 .../repository/process/lookup/index.ts        | 23 +++--
 3 files changed, 116 insertions(+), 6 deletions(-)

diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index 578b7eceb2..eee1db6479 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -129,6 +129,7 @@ export interface Package<T> extends ManagerData<T> {
 }
 
 export interface LookupUpdate {
+  bucket?: string;
   blockedByPin?: boolean;
   branchName?: string;
   commitMessageAction?: string;
diff --git a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap
index 4e39cee3d1..fd70b9e161 100644
--- a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap
+++ b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap
@@ -10,6 +10,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "latest",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -65,6 +66,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() disables major release separation (minor) 1`] = `
 Array [
   Object {
+    "bucket": "latest",
     "fromVersion": "1.0.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -97,6 +99,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "0.9.4",
     "isRange": true,
     "isSingleVersion": true,
@@ -113,6 +116,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "major",
     "fromVersion": "0.9.4",
     "isRange": true,
     "isSingleVersion": true,
@@ -147,6 +151,7 @@ Object {
   "updates": Array [
     Object {
       "blockedByPin": true,
+      "bucket": "non-major",
       "fromVersion": "8.0.0",
       "isSingleVersion": true,
       "newDigest": "sha256:abcdef1234567890",
@@ -210,6 +215,7 @@ Object {
   "sourceUrl": "https://github.com/nodejs/node",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "8.0.0",
       "isSingleVersion": true,
       "newDigest": "sha256:abcdef1234567890",
@@ -275,6 +281,7 @@ Object {
   "sourceUrl": "https://github.com/kriskowal/q",
   "updates": Array [
     Object {
+      "bucket": "major",
       "fromVersion": "0.9.99",
       "isSingleVersion": true,
       "newMajor": 1,
@@ -314,6 +321,7 @@ Marking the latest version of an npm package as deprecated results in the entire
   "sourceUrl": "https://github.com/kriskowal/q",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "1.3.0",
       "isSingleVersion": true,
       "newMajor": 1,
@@ -338,6 +346,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -371,6 +380,7 @@ Object {
   "sourceUrl": "https://github.com/kriskowal/q",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "1.3.0",
       "isSingleVersion": true,
       "newMajor": 1,
@@ -410,6 +420,7 @@ exports[`workers/repository/process/lookup .lookupUpdates() rejects reverse orde
 exports[`workers/repository/process/lookup .lookupUpdates() replaces major complex ranged versions if configured 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -445,6 +456,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() replaces minor complex ranged versions if configured 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -464,6 +476,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() replaces non-range in-range updates 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -489,6 +502,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns additional update if grouping but separateMinorPatch=true 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -503,6 +517,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "minor",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -543,6 +558,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -576,6 +592,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -617,6 +634,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -649,6 +667,7 @@ Object {
   "sourceUrl": "https://github.com/kriskowal/q",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "1.3.0",
       "isSingleVersion": true,
       "newMajor": 1,
@@ -669,6 +688,7 @@ Object {
 exports[`workers/repository/process/lookup .lookupUpdates() returns minor update if automerging both patch and minor 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -687,6 +707,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -713,6 +734,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns minor update if separate patches not configured 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -731,6 +753,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -757,6 +780,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns multiple updates if grouping but separateMajorMinor=true 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -800,6 +824,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -826,6 +851,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns one update if grouping and separateMajorMinor=false 1`] = `
 Array [
   Object {
+    "bucket": "latest",
     "fromVersion": "0.4.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -884,6 +910,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns patch minor and major 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "fromVersion": "0.8.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -907,6 +934,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "minor",
     "fromVersion": "0.8.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -926,6 +954,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.8.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -952,6 +981,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns patch update if automerging patch 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -970,6 +1000,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -996,6 +1027,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() returns patch update if separateMinorPatch 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -1014,6 +1046,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -1049,6 +1082,7 @@ Array [
     "updateType": "rollback",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.99",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -1089,6 +1123,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should allow unstable versions if the current version is unstable 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "3.1.0-dev.20180731",
     "isSingleVersion": true,
     "newMajor": 3,
@@ -1114,6 +1149,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should allow unstable versions if the ignoreUnstable=false 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "2.5.16",
     "isSingleVersion": true,
     "newMajor": 2,
@@ -1141,6 +1177,7 @@ Object {
 exports[`workers/repository/process/lookup .lookupUpdates() should follow dist-tag even if newer version exists 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "3.0.1-insiders.20180713",
     "isSingleVersion": true,
     "newMajor": 3,
@@ -1156,6 +1193,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should ignore unstable versions from datasource 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "1.4.4",
     "isSingleVersion": true,
     "newMajor": 2,
@@ -1170,6 +1208,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should jump unstable versions if followTag 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "3.0.0-insiders.20180706",
     "isSingleVersion": true,
     "newMajor": 3,
@@ -1185,6 +1224,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should not jump unstable versions 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "3.0.1-insiders.20180726",
     "isSingleVersion": true,
     "newMajor": 3,
@@ -1214,6 +1254,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() should treat zero zero caret ranges as pinned 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.0.34",
     "isRange": true,
     "isSingleVersion": false,
@@ -1238,6 +1279,7 @@ Object {
   "sourceUrl": "https://github.com/nodejs/node",
   "updates": Array [
     Object {
+      "bucket": "major",
       "fromVersion": "8",
       "isSingleVersion": true,
       "newMajor": 9,
@@ -1261,6 +1303,7 @@ Object {
   "sourceUrl": "https://github.com/nodejs/node",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "8.1",
       "isSingleVersion": true,
       "newMajor": 8,
@@ -1271,6 +1314,7 @@ Object {
       "updateType": "minor",
     },
     Object {
+      "bucket": "major",
       "fromVersion": "8.1",
       "isSingleVersion": true,
       "newMajor": 9,
@@ -1294,6 +1338,7 @@ Object {
   "sourceUrl": "https://github.com/nodejs/node",
   "updates": Array [
     Object {
+      "bucket": "non-major",
       "fromVersion": "8.1.0",
       "isSingleVersion": true,
       "newMajor": 8,
@@ -1331,6 +1376,7 @@ Object {
 exports[`workers/repository/process/lookup .lookupUpdates() supports > latest versions if configured 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "1.4.1",
     "isSingleVersion": true,
     "newMajor": 2,
@@ -1351,6 +1397,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports complex major hyphen ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1386,6 +1433,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports complex major ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1420,6 +1468,7 @@ Array [
 
 exports[`workers/repository/process/lookup .lookupUpdates() supports complex ranges 1`] = `
 Object {
+  "bucket": "non-major",
   "fromVersion": "0.8.12",
   "isRange": true,
   "isSingleVersion": false,
@@ -1444,6 +1493,7 @@ Object {
 exports[`workers/repository/process/lookup .lookupUpdates() supports complex tilde ranges 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1463,6 +1513,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports in-range caret updates 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isBump": true,
     "isRange": true,
@@ -1490,6 +1541,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports in-range gte updates 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isBump": true,
     "isRange": true,
@@ -1517,6 +1569,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports in-range tilde patch updates 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "fromVersion": "1.0.0",
     "isBump": true,
     "isRange": true,
@@ -1529,6 +1582,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "minor",
     "fromVersion": "1.0.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1554,6 +1608,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports in-range tilde updates 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "fromVersion": "1.0.0",
     "isBump": true,
     "isRange": true,
@@ -1566,6 +1621,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "minor",
     "fromVersion": "1.0.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1591,6 +1647,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports lock file updates mixed with regular updates 1`] = `
 Array [
   Object {
+    "bucket": "patch",
     "displayFrom": "0.4.0",
     "displayTo": "0.4.4",
     "fromVersion": "0.4.0",
@@ -1609,6 +1666,7 @@ Array [
     "updateType": "patch",
   },
   Object {
+    "bucket": "minor",
     "fromVersion": "0.4.4",
     "isRange": true,
     "isSingleVersion": false,
@@ -1650,6 +1708,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.4.4",
     "isRange": true,
     "isSingleVersion": false,
@@ -1677,6 +1736,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() supports majorgte updates 1`] = `
 Array [
   Object {
+    "bucket": "latest",
     "fromVersion": "0.9.0",
     "isBump": true,
     "isRange": true,
@@ -1719,6 +1779,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -1760,6 +1821,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -1793,6 +1855,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 0,
@@ -1834,6 +1897,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "major",
     "fromVersion": "0.4.4",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -1860,6 +1924,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades .x complex minor ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1879,6 +1944,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades .x major ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isRange": true,
     "isSingleVersion": false,
@@ -1913,6 +1979,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -1931,6 +1998,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades .x minor ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -1950,6 +2018,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades equal minor ranges 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.1",
     "isRange": true,
     "isSingleVersion": true,
@@ -1969,6 +2038,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades less than equal major ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "1.4.1",
     "isRange": true,
     "isSingleVersion": false,
@@ -1990,6 +2060,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades less than equal minor ranges 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2009,6 +2080,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades less than equal ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2042,6 +2114,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2069,6 +2142,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades less than major ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isRange": true,
     "isSingleVersion": false,
@@ -2096,6 +2170,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades less than ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.7.1",
     "isRange": true,
     "isSingleVersion": false,
@@ -2130,6 +2205,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.7.1",
     "isRange": true,
     "isSingleVersion": false,
@@ -2157,6 +2233,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades major greater than less than ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isRange": true,
     "isSingleVersion": false,
@@ -2184,6 +2261,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades major less than equal ranges 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2210,6 +2288,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades major less than ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isRange": true,
     "isSingleVersion": false,
@@ -2237,6 +2316,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades minor greater than less than equals ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.8.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2269,6 +2349,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.8.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2296,6 +2377,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades minor greater than less than ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2329,6 +2411,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2363,6 +2446,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "1.0.1",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -2387,6 +2471,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades multiple caret ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2420,6 +2505,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2447,6 +2533,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades multiple tilde ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2480,6 +2567,7 @@ Array [
     "updateType": "minor",
   },
   Object {
+    "bucket": "major",
     "fromVersion": "0.7.2",
     "isRange": true,
     "isSingleVersion": false,
@@ -2507,6 +2595,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades shorthand major ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "0.9.7",
     "isRange": true,
     "isSingleVersion": false,
@@ -2534,6 +2623,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades shorthand minor ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2560,6 +2650,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -2578,6 +2669,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() upgrades tilde ranges without pinning 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2597,6 +2689,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() uses minimum version for vulnerabilityAlerts 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -2619,6 +2712,7 @@ Array [
   },
   Object {
     "blockedByPin": true,
+    "bucket": "non-major",
     "fromVersion": "1.0.0",
     "isSingleVersion": true,
     "newMajor": 1,
@@ -2644,6 +2738,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() widens .x OR ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2679,6 +2774,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() widens major ranged versions if configured 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2714,6 +2810,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() widens minor ranged versions if configured 1`] = `
 Array [
   Object {
+    "bucket": "non-major",
     "fromVersion": "1.3.0",
     "isRange": true,
     "isSingleVersion": false,
@@ -2733,6 +2830,7 @@ Array [
 exports[`workers/repository/process/lookup .lookupUpdates() widens stanndalone major OR ranges 1`] = `
 Array [
   Object {
+    "bucket": "major",
     "fromVersion": "2.7.0",
     "isRange": true,
     "isSingleVersion": false,
diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts
index 6be3071085..7524b3f2ac 100644
--- a/lib/workers/repository/process/lookup/index.ts
+++ b/lib/workers/repository/process/lookup/index.ts
@@ -113,15 +113,25 @@ function getFromVersion(
 }
 
 function getBucket(config: LookupUpdateConfig, update: LookupUpdate): string {
-  const { separateMajorMinor, separateMultipleMajor } = config;
+  const {
+    separateMajorMinor,
+    separateMultipleMajor,
+    separateMinorPatch,
+  } = config;
   const { updateType, newMajor } = update;
-  if (separateMultipleMajor && updateType === 'major') {
-    return `major-${newMajor}`;
-  }
   if (!separateMajorMinor) {
     return 'latest';
   }
-  return updateType;
+  if (updateType === 'major') {
+    if (separateMultipleMajor) {
+      return `major-${newMajor}`;
+    }
+    return 'major';
+  }
+  if (separateMinorPatch) {
+    return updateType;
+  }
+  return 'non-major';
 }
 
 export async function lookupUpdates(
@@ -338,11 +348,12 @@ export async function lookupUpdates(
         buckets[bucket] = [update];
       }
     }
-    for (const updates of Object.values(buckets)) {
+    for (const [bucket, updates] of Object.entries(buckets)) {
       const sortedUpdates = updates.sort((u1, u2) =>
         version.sortVersions(u1.toVersion, u2.toVersion)
       );
       const update = sortedUpdates.pop();
+      update.bucket = bucket;
       const { toVersion } = update;
       update.isSingleVersion =
         update.isSingleVersion || !!version.isSingleVersion(update.newValue);
-- 
GitLab