@@ -5,6 +5,7 @@ import { createRequire } from "module";
55const EVALS_DIR = "/tmp/gh-aw/evals" ;
66const EVALS_LOG_PATH = `${ EVALS_DIR } /evals.log` ;
77const EVALS_OUTPUT_PATH = "/tmp/gh-aw/evals.jsonl" ;
8+ const EXPERIMENT_ASSIGNMENTS_PATH = "/tmp/gh-aw/experiments/assignments.json" ;
89const require = createRequire ( import . meta. url ) ;
910const { MODEL_FALLBACK_ENV_VAR } = require ( "./model_fallback.cjs" ) ;
1011const { setupMain, parseMain, extractAssistantTextFromJsonlLog } = require ( "./run_evals.cjs" ) ;
@@ -32,6 +33,9 @@ describe("run_evals.cjs", () => {
3233 if ( fs . existsSync ( EVALS_OUTPUT_PATH ) ) {
3334 fs . unlinkSync ( EVALS_OUTPUT_PATH ) ;
3435 }
36+ if ( fs . existsSync ( EXPERIMENT_ASSIGNMENTS_PATH ) ) {
37+ fs . unlinkSync ( EXPERIMENT_ASSIGNMENTS_PATH ) ;
38+ }
3539 } ) ;
3640
3741 afterEach ( ( ) => {
@@ -42,6 +46,9 @@ describe("run_evals.cjs", () => {
4246 if ( fs . existsSync ( EVALS_OUTPUT_PATH ) ) {
4347 fs . unlinkSync ( EVALS_OUTPUT_PATH ) ;
4448 }
49+ if ( fs . existsSync ( EXPERIMENT_ASSIGNMENTS_PATH ) ) {
50+ fs . unlinkSync ( EXPERIMENT_ASSIGNMENTS_PATH ) ;
51+ }
4552 } ) ;
4653
4754 it ( "stores the workflow run id when writing eval records" , async ( ) => {
@@ -64,6 +71,20 @@ describe("run_evals.cjs", () => {
6471 } ) ;
6572 } ) ;
6673
74+ it ( "includes experiment assignments in eval records when available" , async ( ) => {
75+ vi . stubEnv ( "GH_AW_EVALS_QUESTIONS" , JSON . stringify ( [ { id : "labels-applied" , question : "Did labels get applied?" } ] ) ) ;
76+ vi . stubEnv ( "GH_AW_EVALS_MODEL" , "small" ) ;
77+ vi . stubEnv ( "GITHUB_RUN_ID" , "123456789" ) ;
78+ fs . mkdirSync ( "/tmp/gh-aw/experiments" , { recursive : true } ) ;
79+ fs . writeFileSync ( "/tmp/gh-aw/experiments/assignments.json" , JSON . stringify ( { prompt_style : "concise" } ) + "\n" , "utf8" ) ;
80+ fs . writeFileSync ( EVALS_LOG_PATH , "labels-applied: YES\n" , "utf8" ) ;
81+
82+ await parseMain ( ) ;
83+
84+ const [ line ] = fs . readFileSync ( EVALS_OUTPUT_PATH , "utf8" ) . trim ( ) . split ( "\n" ) ;
85+ expect ( JSON . parse ( line ) . experiments ) . toEqual ( { prompt_style : "concise" } ) ;
86+ } ) ;
87+
6788 it ( 'falls back to "unknown" when the workflow run id is absent' , async ( ) => {
6889 vi . stubEnv ( "GH_AW_EVALS_QUESTIONS" , JSON . stringify ( [ { id : "labels-applied" , question : "Did labels get applied?" } ] ) ) ;
6990 vi . stubEnv ( "GH_AW_EVALS_MODEL" , "small" ) ;
0 commit comments