1+ # Dependabot configuration.
2+ #
3+ # Shared conventions across every ecosystem below (aligned with
4+ # strands-agents/harness-sdk):
5+ # - cooldown: hold new updates for a few days before opening a PR so we don't
6+ # churn on same-day releases. Majors get a long (30-day) window so a human
7+ # can vet breaking changes before the PR lands.
8+ # - groups: batch low-risk updates into grouped PRs. Dev tooling lands in one
9+ # PR, majors included, since a dev-tool major only touches CI and the
10+ # blast radius is small; minor/patch bumps land in another. Major production updates
11+ # are intentionally left ungrouped so they arrive as individual,
12+ # clearly-attributable PRs.
13+ # - schedule: poll weekly. The cooldown already delays PRs by days, so daily
14+ # polling just adds noise without surfacing updates any sooner.
15+ # - versioning-strategy: increase-if-necessary, which bumps the constraint
16+ # floor at a major boundary instead of just widening the upper bound, so CI
17+ # actually resolves and tests the new major rather than sitting on the old
18+ # one. Cargo does not support this option (it always updates the lockfile
19+ # and Cargo.toml together), so only the pip and npm sections set it.
120version : 2
221updates :
3- - package-ecosystem : " cargo"
4- directory : " /"
22+ # Rust workspace. Minor + patch bumps are batched; majors come individually
23+ # and wait out the 30-day cooldown for review. Grouping is pattern-based
24+ # because dependency-type grouping is not supported for cargo, so
25+ # development/production groups never match and every bump would open its
26+ # own PR.
27+ - package-ecosystem : ' cargo'
28+ directory : ' /'
529 schedule :
6- interval : " daily "
30+ interval : ' weekly '
731 open-pull-requests-limit : 100
832 labels :
9- - " dependencies"
10- - " rust"
33+ - ' dependencies'
34+ - ' rust'
1135 commit-message :
12- prefix : " ci(rust)"
36+ prefix : ' ci(rust)'
1337 cooldown :
1438 default-days : 5
1539 semver-major-days : 30
1640 semver-minor-days : 7
1741 semver-patch-days : 3
1842 groups :
19- development-dependencies :
20- dependency-type : " development "
21- applies-to : version-updates
43+ # Minor + patch bumps in one PR. Majors aren't matched by any group, so
44+ # they get individual PRs, gated by the 30-day semver-major cooldown
45+ # above for manual review.
2246 production-minor :
23- dependency-type : " production"
2447 applies-to : version-updates
48+ patterns :
49+ - ' *'
2550 update-types :
26- - " minor"
27- - " patch"
28- - package-ecosystem : " pip"
29- directory : " /"
51+ - ' minor'
52+ - ' patch'
53+ # Python bindings (maturin build backend at the repo root). Same batching
54+ # strategy as the Rust workspace.
55+ - package-ecosystem : ' pip'
56+ directory : ' /'
3057 schedule :
31- interval : " daily "
58+ interval : ' weekly '
3259 open-pull-requests-limit : 100
3360 labels :
34- - " dependencies"
35- - " python"
61+ - ' dependencies'
62+ - ' python'
3663 commit-message :
37- prefix : " ci(python)"
64+ prefix : ' ci(python)'
65+ versioning-strategy : increase-if-necessary
3866 cooldown :
3967 default-days : 5
4068 semver-major-days : 30
4169 semver-minor-days : 7
4270 semver-patch-days : 3
4371 groups :
44- dev-dependencies :
72+ # Dev/build tooling in one PR, matched by name because Dependabot does
73+ # not classify PEP 621 pyproject dependencies as development vs
74+ # production, so dependency-type grouping never matches for pip.
75+ development-dependencies :
76+ applies-to : version-updates
77+ patterns :
78+ - ' maturin'
79+ - ' pytest*'
80+ # Everything else: minor + patch bumps in one PR. Majors aren't matched
81+ # by any group, so they get individual PRs, gated by the 30-day
82+ # semver-major cooldown above for manual review.
83+ production-minor :
84+ applies-to : version-updates
4585 patterns :
46- - " pytest"
47- - " maturin"
48- - package-ecosystem : " npm"
49- directory : " /"
86+ - ' *'
87+ update-types :
88+ - ' minor'
89+ - ' patch'
90+ # Node bindings at the repo root (napi). devDependencies only, so the
91+ # development group catches everything; a hypothetical production major
92+ # would still arrive as an individual PR.
93+ - package-ecosystem : ' npm'
94+ directory : ' /'
5095 schedule :
51- interval : " daily "
96+ interval : ' weekly '
5297 open-pull-requests-limit : 100
5398 labels :
54- - " dependencies"
55- - " node "
99+ - ' dependencies'
100+ - ' typescript '
56101 commit-message :
57- prefix : " ci(node)"
102+ prefix : ' ci(typescript)'
103+ versioning-strategy : increase-if-necessary
58104 cooldown :
59105 default-days : 5
60106 semver-major-days : 30
61107 semver-minor-days : 7
62108 semver-patch-days : 3
63109 groups :
110+ # All development dependencies in one PR.
64111 development-dependencies :
65- dependency-type : " development"
112+ dependency-type : ' development'
66113 applies-to : version-updates
114+ # Production minor + patch bumps in one PR.
67115 production-minor :
68- dependency-type : " production"
116+ dependency-type : ' production'
69117 applies-to : version-updates
70118 update-types :
71- - " minor"
72- - " patch"
73- - package-ecosystem : " github-actions"
74- directory : " /"
119+ - ' minor'
120+ - ' patch'
121+ # GitHub Actions workflow pins. Low volume, so no grouping; the cooldown
122+ # still holds majors back for review before the bump PR opens.
123+ - package-ecosystem : ' github-actions'
124+ directory : ' /'
75125 schedule :
76- interval : " daily "
126+ interval : ' weekly '
77127 open-pull-requests-limit : 100
78128 commit-message :
79129 prefix : ci
@@ -82,8 +132,3 @@ updates:
82132 semver-major-days : 30
83133 semver-minor-days : 7
84134 semver-patch-days : 3
85- groups :
86- actions :
87- patterns :
88- - " *"
89- applies-to : version-updates
0 commit comments