@openpond/evals 0.11.2 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ export * from "./model-improvement-qualification.js";
14
14
  export * from "./preferences.js";
15
15
  export * from "./profile-evaluations.js";
16
16
  export * from "./profile-evaluation-comparisons.js";
17
+ export * from "./profile-evaluation-execution.js";
17
18
  export * from "./review-conformance.js";
18
19
  export * from "./rollouts.js";
19
20
  export * from "./telemetry.js";
@@ -0,0 +1,76 @@
1
+ import { ImmutableArtifactRefSchema, contentHash } from "@openpond/harness";
2
+ import { gradeTaskEvidence } from "./graders.js";
3
+ import { aggregateTasksetRunReceipts, assertTasksetMetricSource } from "./metrics.js";
4
+ import { createAttemptReceipt } from "./runs.js";
5
+ import { assertProfileEvaluationRunAdmission } from "./taskset-run-contract.js";
6
+ import { policyTaskView } from "./tasksets.js";
7
+ /** The installation owns execution, tools, approvals and storage. This runner
8
+ * owns frozen population dispatch and private grading for both Desktop and web. */
9
+ export async function executeProfileEvaluationRun(input) {
10
+ assertProfileEvaluationRunAdmission(input.manifest, input.taskset, input.catalog);
11
+ assertTasksetMetricSource(input.taskset, input.metricSource);
12
+ const source = input.manifest.profileEvaluation;
13
+ const definition = input.catalog.definitions.find((item) => item.id === source.definitionId);
14
+ const tasks = new Map(input.taskset.tasks.map((task) => [task.id, task]));
15
+ const receipts = [];
16
+ const grades = [];
17
+ for (const member of input.manifest.population) {
18
+ input.signal?.throwIfAborted();
19
+ const task = tasks.get(member.taskId);
20
+ const execution = await input.execute({
21
+ task: policyTaskView(task), seed: member.seed, source,
22
+ ...(input.signal ? { signal: input.signal } : {}),
23
+ });
24
+ input.signal?.throwIfAborted();
25
+ const grade = await gradeTaskEvidence({
26
+ task, evidence: execution.evidence, graders: input.taskset.graders,
27
+ ...(input.modelJudge ? { modelJudge: input.modelJudge } : {}),
28
+ ...(input.customVerifier ? { customVerifier: input.customVerifier } : {}),
29
+ ...(input.signal ? { signal: input.signal } : {}),
30
+ });
31
+ const gradeRef = ImmutableArtifactRefSchema.parse(await input.saveGrade(grade));
32
+ if (gradeRef.contentHash !== grade.contentHash)
33
+ throw new Error("Stored Profile evaluation grade differs from its graded evidence.");
34
+ const failureClass = execution.failureClass ?? grade.failureClass;
35
+ const receipt = createAttemptReceipt({
36
+ schemaVersion: "openpond.attemptReceipt.v1",
37
+ id: member.receiptId,
38
+ runManifest: { id: input.manifest.id, contentHash: input.manifest.contentHash },
39
+ taskId: member.taskId,
40
+ seed: member.seed,
41
+ terminal: execution.terminal,
42
+ failureClass,
43
+ outputHash: execution.evidence.infrastructureError ? null : contentHash(execution.evidence.output),
44
+ traceHash: execution.traceHash,
45
+ artifactRefs: execution.artifactRefs,
46
+ graderEvidenceRefs: [gradeRef],
47
+ startedAt: execution.startedAt,
48
+ completedAt: execution.completedAt,
49
+ latencyMs: execution.latencyMs,
50
+ costUsd: execution.costUsd,
51
+ metadata: {
52
+ gradingRole: "evaluation",
53
+ score: grade.score,
54
+ passed: grade.passed,
55
+ rewardEligible: grade.rewardEligible,
56
+ sourceRevision: source.sourceRevision,
57
+ definitionHash: source.definitionHash,
58
+ environmentHash: source.environmentHash,
59
+ },
60
+ });
61
+ await input.saveReceipt(receipt);
62
+ grades.push(grade);
63
+ receipts.push(receipt);
64
+ }
65
+ const metric = await aggregateTasksetRunReceipts({
66
+ manifest: input.manifest, taskset: input.taskset, receipts,
67
+ ...(input.metricSource !== undefined ? { source: input.metricSource } : {}),
68
+ ...(input.signal ? { signal: input.signal } : {}),
69
+ }, input.metricExecutor);
70
+ const passRate = grades.filter((grade) => grade.passed).length / grades.length;
71
+ return {
72
+ receipts, grades, metric, passRate,
73
+ passed: passRate >= definition.criterion.minimumPassRate
74
+ && (!definition.criterion.requireComplete || receipts.every((receipt) => receipt.terminal)),
75
+ };
76
+ }
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { assertContentHash, contentHash, ImmutableReleaseRefSchema, MetadataSchema, ModelRefSchema, ReleaseHashSchema, ReleaseIdSchema, ReleaseTimestampSchema } from "@openpond/harness";
3
3
  import { RunLimitsSchema, RuntimeTargetBindingSchema, verifyAttemptReceipt } from "./runs.js";
