Skip to content

ci: align benchmark and experiment runners - #203

Merged
joshblack merged 2 commits into
mainfrom
feat/add-experiment-runner-script
Sep 4, 2026
Merged

ci: align benchmark and experiment runners#203
joshblack merged 2 commits into
mainfrom
feat/add-experiment-runner-script

Conversation

@joshblack

@joshblack joshblack commented Sep 4, 2026

Copy link
Copy Markdown
Member

Follow up to #201.

This PR aligns benchmark and experiment execution around the newer benchmark runner conventions. Both scripts now accept a configurable name, own their result directory layout, and produce one portable output bundle per run.

This is the fourth entry in stack 214. #204 adds durable plan sharding next, and #199 adds the benchmark scenarios last.

Changelog

New

  • Add script/run-experiment.sh with the same setup and result layout conventions as script/run-benchmark.sh.

Changed

  • Require benchmark and experiment names as positional runner arguments.
  • Update the benchmark workflow to run the design-system benchmark explicitly.
  • Update the experiment workflow to use the new runner and a single retained result artifact.
  • Update script/setup to restore the 10 newest retained benchmark or experiment result bundles combined.

Removed

  • Remove the experiment shard matrix and merge job until experiment sharding is supported.

@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from e75b031 to 2b31767 Compare September 4, 2026 01:19
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 2b31767 to 672f2f5 Compare September 4, 2026 01:38
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 672f2f5 to 9de6e9b Compare September 4, 2026 02:06
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 9de6e9b to d8db66f Compare September 4, 2026 02:17
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from d8db66f to 6ff6f4a Compare September 4, 2026 02:33
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 6ff6f4a to 7f4e22f Compare September 4, 2026 02:34
@joshblack
joshblack changed the base branch from feat/add-benchmark-scenarios to feat/prebuild-sandbox-image September 4, 2026 02:44
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 7f4e22f to 454150d Compare September 4, 2026 02:44
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 454150d to 973609d Compare September 4, 2026 02:48
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 973609d to 70ca2c5 Compare September 4, 2026 02:49
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 70ca2c5 to 4f59fc2 Compare September 4, 2026 03:32
@joshblack
joshblack marked this pull request as ready for review September 4, 2026 03:36
Copilot AI lite review requested due to automatic review settings September 4, 2026 03:36
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 4f59fc2 to ab623ba Compare September 4, 2026 03:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The runner scripts and workflows are consistent with the intended unified result layout and artifact retention behavior, and no correctness issues were found in the updated execution paths.

Review tier: Lite
Findings: None

What changed in this PR

This PR aligns experiment execution with the newer benchmark runner conventions by introducing a dedicated experiment runner script, standardizing result bundle layout, and simplifying the experiment GitHub Actions workflow to produce a single retained artifact per run.

Changes:

  • Add script/run-experiment.sh, mirroring script/run-benchmark.sh conventions (positional name arg, results under results/.../<name>/<date>, single portable bundle per run).
  • Require benchmark/experiment names as positional runner arguments and update the benchmark workflow to pass design-system explicitly.
  • Simplify the experiment workflow by removing shard/merge jobs and uploading a single retained artifact; update script/setup to restore the newest benchmark and experiment bundles.
File Description
script/​setup Expands artifact restore to include both benchmark and experiment retained result bundles.
script/​run-experiment.sh New experiment runner script producing results in the standard portable directory layout.
script/​run-benchmark.sh Switches to requiring a positional benchmark name argument (no default).
.github/​workflows/​experiment.yml Runs the new experiment runner and uploads a single long-retention artifact (no sharding/merge).
.github/​workflows/​benchmark.yml Updates workflow to run design-system benchmark explicitly via the runner arg.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Copilot AI review requested due to automatic review settings September 4, 2026 04:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The benchmark runner script includes a duplicated assignment that should be cleaned up before merging.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Lite
Findings: 1 Low severity

New issues introduced by this change (1)
Severity Finding
Low severity script/​run-benchmark.shbenchmark_name is assigned twice, which is redundant and can be misleading when editing the…

Comment thread script/run-benchmark.sh Outdated
Copilot AI review requested due to automatic review settings September 4, 2026 04:27
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 66ce648 to b541df4 Compare September 4, 2026 04:28
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from b541df4 to b28638a Compare September 4, 2026 04:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The runner/workflow changes are consistent across scripts and Actions, and the updated artifact restore filter matches the new artifact naming scheme.

