code-foundry 1.28.12 → 1.28.13
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/fleet-manifest.mjs +28 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.28.13](https://github.com/0xPlayerOne/code-foundry/compare/v1.28.12...v1.28.13) (2026-09-11)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **fleet:** accept base-config evidence for merged rollouts ([#620](https://github.com/0xPlayerOne/code-foundry/issues/620)) ([394c528](https://github.com/0xPlayerOne/code-foundry/commit/394c528a137617ce2c4464436dbc6068349a0c54))
|
|
9
|
+
|
|
3
10
|
## [1.28.12](https://github.com/0xPlayerOne/code-foundry/compare/v1.28.11...v1.28.12) (2026-09-11)
|
|
4
11
|
|
|
5
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-foundry",
|
|
3
|
-
"version": "1.28.
|
|
3
|
+
"version": "1.28.13",
|
|
4
4
|
"description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
|
|
5
5
|
"homepage": "https://github.com/0xPlayerOne/code-foundry#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -286,6 +286,21 @@ export function verifiedPullRequest(pr, required) {
|
|
|
286
286
|
)
|
|
287
287
|
}
|
|
288
288
|
|
|
289
|
+
/**
|
|
290
|
+
* Evidence that a merged rollout actually landed. Gate rollup evidence is the
|
|
291
|
+
* normal path, but repositories without a required-check policy can merge
|
|
292
|
+
* through auto-merge before their checks complete, so a merged PR whose base
|
|
293
|
+
* configuration already matches the declared rollout is accepted with weaker
|
|
294
|
+
* `base-config` evidence instead of deadlocking the cohort forever.
|
|
295
|
+
* @param {any} pr @param {string[]} required @param {boolean} baseConfigMatches
|
|
296
|
+
* @returns {'gates'|'base-config'|null}
|
|
297
|
+
*/
|
|
298
|
+
export function rolloutEvidence(pr, required, baseConfigMatches) {
|
|
299
|
+
if (!pr || pr.state !== 'MERGED') return null
|
|
300
|
+
if (verifiedPullRequest(pr, required)) return 'gates'
|
|
301
|
+
return baseConfigMatches ? 'base-config' : null
|
|
302
|
+
}
|
|
303
|
+
|
|
289
304
|
/** @param {any} check */
|
|
290
305
|
function checkState(check) {
|
|
291
306
|
return check.status === 'COMPLETED' ? check.conclusion : (check.state ?? check.status)
|
|
@@ -339,8 +354,9 @@ function inspectRollout(run, path, entry, version, base) {
|
|
|
339
354
|
if (!remoteHead || pr.headRefOid !== remoteHead)
|
|
340
355
|
throw new Error('Existing pull request head no longer matches its remote branch')
|
|
341
356
|
}
|
|
342
|
-
let complete =
|
|
343
|
-
|
|
357
|
+
let complete = false
|
|
358
|
+
let evidence = null
|
|
359
|
+
if (pr?.state === 'MERGED') {
|
|
344
360
|
const response = JSON.parse(
|
|
345
361
|
checked(run, path, [
|
|
346
362
|
'gh',
|
|
@@ -351,9 +367,11 @@ function inspectRollout(run, path, entry, version, base) {
|
|
|
351
367
|
if (response.encoding !== 'base64' || typeof response.content !== 'string')
|
|
352
368
|
throw new Error('Unable to verify merged runtime configuration')
|
|
353
369
|
const config = scalarConfig(Buffer.from(response.content, 'base64').toString('utf8'))
|
|
354
|
-
|
|
370
|
+
const configMatches = config.runtime_ref === version && configDrift(config, entry).length === 0
|
|
371
|
+
evidence = rolloutEvidence(pr, entry.requiredChecks, configMatches)
|
|
372
|
+
complete = evidence !== null
|
|
355
373
|
}
|
|
356
|
-
return { ...identity, pr, complete }
|
|
374
|
+
return { ...identity, pr, complete, evidence }
|
|
357
375
|
}
|
|
358
376
|
|
|
359
377
|
/** @param {Runner} run @param {string} path @param {string[]} files */
|
|
@@ -606,7 +624,12 @@ export function upgradeManifestFleet(root, source, options, sync, run = executeF
|
|
|
606
624
|
const rollout = inspectRollout(run, item.path, entry, options.version, base)
|
|
607
625
|
if (rollout.complete) {
|
|
608
626
|
completed += 1
|
|
609
|
-
report.push({
|
|
627
|
+
report.push({
|
|
628
|
+
...record,
|
|
629
|
+
status: 'verified-merged',
|
|
630
|
+
evidence: rollout.evidence,
|
|
631
|
+
pullRequest: rollout.pr.url,
|
|
632
|
+
})
|
|
610
633
|
continue
|
|
611
634
|
}
|
|
612
635
|
if (rollout.pr) {
|