code-foundry 0.31.1 → 0.31.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -723,7 +723,7 @@ runs:
723
723
  path: ~/.cargo/advisory-db
724
724
  # The advisory database is independent of project dependencies. Keep
725
725
  # it warm for Security without invalidating it on every lockfile edit.
726
- key: ${{ runner.os }}-rust-advisory-${{ hashFiles('.github/.code-foundry/src/runtime.mjs') }}
726
+ key: ${{ runner.os }}-rust-advisory-code-foundry-v1
727
727
  restore-keys: |
728
728
  ${{ runner.os }}-rust-advisory-
729
729
  - name: Cache Rust builds
@@ -773,7 +773,7 @@ runs:
773
773
  REPO_FOUNDRY_INSTALL_PYTHON: ${{ inputs.install-python }}
774
774
  REPO_FOUNDRY_INSTALL_RUST: ${{ inputs.install-rust }}
775
775
  REPO_FOUNDRY_TASK: ${{ inputs.task }}
776
- run: node .github/.code-foundry/src/runtime.mjs ci install
776
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci install
777
777
  - name: Measure Bun dependencies
778
778
  id: javascript-bun-cache
779
779
  if: >-
@@ -58,10 +58,11 @@ jobs:
58
58
  - name: Install runtime
59
59
  run: |
60
60
  mkdir -p .github/actions
61
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
61
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
62
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
62
63
  - name: Detect
63
64
  id: applicability
64
- run: node .github/.code-foundry/src/runtime.mjs ci should_run format >> "$GITHUB_OUTPUT"
65
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci should_run format >> "$GITHUB_OUTPUT"
65
66
  - name: Setup
66
67
  if: steps.applicability.outputs.applicable == 'true'
67
68
  uses: ./.github/actions/setup
@@ -76,7 +77,7 @@ jobs:
76
77
  task: format
77
78
  - name: Format
78
79
  if: steps.applicability.outputs.applicable == 'true'
79
- run: node .github/.code-foundry/src/runtime.mjs ci format
80
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci format
80
81
 
81
82
  lint:
82
83
  name: Lint
@@ -97,10 +98,11 @@ jobs:
97
98
  - name: Install runtime
98
99
  run: |
99
100
  mkdir -p .github/actions
100
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
101
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
102
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
101
103
  - name: Detect
102
104
  id: applicability
103
- run: node .github/.code-foundry/src/runtime.mjs ci should_run lint >> "$GITHUB_OUTPUT"
105
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci should_run lint >> "$GITHUB_OUTPUT"
104
106
  - name: Setup
105
107
  if: steps.applicability.outputs.applicable == 'true'
106
108
  uses: ./.github/actions/setup
@@ -110,7 +112,7 @@ jobs:
110
112
  task: lint
111
113
  - name: Lint
112
114
  if: steps.applicability.outputs.applicable == 'true'
113
- run: node .github/.code-foundry/src/runtime.mjs ci lint
115
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci lint
114
116
 
115
117
  type-check:
116
118
  name: Type-Check
@@ -131,10 +133,11 @@ jobs:
131
133
  - name: Install runtime
132
134
  run: |
133
135
  mkdir -p .github/actions
134
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
136
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
137
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
135
138
  - name: Detect
136
139
  id: applicability
137
- run: node .github/.code-foundry/src/runtime.mjs ci should_run type_check >> "$GITHUB_OUTPUT"
140
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci should_run type_check >> "$GITHUB_OUTPUT"
138
141
  - name: Setup
139
142
  if: steps.applicability.outputs.applicable == 'true'
140
143
  uses: ./.github/actions/setup
@@ -144,7 +147,7 @@ jobs:
144
147
  task: type_check
145
148
  - name: Type-Check
146
149
  if: steps.applicability.outputs.applicable == 'true'
147
- run: node .github/.code-foundry/src/runtime.mjs ci type_check
150
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci type_check
148
151
 
