code-foundry 0.34.13 → 0.34.14
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.
- package/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/src/lib/release-policy.mjs +18 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.14](https://github.com/0xPlayerOne/code-foundry/compare/v0.34.13...v0.34.14) (2026-08-03)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **reconcile:** ignore historical paths absent from final tree ([#362](https://github.com/0xPlayerOne/code-foundry/issues/362)) ([8b8a123](https://github.com/0xPlayerOne/code-foundry/commit/8b8a123a1a7ea23a789c491414d3c9ea235a3d72))
|
|
9
|
+
|
|
3
10
|
## [0.34.13](https://github.com/0xPlayerOne/code-foundry/compare/v0.34.12...v0.34.13) (2026-08-03)
|
|
4
11
|
|
|
5
12
|
|
package/package.json
CHANGED
|
@@ -220,9 +220,14 @@ function compareVersions(a, b) {
|
|
|
220
220
|
* Classify the relationship between main and staging using the final tree delta
|
|
221
221
|
* when available. Historical commit paths can include equivalent workflow or
|
|
222
222
|
* configuration changes that are no longer present in the branch delta, so the
|
|
223
|
-
* final trees are the source of truth for release-only reconciliation.
|
|
224
|
-
*
|
|
225
|
-
*
|
|
223
|
+
* final trees are the source of truth for release-only reconciliation. When
|
|
224
|
+
* directChangedPaths is supplied, unexpected paths in historical main-only
|
|
225
|
+
* commits are ignored only when they are absent from the final tree delta
|
|
226
|
+
* (their content is already identical in both branches); unexpected main-only
|
|
227
|
+
* paths that still differ between the final trees fail closed. Without
|
|
228
|
+
* directChangedPaths the historical check stays strict. Any staging-only
|
|
229
|
+
* commit still triggers a replay path so no staging-only work can be silently
|
|
230
|
+
* discarded.
|
|
226
231
|
* @param {{
|
|
227
232
|
* mainSha: string,
|
|
228
233
|
* stagingSha: string,
|
|
@@ -282,10 +287,19 @@ export function classifyReconciliation(input) {
|
|
|
282
287
|
}
|
|
283
288
|
}
|
|
284
289
|
}
|
|
290
|
+
// Historical main-only commits may list paths whose content is already
|
|
291
|
+
// identical in the final staging tree (for example an equivalent workflow
|
|
292
|
+
// change). When the final tree delta is available, such paths are not
|
|
293
|
+
// genuine content differences and are ignored unless they also appear in
|
|
294
|
+
// the direct tree delta; without directChangedPaths the strict historical
|
|
295
|
+
// check is preserved unchanged.
|
|
296
|
+
const directTreePaths = Array.isArray(directChangedPaths)
|
|
297
|
+
? new Set(directChangedPaths.map((path) => path.trim()).filter(Boolean))
|
|
298
|
+
: null
|
|
285
299
|
const unexpectedMain = unexpectedReleasePaths(
|
|
286
300
|
[...new Set(mainOnlyCommits.flatMap((commit) => commit.changedPaths || []))],
|
|
287
301
|
allowed,
|
|
288
|
-
)
|
|
302
|
+
).filter((path) => directTreePaths === null || directTreePaths.has(path))
|
|
289
303
|
if (unexpectedMain.length) {
|
|
290
304
|
return {
|
|
291
305
|
action: 'fail',
|