@openpond/evals 0.6.0 → 0.7.1

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.
Files changed (96) hide show
  1. package/LEARNING.md +120 -0
  2. package/README.md +2 -0
  3. package/dist/graders.js +26 -5
  4. package/dist/index.js +3 -0
  5. package/dist/javascript-verifier-contract.js +7 -0
  6. package/dist/javascript-verifier-node.js +56 -0
  7. package/dist/javascript-verifier-worker-source.js +1 -0
  8. package/dist/javascript-verifier-worker.js +6 -0
  9. package/dist/javascript-verifier.js +64 -0
  10. package/dist/learning/admission.js +209 -0
  11. package/dist/learning/assets.js +37 -0
  12. package/dist/learning/contracts.js +267 -0
  13. package/dist/learning/errors.js +12 -0
  14. package/dist/learning/grade-worker.js +99 -0
  15. package/dist/learning/index.js +9 -0
  16. package/dist/learning/operations.js +33 -0
  17. package/dist/learning/repository.js +48 -0
  18. package/dist/learning/service.js +377 -0
  19. package/dist/learning/transport.js +35 -0
  20. package/dist/rewards.js +230 -0
  21. package/dist/task-schema-meta-validator.js +2 -0
  22. package/dist/task-schema-validation.js +113 -0
  23. package/dist/task-schema.js +4 -0
  24. package/dist/task-value-validator.js +37 -0
  25. package/dist/tasksets.js +3 -0
  26. package/dist/telemetry-catalog.js +1 -1
  27. package/dist/types/builtin-benchmarks/harness-refiner.d.ts +7 -0
  28. package/dist/types/builtin-benchmarks/harness-refiner.d.ts.map +1 -1
  29. package/dist/types/conformance.d.ts +14 -0
  30. package/dist/types/conformance.d.ts.map +1 -1
  31. package/dist/types/execution-contracts.d.ts +14 -0
  32. package/dist/types/execution-contracts.d.ts.map +1 -1
  33. package/dist/types/graders.d.ts.map +1 -1
  34. package/dist/types/index.d.ts +3 -0
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/types/javascript-verifier-contract.d.ts +9 -0
  37. package/dist/types/javascript-verifier-contract.d.ts.map +1 -0
  38. package/dist/types/javascript-verifier-node.d.ts +5 -0
  39. package/dist/types/javascript-verifier-node.d.ts.map +1 -0
  40. package/dist/types/javascript-verifier-worker-source.d.ts +2 -0
  41. package/dist/types/javascript-verifier-worker.d.ts +2 -0
  42. package/dist/types/javascript-verifier-worker.d.ts.map +1 -0
  43. package/dist/types/javascript-verifier.d.ts +15 -0
  44. package/dist/types/javascript-verifier.d.ts.map +1 -0
  45. package/dist/types/learning/admission.d.ts +335 -0
  46. package/dist/types/learning/admission.d.ts.map +1 -0
  47. package/dist/types/learning/assets.d.ts +49 -0
  48. package/dist/types/learning/assets.d.ts.map +1 -0
  49. package/dist/types/learning/contracts.d.ts +2149 -0
  50. package/dist/types/learning/contracts.d.ts.map +1 -0
  51. package/dist/types/learning/errors.d.ts +8 -0
  52. package/dist/types/learning/errors.d.ts.map +1 -0
  53. package/dist/types/learning/grade-worker.d.ts +31 -0
  54. package/dist/types/learning/grade-worker.d.ts.map +1 -0
  55. package/dist/types/learning/index.d.ts +10 -0
  56. package/dist/types/learning/index.d.ts.map +1 -0
  57. package/dist/types/learning/operations.d.ts +2061 -0
  58. package/dist/types/learning/operations.d.ts.map +1 -0
  59. package/dist/types/learning/repository.d.ts +1143 -0
  60. package/dist/types/learning/repository.d.ts.map +1 -0
  61. package/dist/types/learning/service.d.ts +36 -0
  62. package/dist/types/learning/service.d.ts.map +1 -0
  63. package/dist/types/learning/transport.d.ts +2173 -0
  64. package/dist/types/learning/transport.d.ts.map +1 -0
  65. package/dist/types/preferences.d.ts +3 -3
  66. package/dist/types/review-conformance.d.ts +5 -5
  67. package/dist/types/rewards.d.ts +611 -0
  68. package/dist/types/rewards.d.ts.map +1 -0
  69. package/dist/types/task-schema-meta-validator.d.ts +3 -0
  70. package/dist/types/task-schema-validation.d.ts +18 -0
  71. package/dist/types/task-schema-validation.d.ts.map +1 -0
  72. package/dist/types/task-schema.d.ts +3 -0
  73. package/dist/types/task-schema.d.ts.map +1 -0
  74. package/dist/types/task-value-validator.d.ts +3 -0
  75. package/dist/types/task-value-validator.d.ts.map +1 -0
  76. package/dist/types/tasksets.d.ts +28 -0
  77. package/dist/types/tasksets.d.ts.map +1 -1
  78. package/package.json +30 -3
  79. package/schemas/learning/v1/asset.schema.json +89 -0
  80. package/schemas/learning/v1/batch.schema.json +132 -0
  81. package/schemas/learning/v1/binding.schema.json +207 -0
  82. package/schemas/learning/v1/command-request.schema.json +2414 -0
  83. package/schemas/learning/v1/decision.schema.json +440 -0
  84. package/schemas/learning/v1/definition.schema.json +397 -0
  85. package/schemas/learning/v1/evidence-inspection.schema.json +106 -0
  86. package/schemas/learning/v1/evidence.schema.json +317 -0
  87. package/schemas/learning/v1/example-submission.schema.json +253 -0
  88. package/schemas/learning/v1/feedback-submission.schema.json +114 -0
  89. package/schemas/learning/v1/feedback.schema.json +233 -0
  90. package/schemas/learning/v1/grade.schema.json +412 -0
  91. package/schemas/learning/v1/iteration.schema.json +236 -0
  92. package/schemas/learning/v1/package.schema.json +776 -0
  93. package/schemas/learning/v1/policy.schema.json +373 -0
  94. package/schemas/learning/v1/read-request.schema.json +142 -0
  95. package/schemas/learning/v1/reward.schema.json +302 -0
  96. package/schemas/learning/v1/source.schema.json +198 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../../../../src/rewards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ValidateFunction } from "ajv";
