Skip to content

perf: run benchmarks daily and deduplicate regression issues#1871

Merged
Mossaka merged 2 commits intomainfrom
feat/1865-daily-benchmarks
Apr 9, 2026
Merged

perf: run benchmarks daily and deduplicate regression issues#1871
Mossaka merged 2 commits intomainfrom
feat/1865-daily-benchmarks

Conversation

@Mossaka
Copy link
Copy Markdown
Collaborator

@Mossaka Mossaka commented Apr 9, 2026

Summary

  • Change benchmark schedule from weekly (Mondays) to daily at 06:00 UTC for faster regression detection
  • Deduplicate regression issues: before creating a new issue, check for an existing open issue with performance + needs-investigation labels. If one exists, comment on it with updated data instead of creating duplicates.

Test plan

  • Verify cron syntax is valid for daily runs
  • Verify dedup logic: when an open regression issue exists, new regressions add a comment instead of a new issue
  • Verify first regression (no existing issue) still creates a new issue

Closes #1865
Closes #1868

🤖 Generated with Claude Code

- Change cron schedule from weekly (Mondays) to daily at 06:00 UTC
- When a regression is detected, check for an existing open issue with
  performance+needs-investigation labels before creating a new one.
  If one exists, comment on it with updated data instead of duplicating.

Closes #1865
Closes #1868

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 9, 2026 23:02
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

✅ Coverage Check Passed

Overall Coverage

Metric Base PR Delta
Lines 85.85% 85.95% 📈 +0.10%
Statements 85.76% 85.85% 📈 +0.09%
Functions 87.54% 87.54% ➡️ +0.00%
Branches 78.56% 78.61% 📈 +0.05%
📁 Per-file Coverage Changes (1 files)
File Lines (Before → After) Statements (Before → After)
src/docker-manager.ts 86.3% → 86.6% (+0.36%) 85.9% → 86.2% (+0.35%)

Coverage comparison generated by scripts/ci/compare-coverage.ts

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the performance monitoring workflow to detect regressions sooner and reduce issue spam by reusing an existing open regression issue when possible.

Changes:

  • Switch the benchmark schedule from weekly to daily at 06:00 UTC.
  • Add deduplication logic: if an open issue exists with performance + needs-investigation, comment on it instead of creating a new issue.
Show a summary per file
File Description
.github/workflows/performance-monitor.yml Changes cron cadence to daily and adds “comment vs create issue” dedup logic for regression reporting.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 1/1 changed files
  • Comments generated: 2

Comment on lines +176 to +179

if (existing.data.length > 0) {
// Comment on existing issue instead of creating a duplicate
const issueNumber = existing.data[0].number;
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issues.listForRepo returns both Issues and Pull Requests. With the current logic, an open PR that happens to have the performance + needs-investigation labels could be selected and then the workflow would comment on the PR instead of the regression issue. Filter existing.data to exclude items with the pull_request field (or switch to a search that targets issues only) before deciding whether an existing regression issue exists.

Suggested change
if (existing.data.length > 0) {
// Comment on existing issue instead of creating a duplicate
const issueNumber = existing.data[0].number;
const existingIssues = existing.data.filter(item => !item.pull_request);
if (existingIssues.length > 0) {
// Comment on existing issue instead of creating a duplicate
const issueNumber = existingIssues[0].number;

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in a6bde85: added existing.data.filter(item => !item.pull_request) to exclude PRs, and bumped per_page from 1 to 5 to account for the filtering.

Comment on lines +182 to +185
repo: context.repo.repo,
issue_number: issueNumber,
body: `## Updated Regression Data\n\n**Run:** [${context.runId}](${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId})\n\n${body}`,
});
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment body currently embeds the full body payload (including the raw JSON details/code block). On daily runs this can create very large comments and may hit GitHub's comment size limits, causing the workflow to fail when trying to comment. Consider making the update comment a shorter summary (e.g., run link + regression list + key stats) and link to the workflow artifacts for full JSON instead of duplicating the entire report each time.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in a6bde85: trimmed the update comment to a short summary (date, run link, commit SHA, regression list) with a link to the workflow run for full results and artifacts. No more raw JSON in comments.

Address Copilot review feedback:
- Filter out pull requests from issues.listForRepo results since the API
  returns both issues and PRs; an open PR with matching labels could be
  mistakenly selected instead of a regression issue.
- Reduce update comment size to a short summary (date, run link, commit,
  regression list) with a link to full artifacts, avoiding potential
  GitHub comment size limits on daily runs.
- Bump per_page from 1 to 5 to account for PRs being filtered out.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Mossaka Mossaka merged commit 7258a16 into main Apr 9, 2026
38 of 40 checks passed
@Mossaka Mossaka deleted the feat/1865-daily-benchmarks branch April 9, 2026 23:09
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

Smoke Test Results

  • ✅ GitHub MCP: "perf: run benchmarks daily and deduplicate regression issues" / "perf: bump benchmark iterations from 5 to 30 and wire up workflow input"
  • ✅ Playwright: github.com title contains "GitHub"
  • ✅ File write: /tmp/gh-aw/agent/smoke-test-claude-24217646404.txt created
  • ✅ Bash: file contents verified

Overall: PASS

💥 [THE END] — Illustrated by Smoke Claude

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

🏗️ Build Test Suite Results

Ecosystem Project Build/Install Tests Status
Bun elysia 1/1 passed ✅ PASS
Bun hono 1/1 passed ✅ PASS
C++ fmt N/A ✅ PASS
C++ json N/A ✅ PASS
Deno oak N/A 1/1 passed ✅ PASS
Deno std N/A 1/1 passed ✅ PASS
.NET hello-world N/A ✅ PASS
.NET json-parse N/A ✅ PASS
Go color 1/1 passed ✅ PASS
Go env 1/1 passed ✅ PASS
Go uuid 1/1 passed ✅ PASS
Java gson 1/1 passed ✅ PASS
Java caffeine 1/1 passed ✅ PASS
Node.js clsx All passed ✅ PASS
Node.js execa All passed ✅ PASS
Node.js p-limit All passed ✅ PASS
Rust fd 1/1 passed ✅ PASS
Rust zoxide 1/1 passed ✅ PASS

Overall: 8/8 ecosystems passed — ✅ PASS

Generated by Build Test Suite for issue #1871 · ● 432.9K ·

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deduplicate regression issues on daily benchmark runs Run performance benchmarks daily instead of weekly

2 participants