code-foundry 1.48.4 → 1.48.5

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.
@@ -352,122 +352,121 @@ jobs:
352
352
  id: integration_execute
353
353
  if: ${{ !cancelled() && inputs.mode == 'audit' && steps.integration_applicability.outputs.applicable == 'true' && steps.integration_applicability.outputs.affected != 'false' }}
354
354
  run: node "$RUNNER_TEMP/code-foundry/src/runtime.mjs" ci integration
355
- # Receipts are independent artifact uploads; a second parallel
356
- # group joins them instead of serializing 8+ uploads after the
357
- # executes.
358
- - parallel:
359
- - name: Retain format task receipt
360
- if: >-
361
- always() &&
362
- (steps.format_execute.outcome == 'success' || steps.format_execute.outcome == 'failure' ||
363
- steps.format_applicability.outputs.applicable == 'false' || steps.format_applicability.outputs.affected == 'false') &&
364
- hashFiles('.code-foundry/results/format.json') != ''
365
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
366
- with:
367
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-format
368
- path: .code-foundry/results/format.json
369
- include-hidden-files: true
370
- if-no-files-found: error
371
- retention-days: 14
372
- - name: Retain build task receipt
373
- if: >-
374
- always() &&
375
- (steps.build_execute.outcome == 'success' || steps.build_execute.outcome == 'failure' ||
376
- steps.build_applicability.outputs.applicable == 'false' || steps.build_applicability.outputs.affected == 'false') &&
377
- hashFiles('.code-foundry/results/build.json') != ''
378
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
379
- with:
380
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-build
381
- path: .code-foundry/results/build.json
382
- include-hidden-files: true
383
- if-no-files-found: error
384
- retention-days: 14
385
- - name: Retain performance task receipt
386
- if: >-
387
- always() &&
388
- inputs.mode == 'audit' &&
389
- (steps.performance_execute.outcome == 'success' || steps.performance_execute.outcome == 'failure' ||
390
- steps.performance_applicability.outputs.applicable == 'false' || steps.performance_applicability.outputs.affected == 'false') &&
391
- hashFiles('.code-foundry/results/performance.json') != ''
392
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
393
- with:
394
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-performance
395
- path: .code-foundry/results/performance.json
396
- include-hidden-files: true
397
- if-no-files-found: error
398
- retention-days: 14
399
- - name: Upload performance results
400
- if: >-
401
- always() &&
402
- inputs.mode == 'audit' &&
403
- steps.performance_applicability.outputs.applicable == 'true' &&
404
- hashFiles('artifacts/performance/**', 'performance-results.json', 'performance-results/**') != ''
405
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
406
- with:
407
- name: performance-${{ github.run_id }}
408
- path: |
409
- artifacts/performance/**
410
- performance-results.json
411
- performance-results/**
412
- compression-level: 1
413
- if-no-files-found: ignore
414
- retention-days: 14
415
- - name: Retain smoke task receipt
416
- if: >-
417
- always() &&
418
- inputs.mode == 'audit' &&
419
- (steps.smoke_execute.outcome == 'success' || steps.smoke_execute.outcome == 'failure' ||
420
- steps.smoke_applicability.outputs.applicable == 'false' || steps.smoke_applicability.outputs.affected == 'false') &&
421
- hashFiles('.code-foundry/results/smoke.json') != ''
422
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
423
- with:
424
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-smoke
425
- path: .code-foundry/results/smoke.json
426
- include-hidden-files: true
427
- if-no-files-found: error
428
- retention-days: 14
429
- - name: Retain eval task receipt
430
- if: >-
431
- always() &&
432
- inputs.mode == 'audit' &&
433
- (steps.eval_execute.outcome == 'success' || steps.eval_execute.outcome == 'failure' ||
434
- steps.eval_applicability.outputs.applicable == 'false' || steps.eval_applicability.outputs.affected == 'false') &&
435
- hashFiles('.code-foundry/results/eval.json') != ''
436
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
437
- with:
438
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-eval
439
- path: .code-foundry/results/eval.json
440
- include-hidden-files: true
441
- if-no-files-found: error
442
- retention-days: 14
443
- - name: Retain eval report
444
- if: >-
445
- always() &&
446
- inputs.mode == 'audit' &&
447
- steps.eval_execute.outcome == 'failure' &&
448
- hashFiles('eval-results/result.json') != ''
449
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
450
- with:
451
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-eval-report
452
- path: |
453
- eval-results/result.json
454
- eval-results/summary.json
455
- if-no-files-found: error
456
- retention-days: 14
457
- - name: Retain integration task receipt
458
- if: >-
459
- always() &&
460
- inputs.mode == 'audit' &&
461
- (steps.integration_execute.outcome == 'success' || steps.integration_execute.outcome == 'failure' ||
462
- steps.integration_applicability.outputs.applicable == 'false' || steps.integration_applicability.outputs.affected == 'false') &&
463
- hashFiles('.code-foundry/results/integration.json') != ''
464
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
465
- with:
466
- name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-integration
467
- path: .code-foundry/results/integration.json
468
- include-hidden-files: true
469
- if-no-files-found: error
470
- retention-days: 14
355
+ # Upload only after execution joins, and keep uploads sequential: the
356
+ # runner rewrites GITHUB_EVENT_PATH for each action, racing the event
357
+ # JSON read in upload-artifact's context initialization (runner#4641).
358
+ - name: Retain format task receipt
359
+ if: >-
360
+ always() &&
361
+ (steps.format_execute.outcome == 'success' || steps.format_execute.outcome == 'failure' ||
362
+ steps.format_applicability.outputs.applicable == 'false' || steps.format_applicability.outputs.affected == 'false') &&
363
+ hashFiles('.code-foundry/results/format.json') != ''
364
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
365
+ with:
366
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-format
367
+ path: .code-foundry/results/format.json
368
+ include-hidden-files: true
369
+ if-no-files-found: error
370
+ retention-days: 14
371
+ - name: Retain build task receipt
372
+ if: >-
373
+ always() &&
374
+ (steps.build_execute.outcome == 'success' || steps.build_execute.outcome == 'failure' ||
375
+ steps.build_applicability.outputs.applicable == 'false' || steps.build_applicability.outputs.affected == 'false') &&
376
+ hashFiles('.code-foundry/results/build.json') != ''
377
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
378
+ with:
379
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-build
380
+ path: .code-foundry/results/build.json
381
+ include-hidden-files: true
382
+ if-no-files-found: error
383
+ retention-days: 14
384
+ - name: Retain performance task receipt
385
+ if: >-
386
+ always() &&
387
+ inputs.mode == 'audit' &&
388
+ (steps.performance_execute.outcome == 'success' || steps.performance_execute.outcome == 'failure' ||
389
+ steps.performance_applicability.outputs.applicable == 'false' || steps.performance_applicability.outputs.affected == 'false') &&
390
+ hashFiles('.code-foundry/results/performance.json') != ''
391
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
392
+ with:
393
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-performance
394
+ path: .code-foundry/results/performance.json
395
+ include-hidden-files: true
396
+ if-no-files-found: error
397
+ retention-days: 14
398
+ - name: Upload performance results
399
+ if: >-
400
+ always() &&
401
+ inputs.mode == 'audit' &&
402
+ steps.performance_applicability.outputs.applicable == 'true' &&
403
+ hashFiles('artifacts/performance/**', 'performance-results.json', 'performance-results/**') != ''
404
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
405
+ with:
406
+ name: performance-${{ github.run_id }}
407
+ path: |
408
+ artifacts/performance/**
409
+ performance-results.json
410
+ performance-results/**
411
+ compression-level: 1
412
+ if-no-files-found: ignore
413
+ retention-days: 14
414
+ - name: Retain smoke task receipt
415
+ if: >-
416
+ always() &&
417
+ inputs.mode == 'audit' &&
418
+ (steps.smoke_execute.outcome == 'success' || steps.smoke_execute.outcome == 'failure' ||
419
+ steps.smoke_applicability.outputs.applicable == 'false' || steps.smoke_applicability.outputs.affected == 'false') &&
420
+ hashFiles('.code-foundry/results/smoke.json') != ''
421
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
422
+ with:
423
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-smoke
424
+ path: .code-foundry/results/smoke.json
425
+ include-hidden-files: true
426
+ if-no-files-found: error
427
+ retention-days: 14
428
+ - name: Retain eval task receipt
429
+ if: >-
430
+ always() &&
431
+ inputs.mode == 'audit' &&
432
+ (steps.eval_execute.outcome == 'success' || steps.eval_execute.outcome == 'failure' ||
433
+ steps.eval_applicability.outputs.applicable == 'false' || steps.eval_applicability.outputs.affected == 'false') &&
434
+ hashFiles('.code-foundry/results/eval.json') != ''
435
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
436
+ with:
437
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-eval
438
+ path: .code-foundry/results/eval.json
439
+ include-hidden-files: true
440
+ if-no-files-found: error
441
+ retention-days: 14
442
+ - name: Retain eval report
443
+ if: >-
444
+ always() &&
445
+ inputs.mode == 'audit' &&
446
+ steps.eval_execute.outcome == 'failure' &&
447
+ hashFiles('eval-results/result.json') != ''
448
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
449
+ with:
450
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-eval-report
451
+ path: |
452
+ eval-results/result.json
453
+ eval-results/summary.json
454
+ if-no-files-found: error
455
+ retention-days: 14
456
+ - name: Retain integration task receipt
457
+ if: >-
458
+ always() &&
459
+ inputs.mode == 'audit' &&
460
+ (steps.integration_execute.outcome == 'success' || steps.integration_execute.outcome == 'failure' ||
461
+ steps.integration_applicability.outputs.applicable == 'false' || steps.integration_applicability.outputs.affected == 'false') &&
462
+ hashFiles('.code-foundry/results/integration.json') != ''
463
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
464
+ with:
465
+ name: ${{ inputs.artifact-prefix }}-${{ github.run_id }}-${{ github.run_attempt }}-integration
466
+ path: .code-foundry/results/integration.json
467
+ include-hidden-files: true
468
+ if-no-files-found: error
469
+ retention-days: 14
471
470
 
472
471
  - name: Save Vite+ task cache
473
472
  uses: ./.github/actions/vite-plus-cache-save
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.48.5](https://github.com/0xPlayerOne/code-foundry/compare/v1.48.4...v1.48.5) (2026-10-22)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** serialize billing receipt and report uploads ([#773](https://github.com/0xPlayerOne/code-foundry/issues/773)) ([6497225](https://github.com/0xPlayerOne/code-foundry/commit/6497225bf2d672380b6b5231378b424dffb8afbb))
9
+
3
10
  ## [1.48.4](https://github.com/0xPlayerOne/code-foundry/compare/v1.48.3...v1.48.4) (2026-10-22)
4
11
 
5
12
 
@@ -133,16 +140,9 @@
133
140
 
134
141
  * **billing:** emit the codeql input as a YAML boolean ([#735](https://github.com/0xPlayerOne/code-foundry/issues/735)) ([e0b348c](https://github.com/0xPlayerOne/code-foundry/commit/e0b348c9a3c730e46210fe0b9dc46af49c9db605))
135
142
 
136
- ## [1.45.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.45.0...v1.45.1) (2026-10-06)
137
-
138
-
139
- ### Bug Fixes
140
-
141
- * **billing:** declare the runner inputs the callers always forward ([#733](https://github.com/0xPlayerOne/code-foundry/issues/733)) ([f7a29cb](https://github.com/0xPlayerOne/code-foundry/commit/f7a29cb6dbc9a8695a9bef9e85ccce82aa9c84db))
142
-
143
143
  <!-- code-foundry: packaged changelog -->
144
144
 
145
145
  ---
146
146
 
147
- This packaged changelog lists the 20 most recent releases; 252 older releases are omitted to keep the package small.
147
+ This packaged changelog lists the 20 most recent releases; 253 older releases are omitted to keep the package small.
148
148
  See the [full changelog](https://github.com/0xPlayerOne/code-foundry/blob/main/CHANGELOG.md) for the complete history.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.48.4",
3
+ "version": "1.48.5",
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": {