Skip to main content

Adding an example

Every runnable example under examples/ is declared in examples/registry.toml. CI iterates that file, not a glob, so an example that is not registered fails tests/examples/test_example_registry.py (the failure prints the entry to add).

An example is a project root under examples/<category>/ with its tasks in .vibesys/tasks/<task>/ (the only layout; a root vibesys.input.toml fails the registry and vibesys validate). Variants that share one candidate codebase are one project with one task per variant. Submodule examples under examples/<category>/repositories/ are registered with external_repo = true. Baselines are not examples and are not registered; shared evaluators are versioned packages under resources/evaluators/. Users start a run from an example with vibesys example new (Running VibeSys).

Static checks run for every example​

Static checks (structure and configuration) run for every registered example and every task, always. Needing docker, a cluster, a GPU, or model weights never exempts an example: none of them is needed to validate a manifest. There is no live-coverage tracking in the registry; add a field for it only when a check consumes it.

Entry fields​

FieldMeaning
pathRepo-relative example root.
tasks"all" (default) or the exact task names on disk.
external_repotrue when the task files and app source come from another repository that scripts/example_repositories.py checks out. Default false. It is the only field that changes behavior.
known_failing[{ check, reason, tracking }]: a static check that fails today.
skips[{ check, reason }]: a check that cannot run because source is absent from the checkout.

Static checks​

CheckCatchesFails as
Registry completenessNew example directory, missing path, root vibesys.input.toml, task list out of dateNames the file and the entry to add
validateEverything vibesys validate rejects, per taskExample path plus task
path-refs${PROJECT_ROOT}/... in check/measure (accuracy/benchmark) commands pointing at nothingExample, task, path
trust-policyFiles those commands read that the agent could edit, using build_project_path_policy on a scratch copyLists the writable files and the read-only set
candidate-buildA task whose evaluator package requires candidate outputs (candidate_outputs) but declares no [build], so every measurement fails its check (InputBundle.missing_build, the rule New run preflight applies too)Example, task, the missing outputs
backendA task that declares no backends, so a run would fall back to the CLI's cuda default and fail a CPU task on a CPU-only hostExample, task
Stale references (repo-wide)examples/... literals in workflows, scripts, docs, and READMEs whose target is goneFile and literal; exclusions live in the test with a comment

known_failing is a strict xfail: when the check starts passing the test fails until you remove the entry, so the list only shrinks. skips is the only way to omit a check for one example, and is also strict: the test fails if the skip is no longer needed. Today one skip exists (path-refs for the deathstarbench external repo, whose checkout has no candidate source).

External repos are fetched in CI. A missing checkout fails there (VIBESYS_REQUIRE_EXAMPLE_EXTERNAL_REPOS=1) and skips only locally; run uv run python scripts/example_repositories.py first.

Not covered: running an evaluator, and files a command reads indirectly (imports, config it loads from disk).