Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions benchmarks/codex-mcp/scripts/setup.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ async function main() {
'uv',
['sync', '--frozen', '--extra', 'local-worker', '--extra', 'mcp', '--extra', 'benchmarks'],
);
run(
'uv',
['run', '--no-sync', 'vidxp', 'init', '--yes'],
{ env: commandEnvironment },
);
run('npm', ['ci'], { cwd: benchmarkRoot });

const glibcVersion = process.report?.getReport().header.glibcVersionRuntime;
Expand Down
18 changes: 11 additions & 7 deletions docs/benchmarking/agent_ablation.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ therefore does not replace LongVALE in this ablation.
Promptfoo 0.122.2 requires Node.js 22.22.0 or newer. The benchmark-local
`.npmrc` enforces that requirement so an unsupported runtime fails during
installation instead of failing after Codex runs have begun. You also need
`uv` and the Codex CLI on `PATH`.
`uv` and the Codex CLI on `PATH`. The setup verifies FFmpeg and ffprobe and,
when they are absent, installs them through a supported package manager. On a
fresh macOS machine, install Homebrew before running setup so VidXP can install
FFmpeg automatically.

From the repository root, run the automated setup:

Expand All @@ -110,12 +113,13 @@ npm --prefix benchmarks/codex-mcp run setup
```

The command installs the pinned Python and Node dependencies, creates isolated
state outside the checkout, opens Codex login when authentication is absent,
downloads and verifies the pinned LongVALE archive, copies the five pilot
videos, prepares the four required capabilities, indexes the media, saves the
evaluation environment in the ignored `benchmarks/codex-mcp/.env` file, and
runs preflight. Accept the LongVALE dataset terms before running it. Do not copy
or commit the generated `auth.json`.
state outside the checkout, initializes the system media runtime, opens Codex
login when authentication is absent, downloads and verifies the pinned
LongVALE archive, copies the five pilot videos, prepares the four required
capabilities, indexes the media, saves the evaluation environment in the
ignored `benchmarks/codex-mcp/.env` file, and runs preflight. Accept the
LongVALE dataset terms before running it. Do not copy or commit the generated
`auth.json`.

By default, mutable state goes under the operating system's user data
directory. Set only `VIDXP_EVAL_ROOT` when it needs to live elsewhere:
Expand Down
6 changes: 6 additions & 0 deletions tests/test_ci_scope.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ def test_tests_and_desktop_changes_skip_container_builds(self):
Scope(run_suite=True, run_container=False, run_desktop=True),
)

def test_benchmark_changes_skip_product_artifact_builds(self):
self.assertEqual(
classify(["benchmarks/codex-mcp/scripts/setup.mjs"]),
Scope(run_suite=True, run_container=False, run_desktop=False),
)

def test_product_and_workflow_changes_validate_containers(self):
for path in (
"src/vidxp/new_feature.py",
Expand Down
5 changes: 4 additions & 1 deletion utils/ci_scope.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ def _is_documentation(path: str) -> bool:


def _is_container_neutral(path: str) -> bool:
return path.startswith((".agents/", "desktop/", "plugins/", "tests/"))
return path.startswith(
(".agents/", "benchmarks/", "desktop/", "plugins/", "tests/")
)


def _affects_desktop(path: str) -> bool:
Expand All @@ -47,6 +49,7 @@ def _is_unknown_product_path(path: str) -> bool:
(
".agents/",
".github/",
"benchmarks/",
"desktop/",
"plugins/",
"src/",
Expand Down
Loading