Review tier: Lite
Findings: None

Issues resolved since last review (1)
Severity Finding
Low severity script/​run-benchmark.shbenchmark_name is assigned twice, which is redundant and can be misleading when editing the… View resolved comment

@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from b28638a to 5d3a3c1 Compare September 4, 2026 04:34
Copilot AI review requested due to automatic review settings September 4, 2026 04:38
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from 5d3a3c1 to a397ce2 Compare September 4, 2026 04:38
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from a397ce2 to bf2f20f Compare September 4, 2026 04:41
Base automatically changed from feat/prebuild-sandbox-image to main September 4, 2026 04:43
joshblack and others added 2 commits September 3, 2026 23:43
Add a shared experiment runner convention, make runner names configurable, and restore the 10 newest benchmark or experiment result bundles during setup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6d12a97a-b8d3-45ad-a09a-3c76d1411705
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@joshblack
joshblack force-pushed the feat/add-experiment-runner-script branch from bf2f20f to b792663 Compare September 4, 2026 04:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The changes are cohesive and low-risk, with only small wrapper-script ergonomics suggested to improve future flexibility.

Review tier: Lite
Findings: 2 Medium severity

New issues introduced by this change (2)
Severity Finding
Medium severity script/​run-benchmark.sh — The wrapper currently requires exactly one positional argument and rejects any extra args, which…
Medium severity script/​run-experiment.sh — The wrapper currently requires exactly one positional argument and rejects any extra args, which…

Comment thread script/run-benchmark.sh
Comment on lines +7 to +11
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <benchmark-name>" >&2
exit 1
fi
benchmark_name="$1"
Comment thread script/run-experiment.sh
Comment on lines +7 to +32
if [[ $# -ne 1 ]]; then
echo "Usage: $0 <experiment-name>" >&2
exit 1
fi

experiment_name="$1"
run_date="${RUN_DATE:-$(date -u +%F)}"
run_directory="$repository_root/results/experiments/$experiment_name/$run_date"

if [[ ! "$experiment_name" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then
echo "Experiment name must be a file name without its extension" >&2
exit 1
fi

if [[ ! "$run_date" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "RUN_DATE must use the YYYY-MM-DD format" >&2
exit 1
fi

node "$repository_root/packages/agent-eval/bin/agent-eval" \
--experiment "$experiment_name" \
--experiments "$repository_root/experiments" \
--concurrency "${CONCURRENCY:-1}" \
--docker-image "${DOCKER_IMAGE:-node:26.5.0-slim}" \
--output-dir "$run_directory" \
--scenarios "$repository_root/scenarios"
Copilot AI review requested due to automatic review settings September 4, 2026 04:45
@joshblack
joshblack merged commit 32d4f25 into main Sep 4, 2026
9 checks passed
@joshblack
joshblack deleted the feat/add-experiment-runner-script branch September 4, 2026 04:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

The changes align runners/workflows as intended; remaining feedback is limited to minor error-message/validation consistency.

Review tier: Lite
Findings: 2 Medium severity · 2 Low severity

New issues introduced by this change (2)
Severity Finding
Low severity script/​run-benchmark.sh — This error message says the benchmark name must be a file name without an extension, but the…
Low severity script/​run-experiment.sh — This error message says the experiment name must be a file name without an extension, but the…
Pre-existing issues (2)
Severity Finding
Medium severity script/​run-experiment.sh — The wrapper currently requires exactly one positional argument and rejects any extra args, which… View comment
Medium severity script/​run-benchmark.sh — The wrapper currently requires exactly one positional argument and rejects any extra args, which… View comment

Comment thread script/run-benchmark.sh

if [[ ! "$benchmark_name" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then
echo "BENCHMARK_NAME must be a benchmark file name without its extension" >&2
echo "Benchmark name must be a file name without its extension" >&2
Comment thread script/run-experiment.sh
run_directory="$repository_root/results/experiments/$experiment_name/$run_date"

if [[ ! "$experiment_name" =~ ^[A-Za-z0-9][A-Za-z0-9._-]*$ ]]; then
echo "Experiment name must be a file name without its extension" >&2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants