diff --git a/lib/workers/repository/finalise/index.js b/lib/workers/repository/finalise/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..e3fa96c485863dd861745d24ce1a607e0ad9bc97
--- /dev/null
+++ b/lib/workers/repository/finalise/index.js
@@ -0,0 +1,14 @@
+const { validatePrs } = require('./validate');
+const { pruneStaleBranches } = require('./prune');
+
+module.exports = {
+  finaliseRepo,
+};
+
+// istanbul ignore next
+async function finaliseRepo(config, branchList) {
+  // TODO: Promise.all
+  await validatePrs(config);
+  await pruneStaleBranches(config, branchList);
+  platform.cleanRepo();
+}
diff --git a/lib/workers/repository/cleanup.js b/lib/workers/repository/finalise/prune.js
similarity index 95%
rename from lib/workers/repository/cleanup.js
rename to lib/workers/repository/finalise/prune.js
index 213f7612f7eeba34e9186515976494d26b1a790c..a357c567ae560dffb56ae817694f61b003675859 100644
--- a/lib/workers/repository/cleanup.js
+++ b/lib/workers/repository/finalise/prune.js
@@ -2,9 +2,8 @@ module.exports = {
   pruneStaleBranches,
 };
 
-async function pruneStaleBranches(config) {
+async function pruneStaleBranches(config, branchList) {
   // TODO: try/catch
-  const { branchList } = config;
   logger.debug('Removing any stale branches');
   logger.trace({ config }, `pruneStaleBranches`);
   logger.debug(`config.repoIsOnboarded=${config.repoIsOnboarded}`);
diff --git a/lib/workers/repository/validate.js b/lib/workers/repository/finalise/validate.js
similarity index 97%
rename from lib/workers/repository/validate.js
rename to lib/workers/repository/finalise/validate.js
index fb2911e4cbd9c6502222e476bfbcaa8f25cae4c7..53892712dfdba67c845f1f8524f63fd249e57a75 100644
--- a/lib/workers/repository/validate.js
+++ b/lib/workers/repository/finalise/validate.js
@@ -1,4 +1,4 @@
-const { migrateAndValidate } = require('../../config/migrate-validate');
+const { migrateAndValidate } = require('../../../config/migrate-validate');
 
 async function getRenovatePrs(branchPrefix) {
   return (await platform.getPrList())
diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js
index 12b849dad4e6ea174b69906b3b50f6af195a99f0..548bd320862a074e837ddb5c84ef32bbc3833954 100644
--- a/lib/workers/repository/index.js
+++ b/lib/workers/repository/index.js
@@ -4,8 +4,7 @@ const { determineUpdates } = require('./updates');
 const { ensureOnboardingPr } = require('./onboarding/pr');
 const { writeUpdates } = require('./write');
 const { handleError } = require('./error');
-const { pruneStaleBranches } = require('./cleanup');
-const { validatePrs } = require('./validate');
+const { finaliseRepo } = require('./finalise');
 
 const { resolvePackageFiles } = require('../../manager');
 
@@ -77,23 +76,14 @@ async function renovateRepository(repoConfig) {
     res = config.repoIsOnboarded
       ? await writeUpdates(config)
       : await ensureOnboardingPr(config);
-    await validatePrs(commonConfig || config);
+    logger.setMeta({ repository: config.repository });
+    config.branchPrefix = commonConfig
+      ? commonConfig.branchPrefix
+      : config.branchPrefix;
+    await finaliseRepo(commonConfig || config, config.branchList);
   } catch (err) /* istanbul ignore next */ {
     res = await handleError(config, err);
   }
-  logger.setMeta({ repository: config.repository });
-  config.branchPrefix = commonConfig
-    ? commonConfig.branchPrefix
-    : config.branchPrefix;
-  try {
-    await pruneStaleBranches(config);
-    platform.cleanRepo();
-  } catch (err) /* istanbul ignore next */ {
-    logger.error(
-      { err, message: err.message },
-      'Error pruning/cleaning repository'
-    );
-  }
   const disabledStatuses = [
     'archived',
     'blocked',
diff --git a/test/workers/repository/cleanup.spec.js b/test/workers/repository/finalise/prune.spec.js
similarity index 92%
rename from test/workers/repository/cleanup.spec.js
rename to test/workers/repository/finalise/prune.spec.js
index 8ca8169d0389294bbaebb29d6ff92d98d3b6e85c..9f81cedc3a6bc475e6af5388ab02c8d928695c30 100644
--- a/test/workers/repository/cleanup.spec.js
+++ b/test/workers/repository/finalise/prune.spec.js
@@ -1,15 +1,15 @@
-const cleanup = require('../../../lib/workers/repository/cleanup');
+const cleanup = require('../../../../lib/workers/repository/finalise/prune');
 
 let config;
 beforeEach(() => {
   jest.resetAllMocks();
-  config = require('../../_fixtures/config');
+  config = require('../../../_fixtures/config');
   config.platform = 'github';
   config.errors = [];
   config.warnings = [];
 });
 
-describe('workers/repository/cleanup', () => {
+describe('workers/repository/finalise/prune', () => {
   describe('pruneStaleBranches()', () => {
     it('returns if no branchList', async () => {
       delete config.branchList;
diff --git a/test/workers/repository/validate.spec.js b/test/workers/repository/finalise/validate.spec.js
similarity index 97%
rename from test/workers/repository/validate.spec.js
rename to test/workers/repository/finalise/validate.spec.js
index 4345d7d8df572dfa82bcdc3fca2e01c8abd04b6c..25fc8a2e871f072c4e4388b1e02b3879fd2032d2 100644
--- a/test/workers/repository/validate.spec.js
+++ b/test/workers/repository/finalise/validate.spec.js
@@ -1,4 +1,4 @@
-const validate = require('../../../lib/workers/repository/validate');
+const validate = require('../../../../lib/workers/repository/finalise/validate');
 
 beforeEach(() => {
   jest.resetAllMocks();
diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js
index 722675c5f5b90e34a9eca00e0f34e0b409dcc211..acdf5f2fd525b3f0bc41add83e8d8834c5af8ba3 100644
--- a/test/workers/repository/index.spec.js
+++ b/test/workers/repository/index.spec.js
@@ -11,8 +11,7 @@ jest.mock('../../../lib/workers/repository/init/apis');
 jest.mock('../../../lib/workers/repository/updates');
 jest.mock('../../../lib/workers/repository/onboarding/pr');
 jest.mock('../../../lib/workers/repository/write');
-jest.mock('../../../lib/workers/repository/cleanup');
-jest.mock('../../../lib/workers/repository/validate');
+jest.mock('../../../lib/workers/repository/finalise');
 jest.mock('../../../lib/manager');
 jest.mock('delay');