2
+ declare const validate: ValidateFunction;
3
+ export default validate;
@@ -0,0 +1,18 @@
1
+ export declare const TASK_JSON_SCHEMA_DIALECT = "https://json-schema.org/draft/2020-12/schema";
2
+ export declare const TASK_VALUE_MAX_BYTES = 1048576;
3
+ export declare const TASK_SCHEMA_MAX_BYTES = 32768;
4
+ export type TaskSchemaIssue = {
5
+ path: string;
6
+ code: string;
7
+ message: string;
8
+ };
9
+ export type TaskSchemaResult = {
10
+ valid: boolean;
11
+ issues: TaskSchemaIssue[];
12
+ };
13
+ /** Bound producer-controlled JSON before hashing, schema compilation or validation. */
14
+ export declare function assertBoundedTaskJson(value: unknown, maxBytes?: number): void;
15
+ /** No remote resolution, custom code, data mutation, regex or format plugins. */
16
+ export declare function validateTaskSchema(schema: unknown): TaskSchemaResult;
17
+ export declare function assertTaskSchema(schema: unknown): void;
18
+ //# sourceMappingURL=task-schema-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-schema-validation.d.ts","sourceRoot":"","sources":["../../../../src/task-schema-validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,iDAAiD,CAAC;AACvF,eAAO,MAAM,oBAAoB,UAAY,CAAC;AAC9C,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9E,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAM7E,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAuB,GAAG,IAAI,CA0B3F;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAOpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAOtD"}
@@ -0,0 +1,3 @@
1
+ export { TASK_JSON_SCHEMA_DIALECT, TASK_VALUE_MAX_BYTES, TASK_SCHEMA_MAX_BYTES, assertBoundedTaskJson, validateTaskSchema, type TaskSchemaIssue, type TaskSchemaResult, } from "./task-schema-validation.js";
2
+ export { validateTaskValue } from "./task-value-validator.js";
3
+ //# sourceMappingURL=task-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-schema.d.ts","sourceRoot":"","sources":["../../../../src/task-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type TaskSchemaResult } from "./task-schema-validation.js";
2
+ export declare function validateTaskValue(schema: unknown, value: unknown): TaskSchemaResult;
3
+ //# sourceMappingURL=task-value-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-value-validator.d.ts","sourceRoot":"","sources":["../../../../src/task-value-validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2C,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI7G,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAgBnF"}
@@ -96,6 +96,12 @@ export declare const ModelJudgeGraderSpecSchema: z.ZodObject<{
96
96
  passed: "passed";
97
97
  failed: "failed";
98
98
  }>;
