@@ -378,29 +378,26 @@ jobs:
378378 path : leak-results
379379 continue-on-error : true
380380
381- - name : Write job summary
381+ - name : Generate unified summary
382382 run : |
383- # Merge ci-summary.md files from all groups (they may be in nested dirs)
384- SUMMARIES=$(find perf-results -name 'ci-summary.md' 2>/dev/null)
385- if [[ -n "$SUMMARIES" ]]; then
386- for f in $SUMMARIES; do
387- cat "$f" >> "$GITHUB_STEP_SUMMARY"
388- echo "" >> "$GITHUB_STEP_SUMMARY"
389- done
390- else
391- echo "⚠️ No summary files generated. Check perf-output.log artifacts." >> "$GITHUB_STEP_SUMMARY"
392- fi
393-
383+ LEAK_ARG=""
394384 if [[ -f leak-results/.chat-simulation-data/ci-summary-leak.md ]]; then
395- echo "" >> "$GITHUB_STEP_SUMMARY"
396- cat leak-results/.chat-simulation-data/ci-summary-leak.md >> "$GITHUB_STEP_SUMMARY"
385+ LEAK_ARG="--leak-summary leak-results/.chat-simulation-data/ci-summary-leak.md"
397386 fi
398387
399- - name : Zip diagnostic outputs
388+ node scripts/chat-simulation/merge-ci-summary.js \
389+ --results-dir perf-results \
390+ --output ci-summary.md \
391+ $LEAK_ARG
392+
393+ cat ci-summary.md >> "$GITHUB_STEP_SUMMARY"
394+
395+ - name : Collect diagnostic outputs
400396 run : |
401397 mkdir -p collected
398+ cp ci-summary.md collected/
402399
403- # Collect perf logs from all groups (preserve group name to avoid overwrite)
400+ # Collect perf logs from all groups
404401 for f in perf-results/perf-results-*/perf-output.log; do
405402 GROUP=$(basename "$(dirname "$f")")
406403 cp "$f" "collected/perf-output-${GROUP}.log" 2>/dev/null || true
@@ -426,13 +423,23 @@ jobs:
426423 cp leak-results/.chat-simulation-data/chat-simulation-leak-results.json collected/
427424 fi
428425
429- - name : Upload combined artifacts
426+ - name : Upload results
430427 uses : actions/upload-artifact@v7
431428 with :
432- name : chat-perf-${{ env.BASELINE_COMMIT || 'default-baseline' }}-vs-${{ env.TEST_COMMIT }}
429+ name : chat-perf-results
433430 path : collected/
434431 retention-days : 30
435432
433+ - name : Delete intermediate artifacts
434+ if : always()
435+ uses : geekyeggo/delete-artifact@v5
436+ with :
437+ name : |
438+ build-output
439+ perf-results-*
440+ leak-results
441+ failOnError : false
442+
436443 - name : Fail on regression
437444 if : needs.chat-perf.result == 'failure' || (inputs.skip_leak_check != true && needs.leak-check.result == 'failure')
438445 run : |
0 commit comments