feat(runner): verbs-only bench run with --shape and --run-key - #264
Open
devin-ai-integration[bot] wants to merge 8 commits into
Open
feat(runner): verbs-only bench run with --shape and --run-key#264devin-ai-integration[bot] wants to merge 8 commits into
bench run with --shape and --run-key#264devin-ai-integration[bot] wants to merge 8 commits into
Conversation
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor License AgreementAll contributors are covered by a CLA. |
…nto one run Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
… itself Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
… the run own its size Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
devin-ai-integration
Bot
force-pushed
the
devin/1785443347-shared-run
branch
from
July 30, 2026 21:01
592ed93 to
4680cc4
Compare
…tion count Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Retire the imperative create commands: the benchmark is declared in the .bench.ts file (via optional named shapes) and materialized on run, and a run is opened as a side effect. --shape selects a named variant (swapping platform identity + stable knobs); --run-key get-or-creates a shared run so sibling provider jobs converge on one comparable run. Collapse the per-shape slug/name/knob triple out of package scripts and the sandbox TTI workflow (drop the create-runs job; providers pass a shared run key including GITHUB_RUN_ATTEMPT). Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
Author
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
1 similar comment
Contributor
Author
|
Devin is archived and cannot be woken up. Please unarchive Devin if you want to continue using it. |
bench run with --shape and --run-key
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The old surface duplicated a benchmark's identity across four places — the
.bench.tsfile,package.json, the CI workflow, and imperativebench create benchmark/bench create runcommands — and drifted between them. This makesbenchverbs-only: the benchmark is declared in the file and materialized when you run it, and a run is opened as a side effect. There is nocreate.Two new flags on
bench run:--shape <name>— a bench file declares namedshapes, each swapping in its own platform identity (slug/name, optionalkind) and a stable knob (staggerDelayMs) while reusing the same task and participants. Scale knobs (--iterations/--concurrency) stay on the CLI, so no shape sets a value only to have it overridden. This is what collapses the per-shape slug/name/knob triple out ofpackage.jsonand CI.--run-key <key>— sibling processes passing the same key get-or-create one shared run (per org + benchmark) instead of each opening its own, so parallel provider jobs land in one directly-comparable run. Each process registers only the participants it actually runs. Different shapes are different slugs, so one key value yields one run per shape — no per-shape key juggling. The binding is permanent, so a workflow re-run varies the key viaGITHUB_RUN_ATTEMPT.Benchmark materialization stays honest: a bare
--benchmark Xthat merely retargets reporting at a benchmark this file doesn't name does not upsert (which would rename it);--shape/--name/the file's own slug do.Call sites collapsed
package.json: every--slug … --name … [--stagger-delay-ms 200]triple →--shape burst/--shape staggered..github/workflows/sandbox-tti-benchmarks.yml: dropped the wholecreate-runsjob; the provider matrix now runsbench run … --shape … --run-key "$GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT"directly.--slugremains a working alias for--benchmark.Depends on
computesdk/benchmarks-platform#53 —
POST /runsget-or-create byrunKey.Checks
pnpm typecheckclean; runner suite 65 passing, client suite 118 passing; all packages build.Link to Devin session: https://app.devin.ai/sessions/82de2e18fab54e7bba63034865f0cb6c
Requested by: @HeyGarrison