4
4
  import { TasksetMetricPolicySchema } from "./metric-policy.js";
5
- import { ProfileEvaluationRunSourceSchema } from "./profile-evaluations.js";
5
+ import { ProfileEvaluationCatalogSchema, ProfileEvaluationRunSourceSchema } from "./profile-evaluations.js";
6
6
  import { assertTasksetRelease } from "./tasksets.js";
7
7
  /** A fixture check owns no model identity and cannot become a model evaluation. */
8
8
  export const TasksetRunPolicySchema = z.discriminatedUnion("kind", [
@@ -75,6 +75,39 @@ export function assertTasksetRunRelease(manifest, taskset) {
75
75
  || manifest.execution.policyHash !== contentHash(taskset.policy)))
76
76
  throw new Error("Taskset-owned execution differs from its pinned release.");
77
77
  }
78
+ /** Resolve the verifier-only definition before dispatch. A Profile run must
79
+ * evaluate exactly its declared frozen cases and seeds through its release. */
80
+ export function assertProfileEvaluationRunAdmission(manifest, taskset, catalogInput) {
81
+ assertTasksetRunRelease(manifest, taskset);
82
+ const catalog = ProfileEvaluationCatalogSchema.parse(catalogInput);
83
+ const source = manifest.profileEvaluation;
84
+ if (!source || manifest.execution.kind !== "harness" || manifest.policy.kind !== "model") {
85
+ throw new Error("Profile evaluation requires fresh model execution through its bound Harness.");
86
+ }
87
+ if (source.catalogHash !== contentHash(catalog))
88
+ throw new Error("Profile evaluation catalog differs from its pinned source.");
89
+ const definition = catalog.definitions.find((entry) => entry.id === source.definitionId);
90
+ if (!definition || source.definitionHash !== contentHash(definition)
91
+ || contentHash(source.target) !== contentHash(definition.target)) {
92
+ throw new Error("Profile evaluation definition differs from its pinned source.");
93
+ }
94
+ if (definition.tasksetRelease.id !== taskset.id || definition.tasksetRelease.contentHash !== taskset.contentHash) {
95
+ throw new Error("Profile evaluation Taskset differs from its pinned definition.");
96
+ }
97
+ if (definition.split === "train")
98
+ throw new Error("Profile evaluation cannot execute training cases.");
99
+ const tasks = new Map(taskset.tasks.map((task) => [task.id, task]));
100
+ if (definition.taskIds.some((id) => tasks.get(id)?.split !== definition.split)) {
101
+ throw new Error("Profile evaluation case is absent from its declared Taskset split.");
102
+ }
103
+ const expected = new Set(definition.taskIds.flatMap((taskId) => definition.seeds.map((seed) => JSON.stringify([taskId, seed]))));
104
+ const actual = new Set(manifest.population.map(({ taskId, seed }) => JSON.stringify([taskId, seed])));
105
+ if (manifest.population.some((member) => member.fixtureId !== null)
106
+ || actual.size !== expected.size || manifest.population.length !== expected.size
107
+ || [...actual].some((member) => !expected.has(member))) {
108
+ throw new Error("Profile evaluation population differs from its declared cases and seeds.");
109
+ }
110
+ }
78
111
  /** Complete runs cannot drop failed members, add convenient attempts or relabel
79
112
  * another task/seed's evidence. Ordering is always the admitted population's. */
