Repository navigation
CI performance dashboard #1182
Description
Maintained by the CI profiler routine, which runs every 4h. Each run replaces this body and carries the history rows over.
Headline (run 2026-10-15 08:16 UTC)
Window: 2026-10-14 08:16 → 2026-10-15 08:16 (run list reaches back to 12:24). 23 PRs merged. All 19 merge_group CI runs in the sample succeeded, with 0 evictions, 0 failures, 0 cancellations and 0 re-runs. 0 non-success jobs in the 1,723 sampled. Entries still arrive in pairs at about :48 each hour; only 2 merges (#1559, #1560 at 05:49) since the last run.
- The 10-15 nightly was green. Run 38688589166 (05:46 → 06:11, 25 min) passed every leg, including the old-uv legs that failed on 10-14. #1525 delivered.
- Depot hosts stayed fast overnight. Slow-start share of Depot Linux jobs: 00h 6% (9/161), 01h 0% (0/158), 02h 17%, 03h 0%, 05h 21% (53/254, 48 of them nightly jobs), 06h 0% (0/155), 08h 0% (0/29). The 9 entries enqueued 23:48–05:49 took 8.07–9.75 min enqueue → merge, against 11.37–12.42 for the 6 entries at 16:48–20:48. #1512 stays open, with no comment (last fresh numbers 10-15 00:20, one a day): it relapsed once after a quiet night, so it waits for a clean busy day (08h–20h) before closing.
- 6 full-matrix CI dispatches now in the window on
agent/fix-ci-*-envelope-assertsbranches (Tracking: assert stable codes instead of human sentences in CLI tests, and fold the covgap suites #1089 test refactors), triggered from the maintainer account: 23:03, 00:09, 01:19, 03:17, 05:03, 06:18. At ~380 job-min each (240 Linux / 78 Windows / 62 macOS) that is ~1.44k / 0.47k / 0.37k job-min, more than all merge_group runs combined and all of the macOS minutes apart from the nightly. macOS queue wait stayed at 0.13 / 0.17 min, so there is no runner pressure. Still not filed: it is a manual choice, and since the refactors change e2e assertions that only the full tier runs, the full matrix may be intended. If it is not, ascopechoice input onworkflow_dispatchinci.yml(next tohosted_e2e; today every full-tierif:keys ongithub.event_name == 'workflow_dispatch') would let a dispatch run onlytest+ the PR tier. - No new issues. Nothing closed. Nothing new cleared the bar. #1248 gets no comment, because no batch went above 2 entries.
- CI: scan mod tests assert codes, not sentences (#1089) #1560 (
ci-perflabel) merged at 05:57. Openci-perfPRs: CI: vex tests assert codes, not sentences (#1089) #1563, CI: cli suite tests assert codes, not sentences (#1089) #1565 (Tracking: assert stable codes instead of human sentences in CLI tests, and fold the covgap suites #1089 test refactors, no CI-time effect) and CI: fold last top-level covgap test binaries (#1089) #1568 "fold last top-level covgap test binaries", which may shortenCompile the CLI and every CLI test target/coveragelink time; it will be measured after it merges.
Sample: 300 of 369 runs in 24h. The run list is capped at 3 pages, which reach back to 10-14 12:24. Job detail (filter=all, first page) was fetched for 73 runs:
- all 19 CI merge_group runs
- all 13 push runs
- the nightly and the 6 CI dispatches (first 100 jobs each; dispatch cost carried from the full 245-job count of the last run)
- every third CI pull_request run (34)
That is 1,723 non-skipped jobs. Merge-queue timelines were read for the 15 most recent merges. No job logs were read, because the step timings were enough. The run used about 100 REST requests.
| metric | 24h |
|---|---|
| PRs merged | 23 (since 08:16) |
| Merge queue enqueue → merge | p50 9.05 / p90 12.2 min (n=15, range 8.07–12.42). • Since 23:48 (fast hosts): 8.07–9.75 (n=9) • 16:48–20:48 (slow hosts): 11.37–12.42 (n=6) 0 evictions. Every entry was enqueued once. |
merge_group created → ci-ok |
p50 8.55 / p90 11.38 (n=19, range 7.52–11.75). Last job before ci-ok: coverage in 12 runs, the Gradle e2e leg in 7. |
PR run created → ci-ok |
p50 9.68 / p90 12.13 (n=11 full runs). 23 of 34 sampled runs were ci-ok-only stubs. |
push to main created → ci-ok |
p50 4.12 / p90 5.89 (n=13, 9.9 job-min per run) |
| Nightly | 10-15 05:46, success, 25 min wall. |
| Linux queue wait p50 / p90 / max | Depot 0.02 / 0.02 / 0.93 (n=1,647). Slow hosts show up as start-up gap and slower run time, not queue wait. |
| macOS queue wait | 0.13 / 0.17 (nightly + dispatch only, n=28). No macOS job ran on PR, merge_group or push. |
| Windows queue wait p50 / p90 / max | 0.03 / 0.05 / 0.07 (n=48) |
| Job-min/day (Linux / Windows / macOS) | ~4.45k / 0.61k / 0.43k. By event: • merge_group: ~0.89k L + 0.06k W (38.6 L / 2.8 W per run, ~23 runs) • CI pull_request: ~1.72k (14.1 per run including stubs, ~122 runs/day) • push: ~0.16k • nightly: ~0.24k / 0.08k / 0.06k • 6 CI dispatches: ~1.44k / 0.47k / 0.37k • hosted fail-fast watcher, not counted above: ~0.2k |
Top jobs by sampled minutes (PR + merge_group + push):
coverage: 240 min, p50 5.92 / p90 8.87- Gradle
e2eleg: 152 min, p50 4.66 / p90 6.88 e2e_vex_build pip: 84 min, p50 2.71e2e_redirect_npm_build: 83 min, p50 2.60hosted-e2e: 82 min, p50 1.55 / p90 2.98clippy: 69 min, p50 1.45 / p90 2.23e2e-build: 68 min, p50 1.35yarn-classic: 55 minyarn-berry: 54 minwindows-compile-check: 53 min, p50 2.65node-addon: 49 min
Top steps: Run e2e tests 376 min (510 jobs), Run tests with coverage 187 (43), Checkout 62, Run hosted-mode production e2e 46, Set up job 44, Install Rust 41 (324 jobs), Compile the CLI and every CLI test target 39.
Critical path (unchanged): clippy → coverage → ci-ok, in parallel with e2e-build → Gradle e2e leg → ci-ok. On fast hosts the two paths finish within about 1 min of each other.
Other items watched, not filed (below the bar):
- Full-matrix CI dispatches (~380 job-min each, 6 in the window, see above): a manual choice
Install Rust(~0.12k/day spread over 324 sampled jobs)- Sharding
coverageor splitting the Gradle leg (~1 min, because the two paths finish within a minute of each other on fast hosts) - The hosted fail-fast watcher (no cost)
Merge-queue settings (ruleset 24668460, read 08:20): unchanged.
max_entries_to_build5 andmax_entries_to_merge5min_entries_to_merge_wait_minutes5- ALLGREEN, timeout 90, SQUASH
History
| run (UTC) | merges/24h | MQ enq→merge p50/p90 (min) | mg CI success p50 | PR push→ci-ok p50/p90 | mac queue p50/p90 | linux queue p50/p90 | job-min/day L/W/M |
|---|---|---|---|---|---|---|---|
| 2026-10-15 08:16 | 23 PRs merged (19 mg CI successes since 12:24; 0 failures, 0 evictions) | 9.05 / 12.2 (n=15; the 9 entries since 23:48 took 8.07–9.75; 16:48–20:48 entries 11.37–12.42) | 8.55 (n=19, p90 11.38; the 9 runs since 23:48 7.52–9.03) | 9.68 / 12.13 (n=11 full runs) | 0.13 / 0.17 (nightly + 6 CI dispatches only) | 0.02 / 0.02 (Depot, n=1,647) | ~4.45k / 0.61k / 0.43k (incl. 6 full-matrix CI dispatches ≈ 1.44k / 0.47k / 0.37k; mg 38.6 L / 2.8 W per run; Depot slow-start 0% in 06h–08h, 05h hits were the nightly; nightly green → #1525 delivered) |
| 2026-10-15 04:16 | 26 PRs merged (21 mg CI successes since 08:48; 0 failures, 0 evictions) | 9.75 / 12.21 (n=15; the 7 entries since 23:48 took 8.06–9.75; 16:48–20:48 entries 11.36–12.41) | 8.55 (n=21, p90 11.6; the 6 runs since 23:48 7.52–9.03) | 9.65 / 11.37 (n=18 full runs) | 0.13 / 0.17 (4 CI dispatches only) | 0.02 / 0.02 (Depot, n=1,664) | ~4.1k / 0.38k / 0.25k (incl. 4 full-matrix CI dispatches ≈ 0.96k / 0.31k / 0.25k; mg 40.0 L / 2.7 W per run; Depot slow-start 4% / 3% / 17% / 0% in 00h–03h, down from 58% at 23h) |
| 2026-10-15 00:16 | 25 PRs merged (21 mg CI successes since 04:49; 0 failures, 0 evictions) | 10.27 / 12.22 (n=15; fast hosts 7.75–8.88; the 6 entries 16:48–20:48 took 11.4–12.4) | 8.15 (n=21, p90 11.6; fast 7.3–8.15; slow 9.3–12.9; 23:48 back to 7.5–7.6) | 9.65 / 11.37 (n=16 full runs; 7.3–8.2 with no slow host) | 0.12 / 0.17 (nightly + dispatch only) | 0.02 / 0.02 (Depot, n=1,553) | ~3.2k / 0.19k / 0.09k (incl. 2 CI dispatches; mg 38.9 L / 2.7 W per run; Depot slow-start 61% 16:16–20:16, 37% 20:16–00:10; coverage 8.3 vs 5.96 min on slow vs fast hosts) |
| 2026-10-14 20:16 | 30 PRs merged (23 mg CI successes since 23:49; 0 failures, 0 evictions) | 8.93 / 12.22 (n=15; 7.77–8.93 on fast hosts; all 5 entries since 16:48 took 11.4–12.4) | 8.15 (n=23, p90 11.6; fast hosts 7.1–8.55; slow 9.3–12.9; all 5 since 16:48 10.6–11.75) | 8.23 / 10.83 (n=13 full runs) | 0.12 / 0.17 (nightly only) | 0.02 / 0.02 (Depot, n=1,346) | ~2.9k / 0.15k / 0.06k (mg 39.0 L / 2.6 W per run; Depot slow-start 59% of Linux jobs since 16:16 (4-core 59%, 16-core 68%); slow hosts also run coverage 8.2–9.9 min vs p50 5.85) |
| 2026-10-14 16:16 | 31 PRs merged (25 mg CI successes since 22:49; 0 failures, 0 evictions) | 8.73 / 11.4 (n=19; 7.77–8.93 except 6 slow-host entries 10.0–13.4) | 8.55 (n=25, p90 10.73; fast hosts 7.80 vs slow 9.64) | 7.92 / 11.03 (n=17 full runs) | 0.12 / 0.17 (nightly only) | 0.02 / 0.02 (Depot, n=1,509) | ~3.3k / 0.15k / 0.06k (mg 37.0 L / 2.6 W per run; Depot slow-start back: 16-core 60% at 21–01h, 30% and 4-core 50% at 12–16h → #1512 reopened) |
| 2026-10-14 12:17 | 53 PRs merged (54 mg CI successes 12:17–11:49, 1 failure, 10 cancelled; 4 since 08:16) | 8.58 / 11.4 (n=15; 7.8–8.9 except #1525 13.4 on a slow host) | 8.52 (n=54, p90 11.0; 7.3–8.6 since 09:49, 12.9 at 08:48) | 8.23 / 10.52 (n=15 full runs; 7.65 / 8.63 since 08:16, n=8) | 0.12 / 0.17 (nightly only) | 0.02 / 0.02 (Depot, n=2,605) | ~4.5k / 0.24k / 0.06k (mg 37.6 L / 2.6 W per run; Depot slow-start blips at 08:xx 91% and 12:xx 61%, 0–2% in 10:xx–11:xx) |
| 2026-10-14 08:16 | 47 PRs merged (50 mg CI successes 13:11–07:49, 1 failure, 10 cancelled) | 8.75 / 11.4 (n=15; 7.8–8.9 since 01:48) | 8.55 (n=50, p90 11.0; 7.3–7.9 since 04:16, n=5) | 9.63 / 12.72 (n=9 full runs, created→ci-ok) | 0.12 / 0.17 (nightly only) | 0.02 / 0.02 (Depot, n=2,296) | ~4.9k / 0.23k / 0.06k (mg 37.5 L / 2.6 W per run, ~33 L since 04:16; Depot slow-start 3%/1% → #1512 closed; nightly failed on old-uv legs) |
| 2026-10-14 04:16 | 44 PRs merged (45 mg CI successes 13:11–03:49, 1 failure, 10 cancelled) | 10.1 / 11.5 (n=15; 8.2–8.9 since 01:48) | 8.6 (n=45, p90 11.0; 7.1–8.6 since 01:48, n=4) | 9.85 / 12.12 (n=18 full runs, created→ci-ok) | none ran | 0.02 / 0.02 (Depot, n=2,300) | ~5.5k / 0.22k / 0.064k (mg 38.0 L / 2.6 W per run; 33 at 03:49; Depot slow-start share fell to 13–15% after 01:00) |
| 2026-10-14 00:16 | ~41 (41 mg CI successes 13:11–23:49; 40 PRs merged since 00:16; 0 mg runs 00:16–13:11) | 11.3 / 12.0 (n=15; 9.8–12.7) | 8.7 (n=41, p90 11.0; 9.5 since 20:16, n=8) | 9.92 / 12.08 (n=19 full runs, created→ci-ok) | none ran | 0.02 / 0.02 (Depot, n=2,188) | ~5.8k / 0.21k / 0.064k (mg 36.7 L / 2.6 W per run; 16-core hosts still slow, 4-core recovered at 22h) |
| 2026-10-13 20:16 | ~39 (39 mg CI successes, 1 failure, 10 cancelled) | 11.4 / 15.6 (n=15; 9.7–12.7 outside the 13:5x eviction) | 8.6 (n=39; 10.8 since 15:49, n=8) | 10.63 / 12.07 (n=13 full runs since 16:20, created→ci-ok) | none ran | 0.02 / 0.02 (Depot, n=1,980) | ~4.7k / 0.21k / 0.064k (mg per run 36 → 52 L job-min after 15:20: slow Depot hosts) |
| 2026-10-13 16:17 | ~39 (39 mg CI successes; 14-entry burst 13:11–13:35; 1 flake eviction 13:45 → 10 cancelled rebuilds) | 11.6 / 23.7 (n=18; burst entries 6–14 10.4–18.1, eviction victims 23.7–25.3) | 8.38 (n=27, p90 10.83) | 8.02 / 11.67 (n=14 full runs, created→ci-ok) | none ran (no macOS on PR/mg/push) | 0.02 / 0.02 (Depot, n=1,620) | ~4.8k / 0.21k / 0.064k (mg 36.4 / 2.6 / 0 per run + 340 L job-min in cancelled rebuilds) |
| 2026-10-13 12:16 | ~33 (37 mg runs, carried; 0 merges since 22:57) | 8.8 / 10.5 (n=15, carried) | 8.22 (carried) | 7.57 / 7.87 (n=5 fresh full runs, created→ci-ok) | 0.13 / 0.17 (nightly only, carried) | 0.02 / 0.02 (Depot, n=145) | ~3.9k / 0.18k / 0.064k (Release dispatches mostly aged out; mg 35.4 / 2.6 / 0 per run) |
| 2026-10-13 08:16 | ~33 (37 mg runs, carried; 0 merges since 22:57) | 8.8 / 10.5 (n=15, carried) | 8.22 (n=33, carried) | 7.6 / 9.0 (n=6 fresh full runs, created→ci-ok) | 0.13 / 0.17 (nightly only) | 0.02 / 0.02 (Depot) | ~4.1k / 0.25k / 0.10k (incl. Release dispatches; ~3.95k / 0.18k / 0.064k without; nightly green, 244 / 82 / 64) |
| 2026-10-13 04:16 | ~33 (37 mg runs; 0 merges since 22:57; 1 eviction, carried) | 8.8 / 10.5 (n=15, carried) | 8.22 (n=33, p90 9.21) | 8.02 / 10.04 (n=10 full runs, created→ci-ok) | 0.12 / 0.15 (nightly + Release only) | 0.02 / 0.02 (Depot, n=1,828) | ~4.1k / 0.22k / 0.07k (incl. 3 Release dispatches; ~3.95k / 0.15k / 0.035k without; mg 35.4 / 2.6 / 0 per run; push ~8.7 per run after #1415) |
| 2026-10-13 00:16 | 35 (40 mg runs; 1 eviction, carried; release 5.0.0) | 8.8 / 10.5 (n=15, max 10.5, 0 evictions) | 8.15 (n=36, p90 9.2) | 8.43 / 9.95 (n=10 full runs, created→ci-ok) | 0.12 / 0.15 (nightly + dispatch only) | 0.02 / 0.02 (Depot, n=2,309) | ~5.4k / 0.35k / 0.16k (incl. 3 CI + 3 Release dispatches; ~4.9k / 0.16k / 0.03k without; mg 35.1 / 2.7 / 0 per run; push ~8.7 per run) |
| 2026-10-12 20:16 | 36 (42 mg runs; 15:44 burst drained by 16:19; 1 eviction) | 9.7 / 28.8 (n=15; burst entries 27.6–31.9, others 7.9–10.4) | 7.93 (n=38, p90 9.03; 8.43 since 16:16) | 7.67 / 10.22 (n=8 full runs, created→ci-ok) | 0.12 / 0.17 (nightly + dispatch only) | 0.02 / 0.02 (Depot, n=2,534) | ~4.4k / 0.32k / 0.14k (incl. 3 CI + 2 Release dispatches; ~4.05k / 0.17k / 0.03k without; mg 33.9 / 2.9 / 0 per run; push now ~8 per run) |
| 2026-10-12 16:16 | 31 (42 mg runs; 11-entry burst at 15:44; 1 eviction) | 8.9 / 25.7 (n=15; burst entries 6–10 25.2–26.4) | 7.63 (n=34, p90 8.67) | 7.93 / 9.05 (n=9 full runs, created→ci-ok) | 0.12 / 0.17 (nightly + dispatch only) | 0.02 / 0.02 (Depot, n=2,854) | ~4.4k / 0.32k / 0.12k (incl. 3 dispatches; ~4.1k / 0.20k / 0.03k without; mg 32.3 / 3.6 / 0 per run) |
| 2026-10-12 12:26 | 23 (23 mg runs; no merges since 02:57; timelines carried) | 8.0 / 8.3 (n=15, carried) | 7.33 (n=23, p90 9.2) | 7.38 / 8.9 (n=12 full runs, created→ci-ok; 1 flaky coverage re-run) | 0.13 / 0.17 (nightly only) | 0.02 / 0.02 (Depot, n=2,035) | ~3.9k / 0.34k / 0.19k (incl. 3 dispatches; ~3.2k / 0.18k / 0.06k without; mg 30.7 / 4.6 / 0 per run) |
Open ci-perf issues by ROI
ROI on one scale: (thousands of job-min/day weighted Linux ×1, Windows ×2, macOS ×3, plus 1 per critical-path or PR-latency minute) × confidence ÷ effort (S=1, M=2, L=3).
| ROI | issue | saving | status |
|---|---|---|---|
| ~2.5 | #1512 (settings) slow Depot hosts | ~3.5 min on each hit merge (6 of 15 sampled merges in 24h), plus ~2 min on PR feedback | Fast since 23:48 (0% slow-start at 06h–08h; 9 merges at 8.07–9.75 min). Kept open until a full busy day (08h–20h) is clean, since it already relapsed once. Needs a human to raise it with Depot. |
| ~1.0 | #1248 (settings) merge-queue build concurrency | ~2–10 min for each entry past the 5th in a burst | Needs a human decision. No batch went above 2 entries in this window. |
Open ci-perf / ci-janitor PRs: #1568 fold last top-level covgap test binaries (#1089; may cut coverage compile/link time, to be measured after merge), #1565 and #1563 (#1089 test refactors, no CI-time effect).
Merged ci-perf / ci-janitor PRs (last 7 days) and measured effect
| PR | merged | before → after |
|---|---|---|
| #1560 scan mod tests assert codes, not sentences (#1089) | 10-15 05:57 | Test refactor. No CI-time effect expected or measurable. |
| #1556 scan hosted tests assert codes, not sentences (#1089) | 10-15 02:57 | Test refactor. No CI-time effect expected or measurable. |
| #1546 apply suite asserts codes, not sentences (#1089) | 10-14 21:00 | Test refactor. No CI-time effect expected or measurable. |
| #1544 vendor suite asserts codes, not sentences (#1089) | 10-14 20:00 | Test refactor. No CI-time effect expected or measurable yet. |
| #1525 fix nightly old-uv orphan-unwind failure in uv e2e (ci-janitor) | 10-14 09:01 | The 10-14 nightly failed on old-uv legs → the 10-15 nightly 38688589166 was green (0 failed jobs). Delivered. |
| #1497 fix phantom version bump in release-readiness (ci-janitor) | 10-13 19:59 | Correctness only. No effect on timing. |
#1484 hermetic spawns in vendor build tests; serializes the SOCKET_NPM_REGISTRY test |
10-13 14:59 | The flake from #1466 failed coverage 2× at 13:45–14:23 (1 eviction, 10 cancelled rebuilds, 340 job-min) → 0 coverage failures in the 50 merge_group runs since 14:16 (through 10-14 07:49). Delivered. |
| #1459 ride out crates.io blips in required cargo e2e legs (ci-janitor) | 10-13 13:21 | Reliability only. 0 cargo e2e failures since. |
| #1415 run the full e2e tier nightly, not per push | 10-12 16:11 | Push run: 50 jobs and 38.7–42.7 job-min (n=3, 15:53–16:10) → 9 jobs and 7.2–11.3 job-min (n=14, mean ~8.7, through 22:57). Push created → ci-ok 4.3–5.25 → 3.1–4.85 min. That is ~−0.45k Linux job-min/day at 21 pushes/day, better than the ~−300 expected. Delivered. |
| #1438 annotate failing tests in the coverage job (ci-janitor) | 10-12 17:58 | Diagnostics only. |
| #1418 env race flake in cache_env scrub self-tests (ci-janitor) | 10-12 16:10 | 0 coverage failures in merge_group after 16:02 (n=23 through 22:49). #1416 is closed. |
| #1411 macOS go.work member match (ci-janitor) | 10-12 16:18 | The 10-13 nightly 38353589047 was green, including test (macos-latest, 1), which failed on 10-12. Delivered. |
| #1392 Windows flake in notifier dead-endpoint test (ci-janitor) | 10-11 19:23 | 0 Windows failures in merge_group since. |
| #1386 type-check Windows in the queue, in parallel | 10-11 18:21 | mg created → ci-ok 9.65 → 7.6–7.9 min. e2e-build-windows hasn't been last before ci-ok in this window. Delivered. |
| #1383 skip PR re-test after a clean main merge | 10-11 18:01 | Not yet observable. 0 of ~330 sampled PR runs across seven profiles took the path. |
| #1387 re-download truncated e2e-bin archives (ci-janitor) | 10-11 17:50 | 0 e2e-bin download failures. |
| #1376 dead Depot runner doesn't cancel a merge-queue run | 10-10 13:37 | 0 runner losses. |
| #1355 reuse the merge-queue verdict on main, trim coverage/sbt | 10-10 08:57 | Push-to-main run 22+ → 3.4 min. Delivered. |
| #1375 lean per-package-manager gate | 10-09 21:29 | Job-min per mg run 312 / 69 / 60 → 33.9 / 2.9 / 0. PR → ci-ok 21.8 → 7.7. Delivered. |
| #1362 Depot Linux runners | 10-09 20:53 | Linux queue wait p90 18.3 → 0.02 min. Delivered. |
| #1284, #1275 compat path filters | 10-09 | No compatibility workflow ran in the window. Delivered. |
Method notes
- GraphQL is blocked in this environment, so merge-queue state comes from REST timelines of merged PRs. The timelines use the last enqueue before the merge.
- Jobs are fetched with
filter=all. Queue wait = jobstarted_at−created_at; skipped jobs are excluded. "Start-up gap" = jobstarted_at→ first stepstarted_at; over 15 s counts as a slow host. - Critical path = merge_group run
created_at→ci-okcompleted_at. - Daily job-min = per-run mean × 24h run count per event. The PR count is scaled from the 3 listed pages: this run, 101 PR runs over ~19.9 h, about 122 per day. Merges per day come from the closed-PR list.
Generated by Claude Code
Activity
mikolalysenko commentedon Oct 8, 2026
[agent] There are now two open dashboard issues: this one and #1175, both titled "CI performance dashboard" and labeled
ci-perf-dashboard. The body says it is maintained in place, so the profiler routine should update one issue rather than open a new one each run. I'm not closing either one, because I can't tell which issue the routine will update next. Whoever owns the profiler should close the copy it no longer updates.Generated by Claude Code