fix: events.jsonl not collected — copy step uses flat glob, misses session subdirectories#23992
fix: events.jsonl not collected — copy step uses flat glob, misses session subdirectories#23992
Conversation
… in subdirectories The Copilot CLI writes events.jsonl inside session subdirectories (~/.copilot/session-state/<session-uuid>/events.jsonl), but the copy step used a flat glob (*.jsonl) that only matched the top level. Replace the flat glob with find -name '*.jsonl' to recursively locate session files. Preserve the session ID in the output filename (events-<session-id>.jsonl) to avoid collisions when multiple sessions ran in the same workflow. Closes #23990 Co-authored-by: Copilot <[email protected]>
There was a problem hiding this comment.
Pull request overview
Fixes missing Copilot session events.jsonl in workflow artifacts by updating the “Copy Copilot session state files to logs” step to discover .jsonl files within per-session subdirectories and copy them into the logs directory with session IDs in the filenames.
Changes:
- Replace the flat
cp "$SESSION_STATE_DIR"/*.jsonllogic with a recursivefind+ copy loop that preserves session IDs in output filenames. - Update the session-copy step unit test to assert the new
find-based behavior. - Regenerate workflow lock files and wasm golden fixtures to reflect the updated step logic.
Reviewed changes
Copilot reviewed 123 out of 123 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/workflow/copilot_engine_execution.go | Updates the generated workflow step to recursively locate and copy session .jsonl files, preserving session IDs in filenames. |
| pkg/workflow/copilot_session_copy_test.go | Updates assertions to validate the new find-based recursive copy behavior and session ID filename preservation. |
| pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/basic-copilot.golden | Regenerated golden output reflecting the updated session state copy step. |
| pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/with-imports.golden | Regenerated golden output reflecting the updated session state copy step. |
| .github/workflows/workflow-skill-extractor.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/workflow-normalizer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/workflow-health-manager.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/workflow-generator.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/weekly-safe-outputs-spec-review.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/weekly-issue-summary.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/weekly-editors-health-check.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/weekly-blog-post-writer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/video-analyzer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/update-astro.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/ubuntu-image-analyzer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/tidy.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/test-workflow.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/test-project-url-default.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/test-dispatcher.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/terminal-stylist.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/technical-doc-writer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/super-linter.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/sub-issue-closer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/stale-repo-identifier.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-workflow-call.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-workflow-call-with-inputs.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-update-cross-repo-pr.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-test-tools.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-temporary-id.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-service-ports.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-project.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-multi-pr.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-create-cross-repo-pr.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-copilot.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/smoke-copilot-arm.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/slide-deck-maintainer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/security-review.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/security-compliance.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/research.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/repository-quality-improver.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/repo-tree-map.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/repo-audit-analyzer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/release.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/refiner.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/q.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/python-data-charts.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/pr-triage-agent.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/pr-nitpick-reviewer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/portfolio-analyst.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/poem-bot.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/plan.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/pdf-summary.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/org-health-report.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/notion-issue-summary.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/metrics-collector.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/mergefest.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/mcp-inspector.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/layout-spec-maintainer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/jsweep.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/issue-triage-agent.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/issue-monster.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/hourly-ci-cleaner.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/gpclean.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/glossary-maintainer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/github-remote-mcp-auth-test.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/functional-pragmatist.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/firewall.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/firewall-escape.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/example-permissions-warning.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/draft-pr-cleanup.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/docs-noob-tester.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/discussion-task-miner.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dictation-prompt.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dev.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dev-hawk.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dependabot-go-checker.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dependabot-burner.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/delight.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/dead-code-remover.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-workflow-updater.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-testify-uber-super-expert.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-team-status.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-syntax-error-quality.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-semgrep-scan.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-secrets-analysis.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-safe-output-integrator.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-repo-chronicle.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-regulatory.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-performance-summary.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-news.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-mcp-concurrency-analysis.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-malicious-code-scan.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-integrity-analysis.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-firewall-report.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-file-diet.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-copilot-token-report.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-compiler-quality.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-community-attribution.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-cli-tools-tester.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-cli-performance.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-assign-issue-to-user.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/daily-architecture-diagram.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/craft.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/copilot-pr-prompt-analysis.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/copilot-pr-nlp-analysis.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/copilot-pr-merged-report.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/copilot-cli-deep-research.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/contribution-check.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/constraint-solving-potd.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/code-simplifier.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/code-scanning-fixer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/cli-consistency-checker.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/ci-coach.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/breaking-change-checker.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/brave.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/bot-detection.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/auto-triage-issues.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/artifacts-summary.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/archie.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/agentic-observability-kit.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/agent-persona-explorer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/agent-performance-analyzer.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
| .github/workflows/ace-editor.lock.yml | Regenerated lock workflow to use recursive .jsonl discovery/copy for Copilot session logs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| step = append(step, " find \"$SESSION_STATE_DIR\" -name '*.jsonl' -type f | while read -r f; do") | ||
| step = append(step, " session_id=$(basename \"$(dirname \"$f\")\")") | ||
| step = append(step, " filename=$(basename \"$f\" .jsonl)") | ||
| step = append(step, " cp -v \"$f\" \"$LOGS_DIR/${filename}-${session_id}.jsonl\"") | ||
| step = append(step, " done") |
There was a problem hiding this comment.
The find ... | while read -r f; do ...; done pipeline exits with status 1 when no .jsonl files are found (the loop body never runs, so the loop returns the failing read). In GitHub Actions this can cause the step to be marked failed and can terminate the script before the success echo. Consider explicitly handling the empty case (e.g., add || true after the pipeline, or guard the loop with a check for at least one match) so the step stays green when there’s nothing to copy.
| step = append(step, " find \"$SESSION_STATE_DIR\" -name '*.jsonl' -type f | while read -r f; do") | ||
| step = append(step, " session_id=$(basename \"$(dirname \"$f\")\")") | ||
| step = append(step, " filename=$(basename \"$f\" .jsonl)") | ||
| step = append(step, " cp -v \"$f\" \"$LOGS_DIR/${filename}-${session_id}.jsonl\"") |
There was a problem hiding this comment.
session_id=$(basename "$(dirname "$f")") assumes each matched .jsonl file is directly under ~/.copilot/session-state/<session-id>/. However the find is fully recursive, so any .jsonl under deeper paths (e.g., .../<session-id>/checkpoints/foo.jsonl) would be copied with session_id set to the nested directory name (e.g., checkpoints). To keep filenames correct and avoid unexpected copies, consider constraining the search to exactly one level of session subdirectories (e.g., -mindepth 2 -maxdepth 2 or an equivalent path pattern).
|
@copilot Review comments. Move script to file in actions/setup/sh |
Copy the full ~/.copilot/session-state/ tree (events.jsonl, session.db, plan.md, checkpoints, files) into a dedicated copilot-session-state/ subdirectory under the agent logs. This preserves the complete session context including subdirectory structure with session UUIDs. Co-authored-by: Copilot <[email protected]>
| continue-on-error: true | ||
| run: | | ||
| # Copy Copilot session state files to logs folder for artifact collection | ||
| # Copy entire Copilot session-state directory to logs for artifact collection |
There was a problem hiding this comment.
@copilot move to separate file in actions/setup/sh
There was a problem hiding this comment.
This has been done — the script is now in actions/setup/sh/copy_copilot_session_state.sh 🎉
📰 BREAKING: Report filed by Smoke Copilot
Extract inline shell logic from generateCopilotSessionFileCopyStep() into actions/setup/sh/copy_copilot_session_state.sh, consistent with other runtime scripts (parse_token_usage.sh, detect_inference_access_error.sh). Co-authored-by: Copilot <[email protected]>
TestGenerateCopilotSessionFileCopyStep in copilot_engine_test.go was checking for inline shell content that no longer exists after the refactor to actions/setup/sh/copy_copilot_session_state.sh. Update assertions to verify the script reference instead. Co-authored-by: Copilot <[email protected]>
|
📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing... |
|
✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready. |
|
🎬 THE END — Smoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨ |
|
🌑 The shadows whisper... Smoke Codex failed. The oracle requires further meditation... |
Agent Container Tool Check
Result: 12/12 tools available ✅ — PASS
|
|
🤖 Smoke test §23882603917 by
Overall:
|
There was a problem hiding this comment.
Smoke test PR review ✅ — refactoring the inline session-state copy script into actions/setup/sh/copy_copilot_session_state.sh looks clean and consistent with the existing pattern.
📰 BREAKING: Report filed by Smoke Copilot
| # ~/.copilot/session-state/<session-uuid>/files/ | ||
|
|
||
| set -euo pipefail | ||
|
|
There was a problem hiding this comment.
Good use of set -euo pipefail for robust error handling. This ensures the script fails fast on any error, unbound variable, or pipeline failure — important for a cleanup script that runs in always() steps.
| set -euo pipefail | ||
|
|
||
| SESSION_STATE_DIR="$HOME/.copilot/session-state" | ||
| LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs/copilot-session-state" |
There was a problem hiding this comment.
Nice refactor — moving this into a shared script eliminates the duplicated inline YAML across many lock files. This is consistent with the actions/setup/sh/ pattern used for other reusable shell scripts.
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
Warning The Smoke Test Run 23882603888 — PARTIAL (16✅ 2 Core: GitHub MCP ✅ | gh CLI ✅ | Serena ✅ | Build ✅ | Playwright ✅ | Tavily ✅ | File I/O ✅ | Bash ✅ | Discussion ✅ | AW Status ✅ | Slack ✅
|
There was a problem hiding this comment.
💥 Automated smoke test review - all systems nominal! (Run 23882603888)
💥 [THE END] — Illustrated by Smoke Claude
|
Add all repository please |
Problem
The "Copy Copilot session state files to logs" step used a flat glob pattern (
$SESSION_STATE_DIR/*.jsonl) that only matched files at the top level of~/.copilot/session-state/. However, Copilot CLI writesevents.jsonlinside session subdirectories:This meant the copy silently succeeded with zero files, and no
events.jsonlappeared in workflow artifacts.Fix
Replaced the flat glob with
findfor recursive discovery:The session ID is preserved in the output filename (
events-<session-uuid>.jsonl) to avoid collisions if multiple sessions ran in the same workflow.Files changed
pkg/workflow/copilot_engine_execution.gopkg/workflow/copilot_session_copy_test.go.lock.ymlfiles + wasm golden filesCloses #23990
✨ PR Review Safe Output Test - Run 23882603888