149
152
  build:
150
153
  name: Build
@@ -170,10 +173,11 @@ jobs:
170
173
  - name: Install runtime
171
174
  run: |
172
175
  mkdir -p .github/actions
173
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
176
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
177
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
174
178
  - name: Detect
175
179
  id: applicability
176
- run: node .github/.code-foundry/src/runtime.mjs ci should_run build >> "$GITHUB_OUTPUT"
180
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci should_run build >> "$GITHUB_OUTPUT"
177
181
  - name: Setup
178
182
  if: steps.applicability.outputs.applicable == 'true'
179
183
  uses: ./.github/actions/setup
@@ -183,4 +187,4 @@ jobs:
183
187
  task: build
184
188
  - name: Build
185
189
  if: steps.applicability.outputs.applicable == 'true'
186
- run: node .github/.code-foundry/src/runtime.mjs ci build
190
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci build
@@ -98,7 +98,8 @@ jobs:
98
98
  - name: Install runtime
99
99
  run: |
100
100
  mkdir -p .github/actions
101
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
101
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
102
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
102
103
  - id: languages
103
104
  name: Detect languages
104
105
  env:
@@ -106,7 +107,7 @@ jobs:
106
107
  REPO_FOUNDRY_CODE_SECURITY: ${{ steps.security.outputs.status }}
107
108
  REPO_FOUNDRY_PRIVATE: ${{ github.event.repository.private }}
108
109
  REPO_FOUNDRY_VISIBILITY: ${{ github.event.repository.visibility }}
109
- run: node .github/.code-foundry/src/runtime.mjs codeql
110
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs codeql
110
111
 
111
112
  analyze-actions:
112
113
  name: Analyze (Actions)
@@ -144,7 +145,8 @@ jobs:
144
145
  needs.detect.outputs.actions_changed == 'true'
145
146
  run: |
146
147
  mkdir -p .github/actions
147
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
148
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
149
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
148
150
  - name: Analyze
149
151
  if: >-
150
152
  needs.detect.outputs.enabled == 'true' &&
@@ -198,7 +200,8 @@ jobs:
198
200
  needs.detect.outputs.javascript_changed == 'true'
199
201
  run: |
200
202
  mkdir -p .github/actions
201
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
203
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
204
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
202
205
  - name: Analyze
203
206
  if: >-
204
207
  needs.detect.outputs.enabled == 'true' &&
@@ -252,7 +255,8 @@ jobs:
252
255
  needs.detect.outputs.python_changed == 'true'
253
256
  run: |
254
257
  mkdir -p .github/actions
255
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
258
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
259
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
256
260
  - name: Analyze
257
261
  if: >-
258
262
  needs.detect.outputs.enabled == 'true' &&
@@ -306,7 +310,8 @@ jobs:
306
310
  needs.detect.outputs.rust_changed == 'true'
307
311
  run: |
308
312
  mkdir -p .github/actions
309
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
313
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
314
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
310
315
  - name: Analyze
311
316
  if: >-
312
317
  needs.detect.outputs.enabled == 'true' &&
@@ -57,6 +57,8 @@ jobs:
57
57
  ref: ${{ inputs.runtime-ref }}
58
58
  path: .github/.code-foundry
59
59
  sparse-checkout: src
60
+ - name: Prepare runtime
61
+ run: mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
60
62
  - name: Detect release profile
61
63
  id: profile
62
64
  run: |
@@ -117,7 +119,7 @@ jobs:
117
119
  GH_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN }}
118
120
  run: |
119
121
  set -euo pipefail
