diff --git a/lib/config/types.ts b/lib/config/types.ts
index 817fcdca976dcb052fb8890dac24fd8c39ae5ece..74110ea2c3282a877df0fe38e14dd01c07563b21 100644
--- a/lib/config/types.ts
+++ b/lib/config/types.ts
@@ -31,7 +31,7 @@ export interface RenovateSharedConfig {
   branchPrefixOld?: string;
   branchName?: string;
   branchNameStrict?: boolean;
-  manager?: string | null;
+  manager?: string;
   commitMessage?: string;
   commitMessagePrefix?: string;
   confidential?: boolean;
@@ -454,7 +454,7 @@ export interface PackageRuleInputConfig extends Record<string, unknown> {
   sourceUrl?: string | null;
   language?: string;
   baseBranch?: string;
-  manager?: string | null;
+  manager?: string;
   datasource?: string;
   packageRules?: (PackageRule & PackageRuleInputConfig)[];
 }
diff --git a/lib/modules/manager/gomod/artifacts.spec.ts b/lib/modules/manager/gomod/artifacts.spec.ts
index 71a441107d0861851a426a9249322d5aeced7d33..16c65b5fdfafbdc90fce0ba8ebd3be67a6fcdaea 100644
--- a/lib/modules/manager/gomod/artifacts.spec.ts
+++ b/lib/modules/manager/gomod/artifacts.spec.ts
@@ -1083,9 +1083,11 @@ describe('modules/manager/gomod/artifacts', () => {
     fs.readLocalFile.mockResolvedValueOnce('Current go.sum');
     fs.readLocalFile.mockResolvedValueOnce(null); // vendor modules filename
     const execSnapshots = mockExecAll();
-    git.getRepoStatus.mockResolvedValueOnce({
-      modified: ['go.sum'],
-    } as StatusResult);
+    git.getRepoStatus.mockResolvedValueOnce(
+      partial<StatusResult>({
+        modified: ['go.sum'],
+      })
+    );
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 1');
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 2');
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 3');
@@ -1146,9 +1148,11 @@ describe('modules/manager/gomod/artifacts', () => {
     fs.readLocalFile.mockResolvedValueOnce('Current go.sum');
     fs.readLocalFile.mockResolvedValueOnce(null); // vendor modules filename
     const execSnapshots = mockExecAll();
-    git.getRepoStatus.mockResolvedValueOnce({
-      modified: ['go.sum'],
-    } as StatusResult);
+    git.getRepoStatus.mockResolvedValueOnce(
+      partial<StatusResult>({
+        modified: ['go.sum'],
+      })
+    );
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 1');
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 2');
     fs.readLocalFile.mockResolvedValueOnce('New go.sum 3');
diff --git a/lib/modules/manager/types.ts b/lib/modules/manager/types.ts
index 98ea62bedb9c74fec326e9da12b6f49dec661803..c1fc93c79c3f81302d957b62fec2cd16301a63a1 100644
--- a/lib/modules/manager/types.ts
+++ b/lib/modules/manager/types.ts
@@ -47,7 +47,7 @@ export interface RangeConfig<T = Record<string, any>> extends ManagerData<T> {
   currentValue?: string;
   depName?: string;
   depType?: string;
-  manager?: string | null;
+  manager?: string;
   rangeStrategy: RangeStrategy;
 }
 
diff --git a/lib/workers/repository/update/branch/index.spec.ts b/lib/workers/repository/update/branch/index.spec.ts
index 08d037066d3cbe1bcedfb386db8f63a3b1b9aaa9..f910665802edbb40cda2cc606a13617723bff4d4 100644
--- a/lib/workers/repository/update/branch/index.spec.ts
+++ b/lib/workers/repository/update/branch/index.spec.ts
@@ -1627,11 +1627,13 @@ describe('workers/repository/update/branch/index', () => {
         path: 'pom.xml',
         contents: 'pom.xml file contents',
       };
-      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
-        updatedPackageFiles: [updatedPackageFile],
-        artifactErrors: [],
-        updatedArtifacts: [],
-      } as PackageFilesResult);
+      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce(
+        partial<PackageFilesResult>({
+          updatedPackageFiles: [updatedPackageFile],
+          artifactErrors: [],
+          updatedArtifacts: [],
+        })
+      );
       npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
         artifactErrors: [],
         updatedArtifacts: [
@@ -1784,11 +1786,13 @@ describe('workers/repository/update/branch/index', () => {
         path: 'pom.xml',
         contents: 'pom.xml file contents',
       };
-      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
-        updatedPackageFiles: [updatedPackageFile],
-        artifactErrors: [],
-        updatedArtifacts: [],
-      } as PackageFilesResult);
+      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce(
+        partial<PackageFilesResult>({
+          updatedPackageFiles: [updatedPackageFile],
+          artifactErrors: [],
+          updatedArtifacts: [],
+        })
+      );
       npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
         artifactErrors: [],
         updatedArtifacts: [
@@ -2014,10 +2018,12 @@ describe('workers/repository/update/branch/index', () => {
     });
 
     it('Dependency Dashboard All Pending approval', async () => {
-      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce({
-        updatedPackageFiles: [partial<FileChange>({})],
-        artifactErrors: [{}],
-      } as PackageFilesResult);
+      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce(
+        partial<PackageFilesResult>({
+          updatedPackageFiles: [partial<FileChange>({})],
+          artifactErrors: [{}],
+        })
+      );
       npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
         artifactErrors: [],
         updatedArtifacts: [partial<FileChange>({})],
@@ -2049,10 +2055,12 @@ describe('workers/repository/update/branch/index', () => {
     });
 
     it('Dependency Dashboard open all rate-limited', async () => {
-      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce({
-        updatedPackageFiles: [partial<FileChange>({})],
-        artifactErrors: [{}],
-      } as PackageFilesResult);
+      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce(
+        partial<PackageFilesResult>({
+          updatedPackageFiles: [partial<FileChange>({})],
+          artifactErrors: [{}],
+        })
+      );
       npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
         artifactErrors: [],
         updatedArtifacts: [partial<FileChange>({})],
@@ -2084,10 +2092,12 @@ describe('workers/repository/update/branch/index', () => {
     });
 
     it('continues branch, skips automerge if there are artifact errors', async () => {
-      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce({
-        updatedPackageFiles: [partial<FileChange>({})],
-        artifactErrors: [{}],
-      } as PackageFilesResult);
+      jest.spyOn(getUpdated, 'getUpdatedPackageFiles').mockResolvedValueOnce(
+        partial<PackageFilesResult>({
+          updatedPackageFiles: [partial<FileChange>({})],
+          artifactErrors: [{}],
+        })
+      );
       npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
         artifactErrors: [],
         updatedArtifacts: [],
diff --git a/lib/workers/repository/update/pr/changelog/release-notes.spec.ts b/lib/workers/repository/update/pr/changelog/release-notes.spec.ts
index f1217f926fd83a0fbccfb11293c91e207474c58c..11037405065cc169ebe42521669b287d0a6fbcbe 100644
--- a/lib/workers/repository/update/pr/changelog/release-notes.spec.ts
+++ b/lib/workers/repository/update/pr/changelog/release-notes.spec.ts
@@ -1,7 +1,7 @@
 import { DateTime } from 'luxon';
 import { Fixtures } from '../../../../../../test/fixtures';
 import * as httpMock from '../../../../../../test/http-mock';
-import { mocked } from '../../../../../../test/util';
+import { mocked, partial } from '../../../../../../test/util';
 import { clone } from '../../../../../util/clone';
 import * as githubGraphql from '../../../../../util/github/graphql';
 import * as _hostRules from '../../../../../util/host-rules';
@@ -46,17 +46,17 @@ const gitlabTreeResponse = [
   { path: 'README.md', name: 'README.md', type: 'blob' },
 ];
 
-const githubProject = {
+const githubProject = partial<ChangeLogProject>({
   type: 'github',
   apiBaseUrl: 'https://api.github.com/',
   baseUrl: 'https://github.com/',
-} as ChangeLogProject;
+});
 
-const gitlabProject = {
+const gitlabProject = partial<ChangeLogProject>({
   type: 'gitlab',
   apiBaseUrl: 'https://gitlab.com/api/v4/',
   baseUrl: 'https://gitlab.com/',
-} as ChangeLogProject;
+});
 
 describe('workers/repository/update/pr/changelog/release-notes', () => {
   const githubReleasesMock = jest.spyOn(githubGraphql, 'queryReleases');
@@ -140,12 +140,15 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
     it('returns ChangeLogResult without release notes', async () => {
       const input = {
         a: 1,
-        project: {
+        project: partial<ChangeLogProject>({
           type: 'gitlab',
           repository: 'https://gitlab.com/gitlab-org/gitter/webapp/',
-        } as ChangeLogProject,
+        }),
         versions: [
-          { version: '20.26.0', compare: { url: '' } } as ChangeLogRelease,
+          partial<ChangeLogRelease>({
+            version: '20.26.0',
+            compare: { url: '' },
+          }),
         ],
       } as ChangeLogResult;
       expect(await addReleaseNotes(input, {} as BranchUpgradeConfig)).toEqual({
@@ -171,8 +174,8 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
   describe('getReleaseList()', () => {
     it('should return empty array if no apiBaseUrl', async () => {
       const res = await getReleaseList(
-        {} as ChangeLogProject,
-        {} as ChangeLogRelease
+        partial<ChangeLogProject>({}),
+        partial<ChangeLogRelease>({})
       );
       expect(res).toBeEmptyArray();
     });
@@ -202,7 +205,7 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'some/yet-other-repository',
         },
-        {} as ChangeLogRelease
+        partial<ChangeLogRelease>({})
       );
       expect(res).toMatchObject([
         {
@@ -237,7 +240,7 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...gitlabProject,
           repository: 'some/yet-other-repository',
         },
-        {} as ChangeLogRelease
+        partial<ChangeLogRelease>({})
       );
       expect(res).toMatchObject([
         {
@@ -276,7 +279,7 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           apiBaseUrl: 'https://my.custom.domain/api/v4/',
           baseUrl: 'https://my.custom.domain/',
         },
-        {} as ChangeLogRelease
+        partial<ChangeLogRelease>({})
       );
       expect(res).toMatchObject([
         {
@@ -321,10 +324,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/repository',
           depName: 'some',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.0',
           gitRef: '1.0.0',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toBeNull();
@@ -356,10 +359,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -398,10 +401,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -440,10 +443,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -482,10 +485,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -524,10 +527,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toBeNull();
@@ -559,10 +562,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -603,10 +606,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -647,10 +650,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -690,10 +693,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'other',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -728,10 +731,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           depName: 'other',
           apiBaseUrl: 'https://api.gitlab.com/',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -765,10 +768,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           depName: 'other',
           apiBaseUrl: 'https://api.gitlab.com/',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -802,10 +805,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           depName: 'other',
           apiBaseUrl: 'https://api.gitlab.com/',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -820,17 +823,17 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
 
     it('gets null from repository without gitlab/github in domain', async () => {
       const res = await getReleaseNotes(
-        {
+        partial<ChangeLogProject>({
           repository: 'some/repository',
           depName: 'other',
           apiBaseUrl: 'https://api.lol.lol/',
           baseUrl: 'https://lol.lol/',
-        } as ChangeLogProject,
-        {
+        }),
+        partial<ChangeLogRelease>({
           version: '1.0.1',
           gitRef: '1.0.1',
-        } as ChangeLogRelease,
-        {} as BranchUpgradeConfig
+        }),
+        partial<BranchUpgradeConfig>({})
       );
       expect(res).toBeNull();
     });
@@ -869,10 +872,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'exampleDep',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.0',
           gitRef: '1.0.0',
-        } as ChangeLogRelease,
+        }),
         {} as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -903,10 +906,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'some/other-repository',
           depName: 'exampleDep',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.0',
           gitRef: '1.0.0',
-        } as ChangeLogRelease,
+        }),
         { extractVersion: 'app-(?<version>[0-9.]*)' } as BranchUpgradeConfig
       );
       expect(res).toEqual({
@@ -929,10 +932,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'chalk',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '2.0.0',
           gitRef: '2.0.0',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toBeNull();
     });
@@ -954,10 +957,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'chalk',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '2.0.0',
           gitRef: '2.0.0',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toBeNull();
     });
@@ -978,10 +981,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'some/repository1',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.0',
           gitRef: '1.0.0',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toBeNull();
     });
@@ -1002,10 +1005,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'some/repository2',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.0.0',
           gitRef: '1.0.0',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toBeNull();
     });
@@ -1026,10 +1029,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'angular/angular.js',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '1.6.9',
           gitRef: '1.6.9',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toMatchSnapshot({
         notesSourceUrl:
@@ -1054,10 +1057,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'gitlab-org/gitter/webapp',
           apiBaseUrl: 'https://api.gitlab.com/',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '20.26.0',
           gitRef: '20.26.0',
-        } as ChangeLogRelease
+        })
       );
 
       expect(res).toMatchSnapshot({
@@ -1085,10 +1088,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           apiBaseUrl: 'https://my.custom.domain/',
           baseUrl: 'https://my.custom.domain/',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '20.26.0',
           gitRef: '20.26.0',
-        } as ChangeLogRelease
+        })
       );
 
       expect(res).toMatchSnapshot({
@@ -1114,10 +1117,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'facebook/jest',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '22.0.0',
           gitRef: '22.0.0',
-        } as ChangeLogRelease
+        })
       );
 
       expect(res).toMatchSnapshot({
@@ -1149,10 +1152,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           repository: 'nodeca/js-yaml',
           sourceDirectory,
         },
-        {
+        partial<ChangeLogRelease>({
           version: '3.10.0',
           gitRef: '3.10.0',
-        } as ChangeLogRelease
+        })
       );
 
       expect(res).toMatchSnapshot({
@@ -1178,10 +1181,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
           ...githubProject,
           repository: 'nodeca/js-yaml',
         },
-        {
+        partial<ChangeLogRelease>({
           version: '3.10.0',
           gitRef: '3.10.0',
-        } as ChangeLogRelease
+        })
       );
 
       expect(res).toMatchSnapshot({
@@ -1193,13 +1196,13 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
 
     it('ignores invalid', async () => {
       const res = await getReleaseNotesMd(
-        {
+        partial<ChangeLogProject>({
           repository: 'nodeca/js-yaml',
-        } as ChangeLogProject,
-        {
+        }),
+        partial<ChangeLogRelease>({
           version: '3.10.0',
           gitRef: '3.10.0',
-        } as ChangeLogRelease
+        })
       );
       expect(res).toBeNull();
     });
@@ -1224,10 +1227,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
             ...githubProject,
             repository: 'yargs/yargs',
           },
-          {
+          partial<ChangeLogRelease>({
             version: '15.3.0',
             gitRef: '15.3.0',
-          } as ChangeLogRelease
+          })
         );
         versionOneNotes = res!;
 
@@ -1254,10 +1257,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
             ...githubProject,
             repository: 'yargs/yargs',
           },
-          {
+          partial<ChangeLogRelease>({
             version: '15.2.0',
             gitRef: '15.2.0',
-          } as ChangeLogRelease
+          })
         );
         versionTwoNotes = res!;
 
@@ -1284,10 +1287,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
             ...gitlabProject,
             repository: 'itentialopensource/adapter-utils',
           },
-          {
+          partial<ChangeLogRelease>({
             version: '4.33.0',
             gitRef: '4.33.0',
-          } as ChangeLogRelease
+          })
         );
         versionTwoNotes = res!;
 
@@ -1320,10 +1323,10 @@ describe('workers/repository/update/pr/changelog/release-notes', () => {
             repository: 'itentialopensource/adapter-utils',
             sourceDirectory,
           },
-          {
+          partial<ChangeLogRelease>({
             version: '4.33.0',
             gitRef: '4.33.0',
-          } as ChangeLogRelease
+          })
         );
         versionTwoNotes = res!;