99
+ model: z.ZodOptional<z.ZodObject<{
100
+ providerId: z.ZodString;
101
+ modelId: z.ZodString;
102
+ revision: z.ZodNullable<z.ZodString>;
103
+ }, z.core.$strict>>;
104
+ temperature: z.ZodOptional<z.ZodNumber>;
99
105
  }, z.core.$strict>;
100
106
  export declare const CustomVerifierGraderSpecSchema: z.ZodObject<{
101
107
  id: z.ZodString;
@@ -117,6 +123,7 @@ export declare const CustomVerifierGraderSpecSchema: z.ZodObject<{
117
123
  host_private: "host_private";
118
124
  }>;
119
125
  }, z.core.$strict>;
126
+ exportName: z.ZodOptional<z.ZodString>;
120
127
  timeoutMs: z.ZodNumber;
121
128
  networkPolicy: z.ZodLiteral<"none">;
122
129
  }, z.core.$strict>;
@@ -182,6 +189,12 @@ export declare const GraderSpecSchema: z.ZodUnion<readonly [z.ZodObject<{
182
189
  passed: "passed";
183
190
  failed: "failed";
184
191
  }>;
192
+ model: z.ZodOptional<z.ZodObject<{
193
+ providerId: z.ZodString;
194
+ modelId: z.ZodString;
195
+ revision: z.ZodNullable<z.ZodString>;
196
+ }, z.core.$strict>>;
197
+ temperature: z.ZodOptional<z.ZodNumber>;
185
198
  }, z.core.$strict>, z.ZodObject<{
186
199
  id: z.ZodString;
187
200
  version: z.ZodString;
@@ -202,6 +215,7 @@ export declare const GraderSpecSchema: z.ZodUnion<readonly [z.ZodObject<{
202
215
  host_private: "host_private";
203
216
  }>;
204
217
  }, z.core.$strict>;
218
+ exportName: z.ZodOptional<z.ZodString>;
205
219
  timeoutMs: z.ZodNumber;
206
220
  networkPolicy: z.ZodLiteral<"none">;
207
221
  }, z.core.$strict>, z.ZodObject<{
@@ -417,6 +431,12 @@ export declare const TasksetReleaseContentSchema: z.ZodObject<{
417
431
  passed: "passed";
418
432
  failed: "failed";
419
433
  }>;
434
+ model: z.ZodOptional<z.ZodObject<{
435
+ providerId: z.ZodString;
436
+ modelId: z.ZodString;
437
+ revision: z.ZodNullable<z.ZodString>;
438
+ }, z.core.$strict>>;
439
+ temperature: z.ZodOptional<z.ZodNumber>;
420
440
  }, z.core.$strict>, z.ZodObject<{
421
441
  id: z.ZodString;
422
442
  version: z.ZodString;
@@ -437,6 +457,7 @@ export declare const TasksetReleaseContentSchema: z.ZodObject<{
437
457
  host_private: "host_private";
438
458
  }>;
439
459
  }, z.core.$strict>;
460
+ exportName: z.ZodOptional<z.ZodString>;
440
461
  timeoutMs: z.ZodNumber;