80
113
  export function orderTasksetRunReceipts(manifest, receipts) {
@@ -14,6 +14,7 @@ export * from "./model-improvement-qualification.js";
14
14
  export * from "./preferences.js";
15
15
  export * from "./profile-evaluations.js";
16
16
  export * from "./profile-evaluation-comparisons.js";
17
+ export * from "./profile-evaluation-execution.js";
17
18
  export * from "./review-conformance.js";
18
19
  export * from "./rollouts.js";
19
20
  export * from "./telemetry.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type ImmutableArtifactRef } from "@openpond/harness";
2
+ import { type AttemptEvidence, type CustomVerifierRunner, type ModelJudgeRunner, type TaskGrade } from "./graders.js";
3
+ import { type TasksetMetricExecutor, type TasksetMetricResult } from "./metrics.js";
4
+ import { type AttemptReceipt } from "./runs.js";
5
+ import { type TasksetRunManifest } from "./taskset-run-contract.js";
6
+ import { policyTaskView, type TasksetRelease } from "./tasksets.js";
7
+ import type { ProfileEvaluationCatalog, ProfileEvaluationRunSource } from "./profile-evaluations.js";
8
+ type PolicyTask = ReturnType<typeof policyTaskView>;
9
+ /** The installation owns execution, tools, approvals and storage. This runner
10
+ * owns frozen population dispatch and private grading for both Desktop and web. */
11
+ export declare function executeProfileEvaluationRun(input: {
12
+ manifest: TasksetRunManifest;
13
+ taskset: TasksetRelease;
14
+ catalog: ProfileEvaluationCatalog;
15
+ execute: (member: {
16
+ task: PolicyTask;
17
+ seed: string;
18
+ source: ProfileEvaluationRunSource;
19
+ signal?: AbortSignal;
20
+ }) => Promise<{
21
+ evidence: AttemptEvidence;
22
+ traceHash: string;
23
+ artifactRefs: ImmutableArtifactRef[];
24
+ startedAt: string;
25
+ completedAt: string;
26
+ latencyMs: number;
27
+ costUsd: number | null;
28
+ terminal: boolean;
29
+ failureClass?: AttemptReceipt["failureClass"];
30
+ }>;
31
+ saveGrade: (grade: TaskGrade) => Promise<ImmutableArtifactRef>;
32
+ saveReceipt: (receipt: AttemptReceipt) => Promise<void>;
33
+ modelJudge?: ModelJudgeRunner;
34
+ customVerifier?: CustomVerifierRunner;
35
+ metricSource?: string;
36
+ metricExecutor?: TasksetMetricExecutor;
37
+ signal?: AbortSignal;
38
+ }): Promise<{
39
+ receipts: AttemptReceipt[];
40
+ grades: TaskGrade[];
41
+ metric: TasksetMetricResult;
42
+ passRate: number;
43
+ passed: boolean;
44
+ }>;
45
+ export {};
46
+ //# sourceMappingURL=profile-evaluation-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-evaluation-execution.d.ts","sourceRoot":"","sources":["../../../../src/profile-evaluation-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEvG,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAA0D,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC5I,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAErG,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEpD;mFACmF;AACnF,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,UAAU,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,0BAA0B,CAAC;QACnC,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,KAAK,OAAO,CAAC;QACZ,QAAQ,EAAE,eAAe,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,oBAAoB,EAAE,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;KAC/C,CAAC,CAAC;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAkED"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { type AttemptReceipt } from "./runs.js";
3
3
  import { type TasksetMetricPolicy } from "./metric-policy.js";
4
+ import { type ProfileEvaluationCatalog } from "./profile-evaluations.js";
4
5
  import { type TasksetRelease } from "./tasksets.js";
5
6
  /** A fixture check owns no model identity and cannot become a model evaluation. */
6
7
  export declare const TasksetRunPolicySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -274,6 +275,9 @@ export declare function tasksetRunMetricPolicy(taskset: TasksetRelease): Taskset
274
275
  /** Admission verifies this before dispatch. Package byte verification belongs
275
276
  * to the package loader; this validates the release and population semantics. */
276
277
  export declare function assertTasksetRunRelease(manifest: TasksetRunManifest, taskset: TasksetRelease): void;
278
+ /** Resolve the verifier-only definition before dispatch. A Profile run must
279
+ * evaluate exactly its declared frozen cases and seeds through its release. */
280
+ export declare function assertProfileEvaluationRunAdmission(manifest: TasksetRunManifest, taskset: TasksetRelease, catalogInput: ProfileEvaluationCatalog): void;
277
281
  /** Complete runs cannot drop failed members, add convenient attempts or relabel
278
282
  * another task/seed's evidence. Ordering is always the admitted population's. */
279
283
  export declare function orderTasksetRunReceipts(manifest: TasksetRunManifest, receipts: AttemptReceipt[]): AttemptReceipt[];
@@ -1 +1 @@
1
- {"version":3,"file":"taskset-run-contract.d.ts","sourceRoot":"","sources":["../../../../src/taskset-run-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACnH,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAE1E,mFAAmF;AACnF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;4BAGjC,CAAC;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;4BAGpC,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;;kBAKxB,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuB1C,CAAC;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAiF,CAAC;AACvH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,GAAG,kBAAkB,CAGnH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,CAKnF;AAED;iFACiF;AACjF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAcnG;AAED;iFACiF;AACjF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAclH"}
1
+ {"version":3,"file":"taskset-run-contract.d.ts","sourceRoot":"","sources":["../../../../src/taskset-run-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACnH,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAoE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC3I,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAE1E,mFAAmF;AACnF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;4BAGjC,CAAC;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;4BAGpC,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;;kBAKxB,CAAC;AAEZ,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuB1C,CAAC;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAiF,CAAC;AACvH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,GAAG,kBAAkB,CAGnH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,CAKnF;AAED;iFACiF;AACjF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAcnG;AAED;+EAC+E;AAC/E,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,wBAAwB,GACrC,IAAI,CA4BN;AAED;iFACiF;AACjF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAclH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openpond/evals",
3
- "version": "0.11.2",
3
+ "version": "0.11.3",
4
4
  "description": "Portable Tasksets, graders, evaluation runs, receipts, conformance fixtures, and Work evidence for OpenPond Harnesses",
5
5
  "license": "MIT",
6
6
  "type": "module",