forked from Waffle-finance/waffle-finance-core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrenovate.json5
More file actions
190 lines (170 loc) · 7.25 KB
/
Copy pathrenovate.json5
File metadata and controls
190 lines (170 loc) · 7.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
// Renovate configuration for WaffleFinance.
//
// Purpose: automate dependency-PR creation without sacrificing review quality
// for security-sensitive dependencies. See docs/DEPENDENCY_UPDATES.md.
//
// Core rules:
// - Group noisy updates so reviewers see a small number of small PRs.
// - Pin or isolate any dependency that touches user funds.
// - Honour an idle window so updates don't pile up.
// - Vulnerability alerts run on-demand and bypass every grouping rule.
// Security patches must never wait for the weekend.
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
// Wafflefinance is a cross-chain bridge that handles user funds.
// "config:recommended" gives us sane defaults (semver awareness,
// lockfile maintenance, base branching); "workarounds:all" papers over
// known Renovate bugs that don't yet have a proper fix.
"extends": ["config:recommended", "workarounds:all"],
// Public dashboard issue. Reviewers see every open/pending update here.
// They can rebase, retry, or close PRs from the dashboard without
// editing this file.
"dependencyDashboard": true,
// Keep pnpm lockfile updated and deterministic. Without this, Renovate
// only edits package.json and leaves lockfile drift for the next CI run.
"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 6am on monday"],
"commitMessageTopic": "lockfile maintenance",
"groupName": "Lockfile Maintenance (Weekly)",
},
// Default cadence for everything that isn't a vulnerability fix or a
// grouped batch — idle weekdays keeps PR volume low.
"schedule": ["before 6am on monday"],
"timezone": "UTC",
// Default branch is the integration branch.
"baseBranches": ["main"],
// Cap per-branch PR count to keep the queue reviewable. 10 → 5 keeps
// the dashboard actionable for a two-reviewer rotation.
"prConcurrentLimit": 5,
// Auto-merge is OFF by default in Renovate and stays off here. Every
// Renovate PR requires a human reviewer and a green CI run. Do not
// enable `automerge` without at least 90 days of clean Renovate CI
// history on the affected group.
// Vulnerability alerts skip grouping and the weekend window.
"vulnerabilityAlerts": {
"enabled": true,
"schedule": ["at any time"],
"labels": ["security", "dependencies"],
"groupName": null, // never batch security PRs with others
"commitMessageTopic": "security patch",
"prPriority": 10,
"assignees": [],
},
// Track OSV-style advisories beyond the GitHub Advisory DB.
"osvVulnerabilityAlerts": {
"enabled": true,
},
// Strict policy for the smart-contract packages. Updates here move
// real user funds; reviewers MUST understand the diff before merging.
"packageRules": [
// -- 1. OpenZeppelin and other audit-critical primitives ---------------
//
// OpenZeppelin v5 is pinned because:
// - upgrades touch the upgradeable proxy / inheritance graph,
// - every prior major release has shipped breaking storage-layout
// changes that affect deployed bytecode,
// - audit scope of the current deployment is 5.0.x.
// Bumping OpenZeppelin requires a re-audit, so Renovate stays out.
//
// Use a wildcard-prefix match to ignore the metapackage + any
// future @openzeppelin/* subpackages without editing this file.
{
"description": "Pin OpenZeppelin — manual upgrade requires re-audit.",
"matchPackagePatterns": ["^@openzeppelin/contracts($|/.*)"],
"enabled": false,
},
// -- 2. Solidity contract deps (other than OpenZeppelin) ---------------
{
"description": "Hardhat/foundry tooling — grouped weekly, manual review.",
"matchFileNames": ["contracts/**"],
"groupName": "Solidity Toolchain (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "contracts"],
"dependencyDashboardApproval": true,
},
// -- 3. Soroban (Rust/Stellar) contracts -------------------------------
//
// Same reasoning as Solidity — funds move under these crates.
{
"description": "Soroban Rust deps — grouped weekly, manual review.",
"matchManagers": ["cargo"],
"groupName": "Soroban Rust Dependencies (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "soroban"],
"dependencyDashboardApproval": true,
},
// -- 4. SDK + shared types -------------------------------------------
//
// The SDK is consumed by every other service; a regression here
// breaks every downstream package. Group all SDK bumps together so
// reviewers see one PR.
{
"description": "SDK runtime deps — grouped weekly.",
"matchFileNames": ["packages/sdk/**"],
"groupName": "SDK Runtime (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "sdk"],
},
// -- 5. Other services, runtime deps ---------------------------------
{
"description": "Service runtime deps (coordinator/relayer/resolver) — grouped weekly.",
"matchFileNames": [
"coordinator/package.json",
"relayer/package.json",
"resolver/package.json",
],
"groupName": "Service Runtime (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies"],
},
// -- 6. Frontend runtime + dev deps ----------------------------------
{
"description": "Frontend runtime deps — grouped weekly.",
"matchFileNames": ["frontend/**"],
"matchDepTypes": ["dependencies"],
"groupName": "Frontend Runtime (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "frontend"],
},
// -- 7. ALL devDependencies ------------------------------------------
//
// Largest noise reduction. dev deps never move user funds and never
// reach production bundles — group them into a single weekly PR so
// we get one review instead of thirty.
{
"description": "All devDependencies across workspace — one weekly PR.",
"matchDepTypes": ["devDependencies"],
"groupName": "DevDependencies (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "chore"],
},
// -- 8. GitHub Actions -----------------------------------------------
//
// Action versions are pinned by Renovate to commit SHA by default,
// but keep them grouped so the review is one diff.
{
"description": "GitHub Actions — grouped weekly.",
"matchManagers": ["github-actions"],
"groupName": "GitHub Actions (Weekly)",
"schedule": ["before 6am on monday"],
"labels": ["dependencies", "ci"],
},
// -- 9. Major-version bumps -----------------------------------------
//
// Major bumps are NOT grouped with weekly batches — they get a
// standalone PR with a "major" label so reviewers know to expect
// breaking changes.
{
"description": "Major bumps — standalone PRs.",
"matchUpdateTypes": ["major"],
"groupName": null,
"labels": ["dependencies", "breaking"],
"prPriority": 5,
},
],
// Surface failures and conflicts loudly. Renovate creates rebase/squash
// MR-style PRs; merged failures show in the dashboard.
"rebaseWhen": "behind-base-branch",
"rebaseLabel": "renovate-rebase",
}