441
462
  networkPolicy: z.ZodLiteral<"none">;
442
463
  }, z.core.$strict>, z.ZodObject<{
@@ -613,6 +634,12 @@ export declare const TasksetReleaseSchema: z.ZodObject<{
613
634
  passed: "passed";
614
635
  failed: "failed";
615
636
  }>;
637
+ model: z.ZodOptional<z.ZodObject<{
638
+ providerId: z.ZodString;
639
+ modelId: z.ZodString;
640
+ revision: z.ZodNullable<z.ZodString>;
641
+ }, z.core.$strict>>;
642
+ temperature: z.ZodOptional<z.ZodNumber>;
616
643
  }, z.core.$strict>, z.ZodObject<{
617
644
  id: z.ZodString;
618
645
  version: z.ZodString;
@@ -633,6 +660,7 @@ export declare const TasksetReleaseSchema: z.ZodObject<{
633
660
  host_private: "host_private";
634
661
  }>;
635
662
  }, z.core.$strict>;
663
+ exportName: z.ZodOptional<z.ZodString>;
636
664
  timeoutMs: z.ZodNumber;
637
665
  networkPolicy: z.ZodLiteral<"none">;
638
666
  }, z.core.$strict>, z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"tasksets.d.ts","sourceRoot":"","sources":["../../../../src/tasksets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasksets.d.ts","sourceRoot":"","sources":["../../../../src/tasksets.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@openpond/evals",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
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",
7
+ "sideEffects": false,
7
8
  "main": "./dist/index.js",
8
9
  "types": "./dist/types/index.d.ts",
9
10
  "files": [
@@ -13,9 +14,30 @@
13
14
  "README.md",
14
15
  "CONTRACT.md",
15
16
  "RELEASING.md",
17
+ "LEARNING.md",
16
18
  "LICENSE"
17
19
  ],
18
20
  "exports": {
21
+ "./javascript-verifier/node": {
22
+ "types": "./dist/types/javascript-verifier-node.d.ts",
23
+ "import": "./dist/javascript-verifier-node.js"
24
+ },
25
+ "./javascript-verifier": {
26
+ "types": "./dist/types/javascript-verifier.d.ts",
27
+ "import": "./dist/javascript-verifier.js"
28
+ },
29
+ "./task-schema": {
30
+ "types": "./dist/types/task-schema.d.ts",
31
+ "import": "./dist/task-schema.js"
32
+ },
33
+ "./learning": {
34
+ "types": "./dist/types/learning/index.d.ts",
35
+ "import": "./dist/learning/index.js"
36
+ },
37
+ "./rewards": {
38
+ "types": "./dist/types/rewards.d.ts",
39
+ "import": "./dist/rewards.js"
40
+ },
19
41
  ".": {
20
42
  "types": "./dist/types/index.d.ts",
21
43
  "import": "./dist/index.js"
@@ -91,14 +113,18 @@
91
113
  "node": ">=22.14.0 <25"
92
114
  },
93
115
  "scripts": {
94
- "build": "tsx scripts/generate-telemetry-schemas.ts && tsx scripts/build.ts",
116
+ "build": "tsx scripts/generate-task-schema-validator.ts && tsx scripts/generate-telemetry-schemas.ts && tsx scripts/generate-learning-schemas.ts && tsx scripts/build.ts",
95
117
  "typecheck": "tsc --noEmit --project tsconfig.json",
96
118
  "test": "vitest run --root ../.. --config vitest.config.ts --project evals",
97
119
  "check:api": "tsx scripts/check-public-package.ts",
98
120
  "check:consumer": "tsx scripts/verify-packed-consumer.ts",
99
- "check": "pnpm run typecheck && pnpm run test && pnpm run build && pnpm run check:api && pnpm run check:consumer && npm pack --dry-run"
121
+ "check": "pnpm run typecheck && pnpm run test && pnpm run build && pnpm run check:api && pnpm run check:consumer && npm pack --dry-run",
122
+ "publish:check": "pnpm run build && pnpm run check:api && pnpm run check:consumer && npm pack --dry-run"
100
123
  },
101
124
  "dependencies": {
125
+ "@jitl/quickjs-singlefile-cjs-release-sync": "0.32.0",
126
+ "ajv": "^8.20.0",
127
+ "quickjs-emscripten-core": "0.32.0",
102
128
  "zod": "^4.1.13"
103
129
  },
104
130
  "peerDependencies": {
@@ -107,6 +133,7 @@
107
133
  "devDependencies": {
108
134
  "@openpond/harness": "workspace:*",
109
135
  "@types/node": "24.13.3",
136
+ "esbuild": "0.28.1",
110
137
  "tsx": "4.23.1",
111
138
  "typescript": "^5.9.3",
112
139
  "vitest": "4.1.10"
@@ -0,0 +1,89 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "string",
7
+ "const": "openpond.learningTextAsset.v1"
8
+ },
9
+ "id": {
10
+ "$ref": "#/$defs/__schema0"
11
+ },
12
+ "revision": {
13
+ "type": "number",
14
+ "const": 1
15
+ },
16
+ "asset": {
17
+ "type": "object",
18
+ "properties": {
19
+ "id": {
20
+ "$ref": "#/$defs/__schema0"
21
+ },
22
+ "path": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 2000
26
+ },
27
+ "contentHash": {
28
+ "$ref": "#/$defs/__schema1"
29
+ },
30
+ "sizeBytes": {
31
+ "type": "integer",
32
+ "minimum": 0,
33
+ "maximum": 250000000
34
+ },
35
+ "mediaType": {
36
+ "type": "string",
37
+ "minLength": 1,
38
+ "maxLength": 200
39
+ },
40
+ "visibility": {
41
+ "type": "string",
42
+ "enum": [
43
+ "policy",
44
+ "verifier",
45
+ "host_private"
46
+ ]
47
+ }
48
+ },
49
+ "required": [
50
+ "id",
51
+ "path",
52
+ "contentHash",
53
+ "sizeBytes",
54
+ "mediaType",
55
+ "visibility"
56
+ ],
57
+ "additionalProperties": false
58
+ },
59
+ "text": {
60
+ "type": "string",
61
+ "maxLength": 524288
62
+ },
63
+ "contentHash": {
64
+ "$ref": "#/$defs/__schema1"
65
+ }
66
+ },
67
+ "required": [
68
+ "schemaVersion",
69
+ "id",
70
+ "revision",
71
+ "asset",
72
+ "text",
73
+ "contentHash"
74
+ ],
75
+ "additionalProperties": false,
76
+ "$defs": {
77
+ "__schema0": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "maxLength": 240
81
+ },
82
+ "__schema1": {
83
+ "type": "string",
84
+ "pattern": "^[a-f0-9]{64}$"
85
+ }
86
+ },
87
+ "$id": "urn:openpond:learning:v1:asset",
88
+ "$comment": "Generated from @openpond/evals. Cross-resource identity, authorization, idempotency, admission, grading and split constraints are enforced by the shared domain service in addition to this structural schema."
89
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "string",
7
+ "const": "openpond.taskBatch.v1"
8
+ },
9
+ "id": {
10
+ "$ref": "#/$defs/__schema0"
11
+ },
12
+ "revision": {
13
+ "type": "number",
14
+ "const": 1
15
+ },
16
+ "taskDefinition": {
17
+ "$ref": "#/$defs/__schema1"
18
+ },
19
+ "rewardBinding": {
20
+ "$ref": "#/$defs/__schema1"
21
+ },
22
+ "purpose": {
23
+ "type": "string",
24
+ "enum": [
25
+ "supervised_training",
26
+ "reward_training",
27
+ "evaluation"
28
+ ]
29
+ },
30
+ "examples": {
31
+ "minItems": 1,
32
+ "maxItems": 10000,
33
+ "type": "array",
34
+ "items": {
35
+ "$ref": "#/$defs/__schema3"
36
+ }
37
+ },
38
+ "sealedAt": {
39
+ "type": "string",
40
+ "format": "date-time",
41
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
42
+ },
43
+ "sealedBy": {
44
+ "$ref": "#/$defs/__schema0"
45
+ },
46
+ "contentHash": {
47
+ "$ref": "#/$defs/__schema2"
48
+ }
49
+ },
50
+ "required": [
51
+ "schemaVersion",
52
+ "id",
53
+ "revision",
54
+ "taskDefinition",
55
+ "rewardBinding",
56
+ "purpose",
57
+ "examples",
58
+ "sealedAt",
59
+ "sealedBy",
60
+ "contentHash"
61
+ ],
62
+ "additionalProperties": false,
63
+ "$defs": {
64
+ "__schema0": {
65
+ "type": "string",
66
+ "minLength": 1,
67
+ "maxLength": 240
68
+ },
69
+ "__schema1": {
70
+ "type": "object",
71
+ "properties": {
72
+ "id": {
73
+ "$ref": "#/$defs/__schema0"
74
+ },
75
+ "contentHash": {
76
+ "$ref": "#/$defs/__schema2"
77
+ },
78
+ "revision": {
79
+ "type": "integer",
80
+ "exclusiveMinimum": 0,
81
+ "maximum": 9007199254740991
82
+ }
83
+ },
84
+ "required": [
85
+ "id",
86
+ "contentHash",
87
+ "revision"
88
+ ],
89
+ "additionalProperties": false
90
+ },
91
+ "__schema2": {
92
+ "type": "string",
93
+ "pattern": "^[a-f0-9]{64}$"
94
+ },
95
+ "__schema3": {
96
+ "type": "object",
97
+ "properties": {
98
+ "evidence": {
99
+ "$ref": "#/$defs/__schema1"
100
+ },
101
+ "decision": {
102
+ "$ref": "#/$defs/__schema1"
103
+ },
104
+ "familyKey": {
105
+ "$ref": "#/$defs/__schema0"
106
+ },
107
+ "inputHash": {
108
+ "$ref": "#/$defs/__schema2"
109
+ },
110
+ "split": {
111
+ "type": "string",
112
+ "enum": [
113
+ "train",
114
+ "validation",
115
+ "test",
116
+ "frozen_eval"
117
+ ]
118
+ }
119
+ },
120
+ "required": [
121
+ "evidence",
122
+ "decision",
123
+ "familyKey",
124
+ "inputHash",
125
+ "split"
126
+ ],
127
+ "additionalProperties": false
128
+ }
129
+ },
130
+ "$id": "urn:openpond:learning:v1:batch",
131
+ "$comment": "Generated from @openpond/evals. Cross-resource identity, authorization, idempotency, admission, grading and split constraints are enforced by the shared domain service in addition to this structural schema."
132
+ }
@@ -0,0 +1,207 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "string",
7
+ "const": "openpond.rewardBinding.v1"
8
+ },
9
+ "id": {
10
+ "$ref": "#/$defs/__schema0"
11
+ },
12
+ "revision": {
13
+ "type": "integer",
14
+ "exclusiveMinimum": 0,
15
+ "maximum": 9007199254740991
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 500
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "maxLength": 10000
25
+ },
26
+ "recipeRef": {
27
+ "$ref": "#/$defs/__schema1"
28
+ },
29
+ "sources": {
30
+ "minItems": 1,
31
+ "maxItems": 100,
32
+ "type": "array",
33
+ "items": {
34
+ "$ref": "#/$defs/__schema3"
35
+ }
36
+ },
37
+ "aggregation": {
38
+ "type": "string",
39
+ "const": "weighted_mean"
40
+ },
41
+ "unscorable": {
42
+ "type": "string",
43
+ "const": "exclude_optional_require_all_required"
44
+ },
45
+ "contentHash": {
46
+ "$ref": "#/$defs/__schema2"
47
+ }
48
+ },
49
+ "required": [
50
+ "schemaVersion",
51
+ "id",
52
+ "revision",
53
+ "sources",
54
+ "aggregation",
55
+ "unscorable",
56
+ "contentHash"
57
+ ],
58
+ "additionalProperties": false,
59
+ "$defs": {
60
+ "__schema0": {
61
+ "type": "string",
62
+ "minLength": 1,
63
+ "maxLength": 240
64
+ },
65
+ "__schema1": {
66
+ "type": "object",
67
+ "properties": {
68
+ "id": {
69
+ "$ref": "#/$defs/__schema0"
70
+ },
71
+ "contentHash": {
72
+ "$ref": "#/$defs/__schema2"
73
+ },
74
+ "revision": {
75
+ "type": "integer",
76
+ "exclusiveMinimum": 0,
77
+ "maximum": 9007199254740991
78
+ }
79
+ },
80
+ "required": [
81
+ "id",
82
+ "contentHash",
83
+ "revision"
84
+ ],
85
+ "additionalProperties": false
86
+ },
87
+ "__schema2": {
88
+ "type": "string",
89
+ "pattern": "^[a-f0-9]{64}$"
90
+ },
91
+ "__schema3": {
92
+ "type": "object",
93
+ "properties": {
94
+ "graderId": {
95
+ "$ref": "#/$defs/__schema0"
96
+ },
97
+ "reward": {
98
+ "$ref": "#/$defs/__schema1"
99
+ },
100
+ "role": {
101
+ "type": "string",
102
+ "enum": [
103
+ "training",
104
+ "evaluation"
105
+ ]
106
+ },
107
+ "normalization": {
108
+ "oneOf": [
109
+ {
110
+ "type": "object",
111
+ "properties": {
112
+ "kind": {
113
+ "type": "string",
114
+ "const": "identity"
115
+ }
116
+ },
117
+ "required": [
118
+ "kind"
119
+ ],
120
+ "additionalProperties": false
121
+ },
122
+ {
123
+ "type": "object",
124
+ "properties": {
125
+ "kind": {
126
+ "type": "string",
127
+ "const": "linear"
128
+ },
129
+ "minimum": {
130
+ "type": "number"
131
+ },
132
+ "maximum": {
133
+ "type": "number"
134
+ },
135
+ "direction": {
136
+ "type": "string",
137
+ "enum": [
138
+ "higher",
139
+ "lower"
140
+ ]
141
+ }
142
+ },
143
+ "required": [
144
+ "kind",
145
+ "minimum",
146
+ "maximum",
147
+ "direction"
148
+ ],
149
+ "additionalProperties": false
150
+ }
151
+ ]
152
+ },
153
+ "weight": {
154
+ "type": "number",
155
+ "minimum": 0,
156
+ "maximum": 1000
157
+ },
158
+ "required": {
159
+ "type": "boolean"
160
+ },
161
+ "hardGate": {
162
+ "type": "boolean"
163
+ },
164
+ "privileged": {
165
+ "type": "boolean"
166
+ },
167
+ "fixtureRefs": {
168
+ "maxItems": 1000,
169
+ "type": "array",
170
+ "items": {
171
+ "$ref": "#/$defs/__schema4"
172
+ }
173
+ }
174
+ },
175
+ "required": [
176
+ "graderId",
177
+ "reward",
178
+ "role",
179
+ "normalization",
180
+ "weight",
181
+ "required",
182
+ "hardGate",
183
+ "privileged",
184
+ "fixtureRefs"
185
+ ],
186
+ "additionalProperties": false
187
+ },
188
+ "__schema4": {
189
+ "type": "object",
190
+ "properties": {
191
+ "id": {
192
+ "$ref": "#/$defs/__schema0"
193
+ },
194
+ "contentHash": {
195
+ "$ref": "#/$defs/__schema2"
196
+ }
197
+ },
198
+ "required": [
199
+ "id",
200
+ "contentHash"
201
+ ],
202
+ "additionalProperties": false
203
+ }
204
+ },
205
+ "$id": "urn:openpond:learning:v1:binding",
206
+ "$comment": "Generated from @openpond/evals. Cross-resource identity, authorization, idempotency, admission, grading and split constraints are enforced by the shared domain service in addition to this structural schema."
207
+ }