Skip to content

feat: organize experiments by owner - #315

Open
Rodriguespn wants to merge 1 commit into
mainfrom
Rodriguespn/pr308-nested-experiments-proposal
Open

Rodriguespn wants to merge 1 commit into
mainfrom
Rodriguespn/pr308-nested-experiments-proposal

Conversation

@Rodriguespn

@Rodriguespn Rodriguespn commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

This change organizes experiments under per-owner folders so CODEOWNERS can scope them by path. Experiment IDs and result names remain unchanged.

AI-owned base configs live in experiments/presets.ts. The AI experiments extend those presets from experiments/ai/.

experiments/
├── presets.ts
└── ai/
    └── *.experiment.ts

Diff note: changes under experiments/ are file moves and config extraction. Runtime changes are limited to flat experiments/<team>/*.experiment.ts discovery in the runner and result exporter. CLI runtime, helper, and experiment changes are intentionally excluded.

How to review

Start with experiment-files.ts, then presets.ts and the two discovery call sites in run-eval.ts and export-results.ts.

Dry run one of the moved experiments using its unchanged ID:

pnpm eval:dry -- --eval resolve-dataapi-001-empty-results --experiment claude-code-sonnet-5

Verification

  • pnpm --filter @supabase-evals/framework typecheck
  • pnpm --filter @supabase-evals/framework test:vercel-runner (26 tests passed)
  • pnpm eval -- list returned the same 12 experiment IDs
  • Focused dry run for claude-code-sonnet-5
  • Result export using the moved experiment metadata
  • pnpm format
  • Targeted CI found and ran all 12 stable experiment IDs. Publishing hit the same workspace packaging failure on main.

Context: Slack thread

@vercel

vercel Bot commented Sep 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
evals Ignored Ignored Preview Sep 21, 2026 5:35pm UTC

Request Review

@Rodriguespn
Rodriguespn force-pushed the Rodriguespn/pr308-nested-experiments-proposal branch from 881432e to a2edffd Compare September 21, 2026 17:35
@Rodriguespn
Rodriguespn changed the base branch from columferry/cli-2398-cli-suite-and-arms to main September 21, 2026 17:35
@Rodriguespn
Rodriguespn marked this pull request as ready for review September 21, 2026 17:41
@Rodriguespn
Rodriguespn requested a review from a team as a code owner September 21, 2026 17:41
for (const entry of await readdir(ownerDir, { withFileTypes: true })) {
if (!entry.isFile() || !entry.name.endsWith(EXPERIMENT_SUFFIX)) continue;

files.push({

@mattrossman mattrossman Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

In case a team ends up trying to kick off a refresh w/ experiment names that overlap across teams which would silently clash, maybe worth a small duplicate check + error surfaced here.

Comment thread experiments/presets.ts
skills,
} satisfies ExperimentPreset;

export const baselineExperiment = codexGpt56Luna;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

What's the use case for this if codexGpt56Luna is already exported? Assuming this is scaffolding for future PR, maybe better to add once it's used for something.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

If the intention was to signal to other teams which base they should use—perhaps the other harness/model combos shouldn't be in presets.ts? Unless we know other teams want to use them. For now it seems like other teams will only be using 5.6 Luna.

@@ -0,0 +1,8 @@
import { defineExperiment } from '@supabase-evals/core';
import { claudeCodeSonnet5 } from '../presets.ts';

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think we'll want to fix the tsconfig btw, IIUC this .ts extension would normally fail the typecheck. It look like this was intended to be handled by the "experiments" includes entry in apps/framework/tsconfig.json but rn that resolves to apps/framework/experiments instead of root experiments/

Comment thread .github/CODEOWNERS
* @supabase/ai

/experiments/ai/ @supabase/ai
/experiments/presets.ts @supabase/ai

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

nit, these are already handled by the @supabase/ai catch-all

@mattrossman

Copy link
Copy Markdown
Collaborator

Sanity checking w/ a regression run to verify results look normal still:
https://github.com/supabase/evals/actions/runs/35649310761

@mattrossman

mattrossman commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

The parts of the refresh that worked look fine, the broken parts are my fault from a bug in #303 that slipped in 🙈 will fix that separately.

(Edit: fixed the regression in #321 so you may wanna merge that in here to fully confirm regression results still look normal)

This branch has not been deployed

No deployments
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