120
- node .github/.code-foundry/src/cli.mjs release validate-prs
122
+ node $RUNNER_TEMP/code-foundry/src/cli.mjs release validate-prs
121
123
  mapfile -t release_prs < <(
122
124
  gh pr list \
123
125
  --repo "$GITHUB_REPOSITORY" \
@@ -159,6 +161,8 @@ jobs:
159
161
  sparse-checkout: |
160
162
  src
161
163
  release-please-config.json
164
+ - name: Prepare runtime
165
+ run: mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
162
166
  - name: Check staging branch
163
167
  id: staging
164
168
  run: |
@@ -170,7 +174,7 @@ jobs:
170
174
  fi
171
175
  - name: Reconcile release metadata
172
176
  if: steps.staging.outputs.exists == 'true'
173
- run: node .github/.code-foundry/src/cli.mjs release reconcile --github --base main --head staging
177
+ run: node $RUNNER_TEMP/code-foundry/src/cli.mjs release reconcile --github --base main --head staging
174
178
  - name: Skip without staging
175
179
  if: steps.staging.outputs.exists != 'true'
176
180
  run: echo 'No staging branch exists; release reconciliation is not applicable.'
@@ -202,6 +206,8 @@ jobs:
202
206
  ref: ${{ inputs.runtime-ref }}
203
207
  path: .github/.code-foundry
204
208
  sparse-checkout: src
209
+ - name: Prepare runtime
210
+ run: mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
205
211
  - name: Detect post-release hook
206
212
  id: hook
207
213
  run: |
@@ -221,7 +227,7 @@ jobs:
221
227
  NODE
222
228
  - name: Dispatch post-release hook once
223
229
  if: steps.hook.outputs.enabled == 'true' && steps.hook.outputs.workflow != ''
224
- run: node .github/.code-foundry/src/cli.mjs release hook --tag '${{ needs.release.outputs.tag_name }}' --workflow '${{ steps.hook.outputs.workflow }}' --mode '${{ steps.hook.outputs.mode }}'
230
+ run: node $RUNNER_TEMP/code-foundry/src/cli.mjs release hook --tag '${{ needs.release.outputs.tag_name }}' --workflow '${{ steps.hook.outputs.workflow }}' --mode '${{ steps.hook.outputs.mode }}'
225
231
  - name: Explain disabled post-release hook
226
232
  if: steps.hook.outputs.enabled != 'true' || steps.hook.outputs.workflow == ''
227
233
  run: echo 'No post-release workflow configured; artifact delivery is intentionally skipped.'
@@ -89,13 +89,14 @@ jobs:
89
89
  - name: Install runtime
90
90
  run: |
91
91
  mkdir -p .github/actions
92
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
92
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
93
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
93
94
  - name: Detect
94
95
  id: profile
95
96
  env:
96
97
  REPO_FOUNDRY_PRIVATE: ${{ github.event.repository.private }}
97
98
  REPO_FOUNDRY_VISIBILITY: ${{ github.event.repository.visibility }}
98
- run: node .github/.code-foundry/src/runtime.mjs security profile >> "$GITHUB_OUTPUT"
99
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security profile >> "$GITHUB_OUTPUT"
99
100
 
100
101
  dependency-audit-javascript:
101
102
  name: Dependency Audit (JavaScript)
@@ -135,10 +136,11 @@ jobs:
135
136
  - name: Install runtime
136
137
  run: |
137
138
  mkdir -p .github/actions
138
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
139
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
140
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
139
141
  - name: Detect
140
142
  id: applicability
141
- run: node .github/.code-foundry/src/runtime.mjs security should_run javascript >> "$GITHUB_OUTPUT"
143
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security should_run javascript >> "$GITHUB_OUTPUT"
142
144
  - name: Setup
143
145
  if: steps.applicability.outputs.applicable == 'true'
144
146
  uses: ./.github/actions/setup
@@ -147,7 +149,7 @@ jobs:
147
149
  cache-save: ${{ github.event_name != 'pull_request' }}
148
150
  - name: Audit dependencies
149
151
  if: steps.applicability.outputs.applicable == 'true'
150
- run: node .github/.code-foundry/src/runtime.mjs security audit javascript
152
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security audit javascript
151
153
 
152
154
  dependency-audit-rust:
153
155
  name: Dependency Audit (Rust)
@@ -181,10 +183,11 @@ jobs:
181
183
  - name: Install runtime
182
184
  run: |
183
185
  mkdir -p .github/actions
184
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
186
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
187
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
185
188
  - name: Detect
186
189
  id: applicability
187
- run: node .github/.code-foundry/src/runtime.mjs security should_run rust >> "$GITHUB_OUTPUT"
190
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security should_run rust >> "$GITHUB_OUTPUT"
188
191
  - name: Check Rust
189
192
  id: system-rust
190
193
  if: steps.applicability.outputs.applicable == 'true'
@@ -212,7 +215,7 @@ jobs:
212
215
  tool: cargo-audit
213
216
  - name: Audit dependencies
214
217
  if: steps.applicability.outputs.applicable == 'true'
215
- run: node .github/.code-foundry/src/runtime.mjs security audit rust
218
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security audit rust
216
219
 
217
220
  dependency-audit-python:
218
221
  name: Dependency Audit (Python) / ${{ matrix.requirement }}
@@ -261,14 +264,15 @@ jobs:
261
264
  - name: Install runtime
262
265
  run: |
263
266
  mkdir -p .github/actions
264
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
267
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
268
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
265
269
  - name: Setup
266
270
  uses: ./.github/actions/setup
267
271
  with:
268
272
  mise-scope: python
269
273
  cache-save: ${{ github.event_name != 'pull_request' }}
270
274
  - name: Audit dependencies
271
- run: node .github/.code-foundry/src/runtime.mjs security audit python
275
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs security audit python
272
276
 
273
277
  dependency-audit-python-gate:
274
278
  name: Dependency Audit (Python)
@@ -66,10 +66,11 @@ jobs:
66
66
  - name: Install runtime
67
67
  run: |
68
68
  mkdir -p .github/actions
69
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
69
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
70
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
70
71
  - name: Detect
71
72
  id: applicability
72
- run: node .github/.code-foundry/src/runtime.mjs ci task_profile unit >> "$GITHUB_OUTPUT"
73
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci task_profile unit >> "$GITHUB_OUTPUT"
73
74
  - name: Setup
74
75
  if: steps.applicability.outputs.applicable == 'true'
75
76
  uses: ./.github/actions/setup
@@ -87,7 +88,7 @@ jobs:
87
88
  task-rust: ${{ steps.applicability.outputs.rust }}
88
89
  - name: Unit
89
90
  if: steps.applicability.outputs.applicable == 'true'
90
- run: node .github/.code-foundry/src/runtime.mjs ci unit
91
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci unit
91
92
  - name: Upload coverage
92
93
  if: >-
93
94
  always() &&
@@ -127,10 +128,11 @@ jobs:
127
128
  - name: Install runtime
128
129
  run: |
129
130
  mkdir -p .github/actions
130
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
131
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
132
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
131
133
  - name: Detect
132
134
  id: applicability
133
- run: node .github/.code-foundry/src/runtime.mjs ci task_profile integration >> "$GITHUB_OUTPUT"
135
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci task_profile integration >> "$GITHUB_OUTPUT"
134
136
  - name: Setup
135
137
  if: steps.applicability.outputs.applicable == 'true'
136
138
  uses: ./.github/actions/setup
@@ -148,7 +150,7 @@ jobs:
148
150
  task-rust: ${{ steps.applicability.outputs.rust }}
149
151
  - name: Integration
150
152
  if: steps.applicability.outputs.applicable == 'true'
151
- run: node .github/.code-foundry/src/runtime.mjs ci integration
153
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci integration
152
154
 
153
155
  e2e:
154
156
  name: E2E
@@ -172,10 +174,11 @@ jobs:
172
174
  - name: Install runtime
173
175
  run: |
174
176
  mkdir -p .github/actions
175
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
177
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
178
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
176
179
  - name: Detect
177
180
  id: applicability
178
- run: node .github/.code-foundry/src/runtime.mjs ci task_profile e2e >> "$GITHUB_OUTPUT"
181
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci task_profile e2e >> "$GITHUB_OUTPUT"
179
182
  - name: Cache browser binaries
180
183
  if: steps.applicability.outputs.applicable == 'true' && steps.applicability.outputs.browser == 'true'
181
184
  uses: ./.github/actions/cache
@@ -205,7 +208,7 @@ jobs:
205
208
  task-rust: ${{ steps.applicability.outputs.rust }}
206
209
  - name: E2E
207
210
  if: steps.applicability.outputs.applicable == 'true'
208
- run: node .github/.code-foundry/src/runtime.mjs ci e2e
211
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci e2e
209
212
 
210
213
  smoke:
211
214
  name: Smoke
@@ -229,10 +232,11 @@ jobs:
229
232
  - name: Install runtime
230
233
  run: |
231
234
  mkdir -p .github/actions
232
- cp -R .github/.code-foundry/.github/actions/. .github/actions/
235
+ mv .github/.code-foundry "$RUNNER_TEMP/code-foundry"
236
+ cp -R "$RUNNER_TEMP/code-foundry/.github/actions/." .github/actions/
233
237
  - name: Detect
234
238
  id: applicability
235
- run: node .github/.code-foundry/src/runtime.mjs ci task_profile smoke >> "$GITHUB_OUTPUT"
239
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci task_profile smoke >> "$GITHUB_OUTPUT"
236
240
  - name: Setup
237
241
  if: steps.applicability.outputs.applicable == 'true'
238
242
  uses: ./.github/actions/setup
@@ -250,4 +254,4 @@ jobs:
250
254
  task-rust: ${{ steps.applicability.outputs.rust }}
251
255
  - name: Smoke
252
256
  if: steps.applicability.outputs.applicable == 'true'
253
- run: node .github/.code-foundry/src/runtime.mjs ci smoke
257
+ run: node $RUNNER_TEMP/code-foundry/src/runtime.mjs ci smoke
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.31.3](https://github.com/0xPlayerOne/code-foundry/compare/v0.31.2...v0.31.3) (2026-07-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** isolate runtime from consumer tooling ([9bb07da](https://github.com/0xPlayerOne/code-foundry/commit/9bb07daa383a3ec89a57c6279546f1d8d4483457))
9
+ * **ci:** keep runtime out of project tooling ([0aec04a](https://github.com/0xPlayerOne/code-foundry/commit/0aec04a01f6378f165b83dbedde670ddee61657e))
10
+
11
+ ## [0.31.2](https://github.com/0xPlayerOne/code-foundry/compare/v0.31.1...v0.31.2) (2026-07-29)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **release:** treat identical branch trees as aligned ([32b739e](https://github.com/0xPlayerOne/code-foundry/commit/32b739e8e663dca05fd89005b26c6457ec265c1c))
17
+
3
18
  ## [0.31.1](https://github.com/0xPlayerOne/code-foundry/compare/v0.31.0...v0.31.1) (2026-07-29)
4
19
 
5
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "0.31.1",
3
+ "version": "0.31.3",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -165,6 +165,9 @@ export function classifyReconciliation(input) {
165
165
  if (mainSha === mergeBaseSha) {
166
166
  return { action: 'none', reason: 'staging contains commits that are not on main; no release-only reconciliation is needed.' }
167
167
  }
168
+ if (!mainChangedPaths.length && !stagingChangedPaths.length) {
169
+ return { action: 'aligned', reason: 'Branches have different history but identical content.' }
170
+ }
168
171
  const unexpectedMain = unexpectedReleasePaths(mainChangedPaths, allowed)
169
172
  const unexpectedStaging = unexpectedReleasePaths(stagingChangedPaths, allowed)
170
173
  if (unexpectedMain.length || unexpectedStaging.length) {