Skip to content

fix benchmark startup and cleanup checks - #2253

Merged
kevinjosethomas merged 2 commits into
mainfrom
fix/benchmark-prompt-readiness
Sep 12, 2026
Merged

kevinjosethomas merged 2 commits into
mainfrom
fix/benchmark-prompt-readiness

Conversation

@kevinjosethomas

@kevinjosethomas kevinjosethomas commented Sep 12, 2026

Copy link
Copy Markdown
Member

The new prompt bar changed the text that our startup benchmark waits for, so both main and the Bun PRs time out even after the application is ready. Some runs also lose a sample when a session exits between being listed and stopped.

This recognizes both prompt layouts and still checks that typing works without submitting a prompt. Cleanup accepts an already-exited session only when the stop command reports that exact missing session and a fresh list confirms it is gone. Other stop failures still fail the benchmark.

Tested both prompt layouts and reproduced the cleanup race in Linux sandboxes. With the fixes, the full Node.js-versus-Bun benchmark passed all measurements: three installs and ten startup/runtime trials per side, with no failures. All 44 benchmark tests and repository checks also pass. This must land on main before GitHub's trusted benchmark runs can use it.

ENG-6119

@kevinjosethomas kevinjosethomas added the no-changelog Internal change with no user-visible changelog entry label Sep 12, 2026
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Prime Agent performance — failed

PR 88e71260 compared with main 5c141697.

Overall: 0 regressed · 0 improved · 2 no clear change · 15 unavailable.

Metric Main This PR Change
Cold startup
Warm startup
Installation 26.79 s 26.02 s ≈ -0.78 s (-2.90%)
Compressed release artifacts 11.16 MB 11.16 MB ≈ -0.00026 MB (-0.00%)
Installed footprint
Idle memory, summed RSS

Python runtime

Metric Main This PR Change
Python kernel startup
Python cell round trip
Empty bash command
Bash git status
Bash 32 KiB output
35 cells / 9 shell calls
Python interrupt to done
Python state snapshot
Python state restore
Python idle RSS
Python RSS after pandas workload

Sandbox cost: ~$0.1944 — no inference calls.
Run, logs, and downloadable raw results

Methodology and samples

Main resolved at 2026-09-12T01:36:31.324376+00:00. Harness 5c141697.
Linux x64, 4 vCPU, 8 GB RAM, 20 GB disk; region us.
Image: node:24-bookworm@sha256:be23f54a88d34e8824c741b19b91064094f92c1c97b194144bfc8b50d67258e2.
Stock tools, skills, daemon, and Python bootstrap enabled; fresh homes and a fixed Git fixture.
Onboarding is dismissed; the editor starts without a selected model or submitted prompt.
Medians shown. Arrows require a 20% timing/memory change plus absolute floors and IQR.
These practical noise floors are not a statistical significance test.
Cold means stopped Prime processes; OS filesystem caches are not flushed.
No model requests or credentials. Installation excludes build/setup time.
Installer tarballs use loopback; npm/Python downloads use the network with fresh caches.
Artifact size counts release tarballs; footprint after first use includes registry packages.
MB is decimal. Summed RSS can double-count shared pages; PSS is recorded when available.
Provisioning, setup, and build durations are recorded separately in the raw results.
Kernel probes use the installed JSONL runtime, outside the TUI/TypeScript host.
Per trial: 50 Python cells, 5 calls per shell case, and one 35-cell mix (9 git status calls).
Cell/shell values are batch means; other runtime timings are single operations.
State fixture: a 10,000-row × 8-column integer DataFrame and a 10,000-integer list.
Restore runs in a fresh kernel, including pandas imports; kernel startup is excluded.
Kernel RSS covers the isolated Python process; loaded RSS follows the pandas workload.
Costs estimate full sandbox lifetimes at configured rates, including setup and build.
Budget target: $1; not a billing cap. Checks are informational.

Metric Main successful/attempted PR successful/attempted Main spread PR spread
Cold startup 0/7 0/7
Warm startup 0/7 0/7
Installation 3/3 3/3 range 1.53 s range 1.19 s
Compressed release artifacts 1/1 1/1
Installed footprint 0/0 0/0
Idle memory, summed RSS 0/0 0/0
Python kernel startup 0/0 0/0
Python cell round trip 0/0 0/0
Empty bash command 0/0 0/0
Bash git status 0/0 0/0
Bash 32 KiB output 0/0 0/0
35 cells / 9 shell calls 0/0 0/0
Python interrupt to done 0/0 0/0
Python state snapshot 0/0 0/0
Python state restore 0/0 0/0
Python idle RSS 0/0 0/0
Python RSS after pandas workload 0/0 0/0

Failures:

  • Benchmark exceeded its runtime limit
  • main cold trial 0: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 1: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 2: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 3: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 4: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 5: TimeoutError: Timed out waiting for the expected terminal state
  • main cold trial 6: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 0: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 1: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 2: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 3: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 4: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 5: TimeoutError: Timed out waiting for the expected terminal state
  • main warm trial 6: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 0: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 1: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 2: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 3: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 4: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 5: TimeoutError: Timed out waiting for the expected terminal state
  • PR cold trial 6: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 0: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 1: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 2: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 3: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 4: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 5: TimeoutError: Timed out waiting for the expected terminal state
  • PR warm trial 6: TimeoutError: Timed out waiting for the expected terminal state

@kevinjosethomas kevinjosethomas changed the title fix benchmarks for the new prompt bar fix benchmark startup and cleanup checks Sep 12, 2026
@kevinjosethomas
kevinjosethomas merged commit a329e74 into main Sep 12, 2026
27 checks passed
@kevinjosethomas
kevinjosethomas deleted the fix/benchmark-prompt-readiness branch September 12, 2026 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog Internal change with no user-visible changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant