From d0162440bb317eecf52bbd876763e070956fafa9 Mon Sep 17 00:00:00 2001 From: max-braintrust Date: Tue, 9 Jun 2026 11:21:14 -0700 Subject: [PATCH 1/2] add to framework --- js/src/framework.ts | 22 ++++++++++++---------- js/src/logger.ts | 3 +++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/js/src/framework.ts b/js/src/framework.ts index eb22fbb8b..6f71f602c 100644 --- a/js/src/framework.ts +++ b/js/src/framework.ts @@ -1169,6 +1169,17 @@ async function runEvaluatorInternal( : Dataset.isDataset(evaluator.data) ? evaluator.data : undefined; + const origin = + datum.origin ?? + (eventDataset && datum.id && datum._xact_id + ? { + object_type: "dataset", + object_id: await eventDataset.id, + id: datum.id, + created: datum.created, + _xact_id: datum._xact_id, + } + : undefined); const baseEvent: StartSpanArgs = { name: "eval", @@ -1179,16 +1190,7 @@ async function runEvaluatorInternal( input: datum.input, expected: "expected" in datum ? datum.expected : undefined, tags: datum.tags, - origin: - eventDataset && datum.id && datum._xact_id - ? { - object_type: "dataset", - object_id: await eventDataset.id, - id: datum.id, - created: datum.created, - _xact_id: datum._xact_id, - } - : undefined, + origin, ...(datum.upsert_id ? { id: datum.upsert_id } : {}), }, }; diff --git a/js/src/logger.ts b/js/src/logger.ts index 6623aa322..1909c1060 100644 --- a/js/src/logger.ts +++ b/js/src/logger.ts @@ -77,6 +77,7 @@ import { type PromptType as PromptRow, type PromptSessionEventType as PromptSessionEvent, type RepoInfoType as RepoInfo, + type ObjectReferenceType as ObjectReference, type PromptBlockDataType as PromptBlockData, type ResponseFormatJsonSchemaType as ResponseFormatJsonSchema, } from "./generated_types"; @@ -6223,6 +6224,7 @@ export class ObjectFetcher implements AsyncIterable< export type BaseMetadata = Record | void; export type DefaultMetadataType = void; +export type EvalCaseOrigin = ObjectReference; export type EvalCase = { input: Input; tags?: string[]; @@ -6230,6 +6232,7 @@ export type EvalCase = { id?: string; _xact_id?: TransactionId; created?: string | null; + origin?: EvalCaseOrigin; // This field is used to help re-run a particular experiment row. upsert_id?: string; // The number of times to run the evaluator for this specific input. From c321d41b7e109caab892fc8bddb7dcd1b47235cc Mon Sep 17 00:00:00 2001 From: max-braintrust Date: Tue, 9 Jun 2026 13:23:53 -0700 Subject: [PATCH 2/2] change log --- .changeset/late-buses-enjoy.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/late-buses-enjoy.md diff --git a/.changeset/late-buses-enjoy.md b/.changeset/late-buses-enjoy.md new file mode 100644 index 000000000..390a277ef --- /dev/null +++ b/.changeset/late-buses-enjoy.md @@ -0,0 +1,5 @@ +--- +"braintrust": minor +--- + +Add support for preserving explicit origin metadata on inline eval cases, so evals that run transformed or pre-resolved rows can retain their source-row provenance.