openpond-sdk 0.11.5 → 0.12.0

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 (208) hide show
  1. package/TASKSETS.md +13 -0
  2. package/dist/advanced-refiner-evaluations.js +6 -6
  3. package/dist/candidate-evaluations.js +5 -5
  4. package/dist/{chunk-2G4WBMYI.js → chunk-32GJS7FV.js} +6 -6
  5. package/dist/{chunk-Z4OLAEPL.js → chunk-644E3NM2.js} +10 -3
  6. package/dist/chunk-644E3NM2.js.map +7 -0
  7. package/dist/{chunk-YGLTO26A.js → chunk-7L4NIEW2.js} +2 -2
  8. package/dist/{chunk-VEU3IXAQ.js → chunk-7MISLCN2.js} +2 -2
  9. package/dist/{chunk-WTHJ3H4M.js → chunk-7WUJBFCH.js} +2 -2
  10. package/dist/{chunk-PHETIB6R.js → chunk-AV5JV26B.js} +2 -2
  11. package/dist/{chunk-Z4JJS6KE.js → chunk-B7VYE7YQ.js} +2 -2
  12. package/dist/{chunk-AQGFJLIV.js → chunk-BDDT6VN6.js} +5 -5
  13. package/dist/{chunk-DUJXF7YI.js → chunk-CK3ONRRC.js} +71 -59
  14. package/dist/chunk-CK3ONRRC.js.map +7 -0
  15. package/dist/{chunk-PMBBNQ2J.js → chunk-D4WTE6ZA.js} +2 -2
  16. package/dist/{chunk-ZOXHSJWU.js → chunk-DBRRQASP.js} +2 -2
  17. package/dist/{chunk-FZH2M4G6.js → chunk-DG5CRENU.js} +2 -2
  18. package/dist/{chunk-P3BRSSRD.js → chunk-FWX7SH7Y.js} +307 -258
  19. package/dist/chunk-FWX7SH7Y.js.map +7 -0
  20. package/dist/chunk-FZYLRL7H.js +100 -0
  21. package/dist/chunk-FZYLRL7H.js.map +7 -0
  22. package/dist/{chunk-JOKRT4CK.js → chunk-KV6JXPQH.js} +5 -2
  23. package/dist/{chunk-JOKRT4CK.js.map → chunk-KV6JXPQH.js.map} +2 -2
  24. package/dist/{chunk-HAOPRFYQ.js → chunk-L5PQPAU6.js} +2 -2
  25. package/dist/{chunk-DUPHBKVV.js → chunk-LHRHB5EJ.js} +2 -2
  26. package/dist/{chunk-5GMY4TTF.js → chunk-OEPYLZXK.js} +2 -2
  27. package/dist/chunk-SVBV2VEK.js +181 -0
  28. package/dist/chunk-SVBV2VEK.js.map +7 -0
  29. package/dist/{chunk-XYVPLV6Z.js → chunk-TTAFUUHZ.js} +3 -3
  30. package/dist/{chunk-2DLFHAGW.js → chunk-UK2KWJIQ.js} +12 -9
  31. package/dist/{chunk-2DLFHAGW.js.map → chunk-UK2KWJIQ.js.map} +3 -3
  32. package/dist/{chunk-K2OH56BH.js → chunk-UVREOAMH.js} +3 -3
  33. package/dist/{chunk-LQ5Q35IF.js → chunk-WYGBGCRO.js} +7 -5
  34. package/dist/chunk-WYGBGCRO.js.map +7 -0
  35. package/dist/{chunk-FDHIL2CV.js → chunk-X6J3VVYC.js} +9 -6
  36. package/dist/{chunk-FDHIL2CV.js.map → chunk-X6J3VVYC.js.map} +2 -2
  37. package/dist/{chunk-PXNHL3SH.js → chunk-YRTA3G6O.js} +11 -4
  38. package/dist/chunk-YRTA3G6O.js.map +7 -0
  39. package/dist/{chunk-35OVUYPI.js → chunk-YSKUXQ2N.js} +3 -3
  40. package/dist/connected-evidence.js +51 -26
  41. package/dist/dataset-workspaces.js +1136 -34
  42. package/dist/dataset-workspaces.js.map +4 -4
  43. package/dist/experiment-evaluation-schedules.js +18 -18
  44. package/dist/experiment-improvements.js +7 -7
  45. package/dist/experiments.js +19 -17
  46. package/dist/index.js +60 -35
  47. package/dist/index.js.map +1 -1
  48. package/dist/model-starter-attempts.js +1 -1
  49. package/dist/model-starter-catalog.js +9 -9
  50. package/dist/model-starters.js +9 -9
  51. package/dist/model-taskset-runs.js +2 -2
  52. package/dist/post-training.js +5 -5
  53. package/dist/taskset-drafts.js +117 -72
  54. package/dist/taskset-drafts.js.map +4 -4
  55. package/dist/taskset-packages.js +15 -15
  56. package/dist/training-bundle.js +17 -13
  57. package/dist/training-bundle.js.map +2 -2
  58. package/dist/training.js +7 -7
  59. package/dist/types/packages/sdk/src/advanced-refiner-evaluations.d.ts +3 -3
  60. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +24 -3
  61. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts.map +1 -1
  62. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts +26 -2
  63. package/dist/types/packages/sdk/src/candidate-evaluations.d.ts.map +1 -1
  64. package/dist/types/packages/sdk/src/codex-experiment-runtime.d.ts +17 -0
  65. package/dist/types/packages/sdk/src/codex-experiment-runtime.d.ts.map +1 -0
  66. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts +1 -0
  67. package/dist/types/packages/sdk/src/connected-dataset-source.d.ts.map +1 -1
  68. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts +80 -9
  69. package/dist/types/packages/sdk/src/connected-evidence-client.d.ts.map +1 -1
  70. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts +3 -2
  71. package/dist/types/packages/sdk/src/connected-evidence-contracts.d.ts.map +1 -1
  72. package/dist/types/packages/sdk/src/connected-evidence.d.ts +3 -0
  73. package/dist/types/packages/sdk/src/connected-evidence.d.ts.map +1 -1
  74. package/dist/types/packages/sdk/src/connected-starting-assets.d.ts +98 -0
  75. package/dist/types/packages/sdk/src/connected-starting-assets.d.ts.map +1 -0
  76. package/dist/types/packages/sdk/src/connected-sync.d.ts +138 -8
  77. package/dist/types/packages/sdk/src/connected-sync.d.ts.map +1 -1
  78. package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts +11 -0
  79. package/dist/types/packages/sdk/src/dataset-preparation-assembly.d.ts.map +1 -0
  80. package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts +1357 -0
  81. package/dist/types/packages/sdk/src/dataset-preparation-authoring-contracts.d.ts.map +1 -0
  82. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts +831 -0
  83. package/dist/types/packages/sdk/src/dataset-preparation-client.d.ts.map +1 -0
  84. package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts +860 -0
  85. package/dist/types/packages/sdk/src/dataset-preparation-contracts.d.ts.map +1 -0
  86. package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts +89 -0
  87. package/dist/types/packages/sdk/src/dataset-preparation-qualification-contracts.d.ts.map +1 -0
  88. package/dist/types/packages/sdk/src/dataset-preparation-research-contracts.d.ts +203 -0
  89. package/dist/types/packages/sdk/src/dataset-preparation-research-contracts.d.ts.map +1 -0
  90. package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts +76 -0
  91. package/dist/types/packages/sdk/src/dataset-preparation-starting-state.d.ts.map +1 -0
  92. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts +630 -0
  93. package/dist/types/packages/sdk/src/dataset-preparation-workspace.d.ts.map +1 -0
  94. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +58 -14
  95. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  96. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts +12 -0
  97. package/dist/types/packages/sdk/src/dataset-workspace-contracts.d.ts.map +1 -1
  98. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts +12 -0
  99. package/dist/types/packages/sdk/src/dataset-workspace-operations.d.ts.map +1 -1
  100. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +7 -0
  101. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  102. package/dist/types/packages/sdk/src/experiment-client.d.ts +88 -11
  103. package/dist/types/packages/sdk/src/experiment-client.d.ts.map +1 -1
  104. package/dist/types/packages/sdk/src/experiment-contracts.d.ts +40 -4
  105. package/dist/types/packages/sdk/src/experiment-contracts.d.ts.map +1 -1
  106. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +71 -7
  107. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts.map +1 -1
  108. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts +13 -1
  109. package/dist/types/packages/sdk/src/experiment-run-contracts.d.ts.map +1 -1
  110. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +60 -5
  111. package/dist/types/packages/sdk/src/experiment-run-details.d.ts.map +1 -1
  112. package/dist/types/packages/sdk/src/experiments.d.ts +1 -0
  113. package/dist/types/packages/sdk/src/experiments.d.ts.map +1 -1
  114. package/dist/types/packages/sdk/src/harness-experiment-policy.d.ts +1 -1
  115. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts +1 -0
  116. package/dist/types/packages/sdk/src/learning-batch-assets.d.ts.map +1 -1
  117. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +5 -0
  118. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  119. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +1 -0
  120. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  121. package/dist/types/packages/sdk/src/model-batch-review.d.ts +7 -4
  122. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  123. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +102 -4
  124. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  125. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts +9 -0
  126. package/dist/types/packages/sdk/src/model-starter-catalog.d.ts.map +1 -1
  127. package/dist/types/packages/sdk/src/model-starter-execution.d.ts +4 -0
  128. package/dist/types/packages/sdk/src/model-starter-execution.d.ts.map +1 -1
  129. package/dist/types/packages/sdk/src/model-starters.d.ts +18 -0
  130. package/dist/types/packages/sdk/src/model-starters.d.ts.map +1 -1
  131. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts +13 -0
  132. package/dist/types/packages/sdk/src/model-taskset-derivation.d.ts.map +1 -1
  133. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts +4 -0
  134. package/dist/types/packages/sdk/src/model-taskset-resources.d.ts.map +1 -1
  135. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts +52 -4
  136. package/dist/types/packages/sdk/src/model-taskset-runs-contracts.d.ts.map +1 -1
  137. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +32 -4
  138. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts.map +1 -1
  139. package/dist/types/packages/sdk/src/post-training.d.ts +60 -5
  140. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  141. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +19 -4
  142. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
  143. package/dist/types/packages/sdk/src/task-design-contracts.d.ts +367 -0
  144. package/dist/types/packages/sdk/src/task-design-contracts.d.ts.map +1 -0
  145. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts +6 -0
  146. package/dist/types/packages/sdk/src/taskset-authored-contracts.d.ts.map +1 -1
  147. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts +9 -3
  148. package/dist/types/packages/sdk/src/taskset-authored-files.d.ts.map +1 -1
  149. package/dist/types/packages/sdk/src/taskset-authored-portable-release.d.ts.map +1 -1
  150. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts +5 -0
  151. package/dist/types/packages/sdk/src/taskset-calibration-fixtures.d.ts.map +1 -1
  152. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts +12 -0
  153. package/dist/types/packages/sdk/src/taskset-draft-api-contracts.d.ts.map +1 -1
  154. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts +48 -12
  155. package/dist/types/packages/sdk/src/taskset-draft-client.d.ts.map +1 -1
  156. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts +11 -0
  157. package/dist/types/packages/sdk/src/taskset-draft-core.d.ts.map +1 -1
  158. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts +7 -0
  159. package/dist/types/packages/sdk/src/taskset-draft-document.d.ts.map +1 -1
  160. package/dist/types/packages/sdk/src/taskset-draft-files.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +38 -8
  162. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  163. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +14 -2
  164. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts.map +1 -1
  165. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts +12 -0
  166. package/dist/types/packages/sdk/src/taskset-draft-workspace.d.ts.map +1 -1
  167. package/dist/types/packages/sdk/src/taskset-drafts.d.ts +2 -0
  168. package/dist/types/packages/sdk/src/taskset-drafts.d.ts.map +1 -1
  169. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +68 -0
  170. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  171. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +35 -0
  172. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/taskset-package-files.d.ts.map +1 -1
  174. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts +5 -1
  175. package/dist/types/packages/sdk/src/taskset-package-grader-projection.d.ts.map +1 -1
  176. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +10 -4
  177. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  178. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +34 -12
  179. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  180. package/dist/types/packages/sdk/src/training-bundle.d.ts.map +1 -1
  181. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +26 -6
  182. package/dist/types/packages/sdk/src/training-learning-batch.d.ts.map +1 -1
  183. package/dist/types/packages/sdk/src/training.d.ts +8 -1
  184. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  185. package/package.json +3 -3
  186. package/dist/chunk-4IWDOYKR.js +0 -65
  187. package/dist/chunk-4IWDOYKR.js.map +0 -7
  188. package/dist/chunk-DUJXF7YI.js.map +0 -7
  189. package/dist/chunk-LQ5Q35IF.js.map +0 -7
  190. package/dist/chunk-P3BRSSRD.js.map +0 -7
  191. package/dist/chunk-PXNHL3SH.js.map +0 -7
  192. package/dist/chunk-Z4OLAEPL.js.map +0 -7
  193. /package/dist/{chunk-2G4WBMYI.js.map → chunk-32GJS7FV.js.map} +0 -0
  194. /package/dist/{chunk-YGLTO26A.js.map → chunk-7L4NIEW2.js.map} +0 -0
  195. /package/dist/{chunk-VEU3IXAQ.js.map → chunk-7MISLCN2.js.map} +0 -0
  196. /package/dist/{chunk-WTHJ3H4M.js.map → chunk-7WUJBFCH.js.map} +0 -0
  197. /package/dist/{chunk-PHETIB6R.js.map → chunk-AV5JV26B.js.map} +0 -0
  198. /package/dist/{chunk-Z4JJS6KE.js.map → chunk-B7VYE7YQ.js.map} +0 -0
  199. /package/dist/{chunk-AQGFJLIV.js.map → chunk-BDDT6VN6.js.map} +0 -0
  200. /package/dist/{chunk-PMBBNQ2J.js.map → chunk-D4WTE6ZA.js.map} +0 -0
  201. /package/dist/{chunk-ZOXHSJWU.js.map → chunk-DBRRQASP.js.map} +0 -0
  202. /package/dist/{chunk-FZH2M4G6.js.map → chunk-DG5CRENU.js.map} +0 -0
  203. /package/dist/{chunk-HAOPRFYQ.js.map → chunk-L5PQPAU6.js.map} +0 -0
  204. /package/dist/{chunk-DUPHBKVV.js.map → chunk-LHRHB5EJ.js.map} +0 -0
  205. /package/dist/{chunk-5GMY4TTF.js.map → chunk-OEPYLZXK.js.map} +0 -0
  206. /package/dist/{chunk-XYVPLV6Z.js.map → chunk-TTAFUUHZ.js.map} +0 -0
  207. /package/dist/{chunk-K2OH56BH.js.map → chunk-UVREOAMH.js.map} +0 -0
  208. /package/dist/{chunk-35OVUYPI.js.map → chunk-YSKUXQ2N.js.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  TasksetSchema,
3
3
  computeTasksetHash,
4
4
  validateTaskset
5
- } from "./chunk-FDHIL2CV.js";
5
+ } from "./chunk-X6J3VVYC.js";
6
6
  import {
7
7
  DatasetArtifactManifestSchema,
8
8
  GraderFixtureSchema,
@@ -16,7 +16,7 @@ import {
16
16
  TasksetPreferenceComparisonBindingSchema,
17
17
  TasksetPurposeSchema,
18
18
  TasksetSourceRefSchema
19
- } from "./chunk-Z4OLAEPL.js";
19
+ } from "./chunk-644E3NM2.js";
20
20
  import {
21
21
  ModelTasksetDraftPreparationSchema,
22
22
  TasksetDraftFileContentSchema,
@@ -194,7 +194,8 @@ function decodeTasksetDraftFileContent(input) {
194
194
  else {
195
195
  const raw = atob(content.data);
196
196
  if (btoa(raw) !== content.data) throw new Error("Noncanonical base64");
197
- bytes = Uint8Array.from(raw, (character) => character.charCodeAt(0));
197
+ bytes = new Uint8Array(raw.length);
198
+ for (let index = 0; index < raw.length; index++) bytes[index] = raw.charCodeAt(index);
198
199
  }
199
200
  } catch {
200
201
  throw new Error("Taskset draft file content is invalid or exceeds 6 MB.");
@@ -394,7 +395,8 @@ function decodeTasksetDraftWorkspaceFile(input) {
394
395
  throw new Error("Taskset draft file contains invalid base64.");
395
396
  }
396
397
  if (btoa(raw) !== file.base64) throw new Error("Taskset draft file contains noncanonical base64.");
397
- const bytes = Uint8Array.from(raw, (character) => character.charCodeAt(0));
398
+ const bytes = new Uint8Array(raw.length);
399
+ for (let index = 0; index < raw.length; index++) bytes[index] = raw.charCodeAt(index);
398
400
  if (bytes.byteLength !== file.sizeBytes || sha256(bytes) !== file.contentHash) throw new Error("Taskset draft file differs from its retained bytes.");
399
401
  return bytes;
400
402
  }
@@ -754,4 +756,4 @@ export {
754
756
  tasksetDraftFromTaskset,
755
757
  publishTasksetDraft
756
758
  };
757
- //# sourceMappingURL=chunk-LQ5Q35IF.js.map
759
+ //# sourceMappingURL=chunk-WYGBGCRO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/taskset-draft-document.ts", "../src/taskset-draft-files.ts", "../src/taskset-draft-manifests.ts", "../src/taskset-draft-workspace.ts", "../src/taskset-draft-authoring.ts", "../src/taskset-draft-publication.ts"],
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { TasksetMetricPolicySchema } from \"@openpond/evals/metrics\";\nimport { ModelTasksetDraftPreparationSchema } from \"./model-taskset-authoring-contracts.js\";\n\nimport { DatasetArtifactManifestSchema } from \"./taskset-draft-dataset-artifacts.js\";\nimport {\n GraderFixtureSchema,\n GraderSpecSchema,\n LearningSignalInventorySchema,\n TaskDataRecordSchema,\n TaskPolicyBoundarySchema,\n TasksetBenchmarkBindingSchema,\n TasksetCapabilityManifestSchema,\n TasksetEnvironmentContractSchema,\n TasksetPreferenceComparisonBindingSchema,\n TasksetPurposeSchema,\n TasksetSourceRefSchema,\n} from \"./taskset-draft-core.js\";\n\nconst IdSchema = z.string().trim().min(1).max(240);\nconst TimestampSchema = z.string().trim().min(1);\nconst HashSchema = z.string().trim().min(8).max(256);\nconst CodeIdentifierSchema = z.string().trim().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/);\nconst MetadataSchema = z.record(z.string(), z.unknown()).default({});\n\nfunction safeRelativeFilePath(value: string): boolean {\n const normalized = value.trim().replaceAll(\"\\\\\", \"/\");\n if (\n !normalized\n || normalized.startsWith(\"/\")\n || normalized === \".\"\n || normalized === \"..\"\n ) {\n return false;\n }\n return !normalized.split(\"/\").some((segment) =>\n !segment || segment === \".\" || segment === \"..\"\n );\n}\n\nexport const TaskDataDraftSchema = TaskDataRecordSchema.extend({\n sourceRefs: z.array(IdSchema).max(100).default([]),\n});\n\nexport const TasksetDraftStatusSchema = z.enum([\n \"draft\",\n \"validating\",\n \"needs_review\",\n \"published\",\n]);\n\nexport const TasksetDraftReviewPolicySchema = z.object({\n enabled: z.boolean(),\n candidateCount: z.number().int().min(2).max(4),\n minimumSamples: z.number().int().min(1).max(10_000).default(100),\n allowTies: z.boolean(),\n allowRejectAll: z.boolean(),\n rubric: z.string().trim().max(50_000),\n criteria: z.array(z.object({\n id: IdSchema,\n label: z.string().trim().min(1).max(500),\n description: z.string().trim().max(10_000),\n weight: z.number().nonnegative().max(1_000),\n })).max(100),\n});\n\nexport const TasksetDraftOutputContractSchema = z.object({\n mode: z.enum([\"text\", \"structured_json\", \"artifacts\"]),\n jsonSchema: z.record(z.string(), z.unknown()).nullable(),\n renderer: z.object({\n module: z.string().trim().min(1).max(1_000)\n .refine(safeRelativeFilePath, \"Renderer modules must use a safe relative path.\"),\n exportName: CodeIdentifierSchema,\n configRef: z.string().trim().min(1).max(1_000)\n .refine(safeRelativeFilePath, \"Renderer configuration must use a safe relative path.\")\n .nullable()\n .default(null),\n }).nullable(),\n}).superRefine((output, context) => {\n if (output.mode === \"structured_json\" && !output.jsonSchema) {\n context.addIssue({\n code: \"custom\",\n message: \"Structured JSON output requires a JSON Schema.\",\n path: [\"jsonSchema\"],\n });\n }\n if (output.mode === \"text\" && output.renderer) {\n context.addIssue({\n code: \"custom\",\n message: \"Text output cannot configure an artifact renderer.\",\n path: [\"renderer\"],\n });\n }\n});\n\nexport const TasksetDraftSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraft.v1\"),\n id: IdSchema,\n revision: z.number().int().positive(),\n profileId: IdSchema,\n modelScope: z.object({\n modelId: IdSchema,\n expectedModelRevision: z.number().int().positive(),\n source: ModelTasksetDraftPreparationSchema.optional(),\n }).strict().nullable().default(null),\n name: z.string().trim().max(500),\n objective: z.string().trim().max(20_000),\n purpose: TasksetPurposeSchema.default(\"general\"),\n benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),\n preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),\n status: TasksetDraftStatusSchema,\n sourceRefs: z.array(TasksetSourceRefSchema).max(100_000).default([]),\n datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),\n policy: TaskPolicyBoundarySchema,\n environment: TasksetEnvironmentContractSchema,\n output: TasksetDraftOutputContractSchema.default({\n mode: \"text\",\n jsonSchema: null,\n renderer: null,\n }),\n capabilities: TasksetCapabilityManifestSchema,\n metrics: TasksetMetricPolicySchema,\n review: TasksetDraftReviewPolicySchema,\n tasks: z.array(TaskDataDraftSchema).max(1_000_000).default([]),\n graders: z.array(GraderSpecSchema).max(1_000).default([]),\n graderFixtures: z.array(GraderFixtureSchema).max(100_000).default([]),\n learningSignals: LearningSignalInventorySchema,\n publishedTasksetRef: z.object({\n id: IdSchema,\n revision: z.number().int().positive(),\n contentHash: HashSchema,\n }).nullable(),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n metadata: MetadataSchema,\n}).superRefine((draft, context) => {\n if (draft.purpose === \"benchmark\" && !draft.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Benchmark drafts require an immutable benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (draft.purpose !== \"benchmark\" && draft.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Only benchmark drafts may carry a benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (draft.datasetArtifact && draft.tasks.length > 0) {\n context.addIssue({\n code: \"custom\",\n message: \"Artifact-backed drafts may not duplicate canonical rows inline.\",\n path: [\"tasks\"],\n });\n }\n if (draft.status === \"published\" && !draft.publishedTasksetRef) {\n context.addIssue({\n code: \"custom\",\n message: \"Published drafts require an immutable Taskset reference.\",\n path: [\"publishedTasksetRef\"],\n });\n }\n});\n\nexport type TaskDataDraft = z.infer<typeof TaskDataDraftSchema>;\nexport type TasksetDraftStatus = z.infer<typeof TasksetDraftStatusSchema>;\nexport type TasksetDraftReviewPolicy = z.infer<typeof TasksetDraftReviewPolicySchema>;\nexport type TasksetDraftOutputContract = z.infer<typeof TasksetDraftOutputContractSchema>;\nexport type TasksetDraft = z.infer<typeof TasksetDraftSchema>;\n", "import { sha256 } from \"@openpond/harness\";\nimport { TasksetDraftFileContentSchema, TasksetDraftFilePathSchema, type TasksetDraftFile } from \"./model-taskset-authoring-contracts.js\";\n\nexport const MAX_TASKSET_DRAFT_EDIT_FILE_BYTES = 6_000_000;\nconst MANAGED_FILES = new Set([\"taskset.json\", \"capabilities.json\", \"data/tasks.jsonl\", \"tasks/tasks.jsonl\", \"graders/graders.json\", \"fixtures/grader-fixtures.json\", \"metrics/policy.json\", \"assets/manifest.json\", \"environment/contract.json\", \"environment/taskset.ts\", \"rubrics/preference-review.md\", \"comparisons/policy.json\"]);\n\nexport function isWritableTasksetDraftFilePath(value: string): boolean {\n const path = TasksetDraftFilePathSchema.parse(value);\n return !MANAGED_FILES.has(path) && !path.startsWith(\"source-artifacts/\");\n}\n\nexport function isManagedTasksetDraftFilePath(value: string): boolean {\n return MANAGED_FILES.has(TasksetDraftFilePathSchema.parse(value));\n}\n\n/** Editor transport retains exact bytes, including a UTF-8 byte-order mark. */\nexport function createTasksetDraftFile(path: string, bytes: Uint8Array): TasksetDraftFile {\n const writable = isWritableTasksetDraftFilePath(path);\n if (bytes.byteLength > MAX_TASKSET_DRAFT_EDIT_FILE_BYTES) throw new Error(\"Taskset draft file content is invalid or exceeds 6 MB.\");\n let content: TasksetDraftFile[\"content\"];\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes);\n content = /[\\u0000-\\u0008\\u000e-\\u001f]/.test(text) ? base64Content(bytes) : { encoding: \"utf8\", data: text };\n } catch { content = base64Content(bytes); }\n return { path, writable, content, sizeBytes: bytes.byteLength, contentHash: sha256(bytes) };\n}\n\nexport function decodeTasksetDraftFileContent(input: unknown): Uint8Array {\n const content = TasksetDraftFileContentSchema.parse(input);\n let bytes: Uint8Array;\n try {\n if (content.encoding === \"utf8\") bytes = new TextEncoder().encode(content.data);\n else {\n const raw = atob(content.data);\n if (btoa(raw) !== content.data) throw new Error(\"Noncanonical base64\");\n bytes = new Uint8Array(raw.length);\n for (let index = 0; index < raw.length; index++) bytes[index] = raw.charCodeAt(index);\n }\n } catch { throw new Error(\"Taskset draft file content is invalid or exceeds 6 MB.\"); }\n if (bytes.byteLength > MAX_TASKSET_DRAFT_EDIT_FILE_BYTES) throw new Error(\"Taskset draft file content is invalid or exceeds 6 MB.\");\n return bytes;\n}\n\nfunction base64Content(bytes: Uint8Array): TasksetDraftFile[\"content\"] {\n // Avoid spreading a multi-megabyte file onto the JavaScript call stack.\n let raw = \"\";\n for (let offset = 0; offset < bytes.length; offset += 8192) raw += String.fromCharCode(...bytes.subarray(offset, offset + 8192));\n return { encoding: \"base64\", data: btoa(raw) };\n}\n", "import { canonicalJson } from \"@openpond/harness\";\nimport { TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFilePathSchema } from \"./model-taskset-authoring-contracts.js\";\n\nexport function configuredTasksetDraftFiles(draft: TasksetDraft): Array<{ relativePath: string; source: string }> {\n const configured: Array<{ relativePath: string; source: string }> = [];\n if (draft.output.renderer) {\n configured.push({\n relativePath: draft.output.renderer.module,\n source: `export async function ${draft.output.renderer.exportName}(output: unknown) {\\n // Return artifact paths or bytes derived from the model's structured output.\\n return output;\\n}\\n`,\n });\n }\n for (const grader of draft.graders) {\n if (grader.kind !== \"custom_verifier\") continue;\n configured.push({\n relativePath: grader.module,\n source: `export async function ${grader.exportName}(input: { output: unknown; task: unknown }) {\\n return { passed: false, score: 0, feedback: \"Implement this verifier.\" };\\n}\\n`,\n });\n }\n if (draft.metrics.customAggregator) {\n configured.push({\n relativePath: draft.metrics.customAggregator.module,\n source: `export function ${draft.metrics.customAggregator.exportName}(scores: number[]) {\\n return scores.length ? scores.reduce((sum, score) => sum + score, 0) / scores.length : 0;\\n}\\n`,\n });\n }\n for (const file of configured) TasksetDraftFilePathSchema.parse(file.relativePath);\n return configured;\n}\n\n/** Canonical form-owned files have one structured document as their source. */\nexport function renderTasksetDraftManifests(input: unknown): Map<string, string> {\n const draft = TasksetDraftSchema.parse(input);\n return new Map([\n [\"taskset.json\", canonicalJson(draft)],\n [\"tasks/tasks.jsonl\", jsonLines(draft.tasks)],\n [\"graders/graders.json\", canonicalJson(draft.graders)],\n [\"fixtures/grader-fixtures.json\", canonicalJson(draft.graderFixtures)],\n [\"metrics/policy.json\", canonicalJson(draft.metrics)],\n [\"assets/manifest.json\", canonicalJson(draft.tasks.flatMap(task => task.assets ?? []))],\n [\"environment/contract.json\", canonicalJson(draft.environment)],\n [\"rubrics/preference-review.md\", rubricMarkdown(draft)],\n [\"comparisons/policy.json\", canonicalJson(draft.review)],\n ]);\n}\n\nfunction rubricMarkdown(draft: TasksetDraft): string {\n const criteria = draft.review.criteria.length\n ? `\\n\\n## Criteria\\n\\n${draft.review.criteria.map((criterion) =>\n `- **${criterion.label}** (${criterion.weight}): ${criterion.description}`\n ).join(\"\\n\")}`\n : \"\";\n return `# Preference review rubric\\n\\n${draft.review.rubric}${criteria}\\n`;\n}\n\nfunction jsonLines(values: unknown[]): string {\n return values.length ? `${values.map((value) => JSON.stringify(value)).join(\"\\n\")}\\n` : \"\";\n}\n", "import { z } from \"zod\";\nimport { contentHash, sha256 } from \"@openpond/harness\";\nimport { assertBoundedTaskJson } from \"@openpond/evals/task-schema\";\nimport { TasksetDraftSchema } from \"./taskset-draft-document.js\";\nimport { TasksetDraftFileMutationSchema, TasksetDraftFilePathSchema, type TasksetDraftFileMutation } from \"./model-taskset-authoring-contracts.js\";\nimport { createTasksetDraftFile, decodeTasksetDraftFileContent, isManagedTasksetDraftFilePath, isWritableTasksetDraftFilePath } from \"./taskset-draft-files.js\";\nimport { configuredTasksetDraftFiles, renderTasksetDraftManifests } from \"./taskset-draft-manifests.js\";\n\nexport const MAX_TASKSET_DRAFT_WORKSPACE_BYTES = 64 * 1024 * 1024;\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nexport const TasksetDraftWorkspaceFileSchema = z.object({\n path: TasksetDraftFilePathSchema,\n contentHash: HashSchema,\n sizeBytes: z.number().int().nonnegative().max(MAX_TASKSET_DRAFT_WORKSPACE_BYTES),\n base64: z.string().max(MAX_TASKSET_DRAFT_WORKSPACE_BYTES),\n}).strict();\nconst WorkspaceContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetDraftWorkspace.v1\"),\n draft: TasksetDraftSchema,\n files: z.array(TasksetDraftWorkspaceFileSchema).max(10_000),\n}).strict();\nexport const TasksetDraftWorkspaceSchema = WorkspaceContentSchema.extend({ contentHash: HashSchema }).strict();\nexport type TasksetDraftWorkspace = z.infer<typeof TasksetDraftWorkspaceSchema>;\nexport type TasksetDraftWorkspaceFile = z.infer<typeof TasksetDraftWorkspaceFileSchema>;\n\n/** Files are retained separately from the structured document, including bytes\n * too large for the code editor. Publication remains a separate validation step. */\nexport function createTasksetDraftWorkspace(input: z.input<typeof WorkspaceContentSchema>): TasksetDraftWorkspace {\n assertBoundedTaskJson(input, MAX_TASKSET_DRAFT_WORKSPACE_BYTES);\n const content = WorkspaceContentSchema.parse(input);\n content.files.sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0);\n return validateTasksetDraftWorkspace({ ...content, contentHash: contentHash(content) });\n}\n\nexport function validateTasksetDraftWorkspace(input: unknown): TasksetDraftWorkspace {\n assertBoundedTaskJson(input, MAX_TASKSET_DRAFT_WORKSPACE_BYTES);\n const workspace = TasksetDraftWorkspaceSchema.parse(input);\n const { contentHash: expectedHash, ...content } = workspace;\n if (contentHash(content) !== expectedHash) throw new Error(\"Taskset draft workspace differs from its retained bytes.\");\n let previousPath: string | null = null;\n const paths = new Set<string>();\n for (const file of workspace.files) {\n if (isManagedTasksetDraftFilePath(file.path)) throw new Error(\"Managed Taskset files are represented by the draft document.\");\n if (previousPath !== null && previousPath >= file.path) throw new Error(\"Taskset draft file paths must be unique and sorted.\");\n const segments = file.path.split(\"/\");\n for (let end = 1; end < segments.length; end++) if (paths.has(segments.slice(0, end).join(\"/\"))) throw new Error(\"A Taskset draft file occupies another file's directory.\");\n decodeTasksetDraftWorkspaceFile(file);\n paths.add(file.path);\n previousPath = file.path;\n }\n return workspace;\n}\n\nexport function readTasksetDraftWorkspaceFile(input: TasksetDraftWorkspace, path: string) {\n const workspace = validateTasksetDraftWorkspace(input);\n TasksetDraftFilePathSchema.parse(path);\n const file = workspace.files.find(candidate => candidate.path === path);\n const manifest = isManagedTasksetDraftFilePath(path) ? renderTasksetDraftManifests(workspace.draft).get(path) : undefined;\n if (!file && manifest === undefined) throw new Error(\"Taskset draft file does not exist.\");\n const result = createTasksetDraftFile(path, file ? decodeTasksetDraftWorkspaceFile(file) : new TextEncoder().encode(manifest!));\n return { draftRevision: workspace.draft.revision, file: { ...result, writable: result.writable && workspace.draft.status !== \"published\" } };\n}\n\nexport function listTasksetDraftWorkspaceFiles(input: TasksetDraftWorkspace) {\n const workspace = validateTasksetDraftWorkspace(input);\n const files = workspace.files.map(file => ({ path: file.path, sizeBytes: file.sizeBytes,\n writable: workspace.draft.status !== \"published\" && isWritableTasksetDraftFilePath(file.path) }));\n for (const [path, content] of renderTasksetDraftManifests(workspace.draft)) files.push({ path, sizeBytes: new TextEncoder().encode(content).byteLength, writable: false });\n return { draftRevision: workspace.draft.revision, files: files.sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0) };\n}\n\nexport function saveTasksetDraftWorkspaceDocument(input: { workspace: TasksetDraftWorkspace; expectedDraftRevision: number; draft: unknown; now: string }): TasksetDraftWorkspace {\n const workspace = editableWorkspace(input.workspace, input.expectedDraftRevision);\n const draft = TasksetDraftSchema.parse(input.draft);\n const current = workspace.draft;\n if (draft.id !== current.id || draft.profileId !== current.profileId || contentHash(draft.modelScope) !== contentHash(current.modelScope)) throw new Error(\"Taskset draft Model ownership cannot change.\");\n if (draft.revision !== current.revision || draft.status !== current.status || draft.createdAt !== current.createdAt || contentHash(draft.publishedTasksetRef) !== contentHash(current.publishedTasksetRef)) throw new Error(\"Taskset draft lifecycle fields cannot change through form edits.\");\n const files = [...workspace.files];\n for (const configured of configuredTasksetDraftFiles(draft)) if (!files.some(file => file.path === configured.relativePath)) {\n const bytes = new TextEncoder().encode(configured.source);\n files.push({ path: configured.relativePath, contentHash: sha256(bytes), sizeBytes: bytes.byteLength, base64: base64(bytes) });\n }\n const aggregator = draft.metrics.customAggregator;\n const module = aggregator ? files.find(file => file.path === aggregator.module) : undefined;\n return createTasksetDraftWorkspace({ schemaVersion: workspace.schemaVersion, files,\n draft: { ...draft, revision: current.revision + 1, status: \"draft\", updatedAt: input.now,\n ...(aggregator && module ? { metrics: { ...draft.metrics, customAggregator: { ...aggregator, contentHash: module.contentHash } } } : {}) } });\n}\n\nexport function saveTasksetDraftWorkspaceFile(input: { workspace: TasksetDraftWorkspace; mutation: TasksetDraftFileMutation; now: string }): TasksetDraftWorkspace {\n const mutation = TasksetDraftFileMutationSchema.parse(input.mutation);\n const workspace = editableWorkspace(input.workspace, mutation.expectedDraftRevision);\n if (workspace.draft.id !== mutation.draftId) throw new Error(\"Taskset draft file belongs to another draft.\");\n if (!isWritableTasksetDraftFilePath(mutation.path)) throw new Error(\"This file is managed by the Taskset forms or retained source history.\");\n const previous = workspace.files.find(file => file.path === mutation.path);\n if ((previous?.contentHash ?? null) !== mutation.expectedFileHash) throw new Error(\"Taskset draft file changed. Reload it before saving.\");\n if (!previous && mutation.content === null) throw new Error(\"Taskset draft file does not exist.\");\n const files = workspace.files.filter(file => file.path !== mutation.path);\n if (mutation.content !== null) {\n const bytes = decodeTasksetDraftFileContent(mutation.content);\n files.push({ path: mutation.path, contentHash: sha256(bytes), sizeBytes: bytes.byteLength, base64: base64(bytes) });\n }\n return createTasksetDraftWorkspace({ schemaVersion: workspace.schemaVersion, files,\n draft: { ...workspace.draft, revision: workspace.draft.revision + 1, status: \"draft\", updatedAt: input.now } });\n}\n\nfunction editableWorkspace(input: unknown, expectedRevision: number): TasksetDraftWorkspace {\n const workspace = validateTasksetDraftWorkspace(input);\n if (workspace.draft.status === \"published\") throw new Error(\"Published Taskset drafts are immutable.\");\n if (workspace.draft.revision !== expectedRevision) throw new Error(\"Taskset draft changed. Reload before saving.\");\n return workspace;\n}\n\nexport function decodeTasksetDraftWorkspaceFile(input: TasksetDraftWorkspaceFile): Uint8Array {\n const file = TasksetDraftWorkspaceFileSchema.parse(input);\n let raw: string;\n try { raw = atob(file.base64); }\n catch { throw new Error(\"Taskset draft file contains invalid base64.\"); }\n if (btoa(raw) !== file.base64) throw new Error(\"Taskset draft file contains noncanonical base64.\");\n const bytes = new Uint8Array(raw.length);\n for (let index = 0; index < raw.length; index++) bytes[index] = raw.charCodeAt(index);\n if (bytes.byteLength !== file.sizeBytes || sha256(bytes) !== file.contentHash) throw new Error(\"Taskset draft file differs from its retained bytes.\");\n return bytes;\n}\n\nfunction base64(bytes: Uint8Array): string {\n let raw = \"\";\n for (let offset = 0; offset < bytes.length; offset += 8192) raw += String.fromCharCode(...bytes.subarray(offset, offset + 8192));\n return btoa(raw);\n}\n", "import { TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\n\nexport type TasksetDraftPublishIssue = {\n code: string;\n message: string;\n path: string | null;\n};\n\nexport class TasksetDraftPublishError extends Error {\n readonly issues: TasksetDraftPublishIssue[];\n\n constructor(issues: TasksetDraftPublishIssue[]) {\n super(issues.map((issue) => issue.message).join(\"\\n\"));\n this.name = \"TasksetDraftPublishError\";\n this.issues = issues;\n }\n}\n\nexport function createTasksetDraft(input: {\n profileId: string;\n modelScope?: TasksetDraft[\"modelScope\"];\n id?: string;\n name?: string;\n now?: string;\n}): TasksetDraft {\n const timestamp = input.now ?? new Date().toISOString();\n const id = input.id?.trim() || `taskset-draft-${globalThis.crypto.randomUUID()}`;\n return TasksetDraftSchema.parse({\n schemaVersion: \"openpond.tasksetDraft.v1\",\n id,\n revision: 1,\n profileId: input.profileId,\n modelScope: input.modelScope ?? null,\n name: input.name?.trim() ?? \"\",\n objective: \"\",\n purpose: \"general\",\n benchmark: null,\n preferenceComparison: null,\n status: \"draft\",\n sourceRefs: [],\n datasetArtifact: null,\n policy: {\n policyVisibleFields: [\"input\"],\n privilegedFields: [\"expectedOutput\"],\n hiddenGraderRefs: [],\n connectedAppScopes: [],\n },\n environment: {\n protocolVersion: \"openpond.taskEnvironment.v1\",\n kind: \"chat\",\n entrypoint: \"openpond-chat-v1\",\n stateful: false,\n deterministicSeeds: true,\n toolNames: [],\n lifecycle: [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"],\n defaultTimeoutMs: 120_000,\n networkPolicy: \"none\",\n resources: [],\n metadata: {},\n },\n output: {\n mode: \"text\",\n jsonSchema: null,\n renderer: null,\n },\n capabilities: {\n schemaVersion: \"openpond.tasksetCapabilities.v1\",\n taskKind: \"chat\",\n supportedSignals: [\n \"demonstration\",\n \"preference\",\n \"correction\",\n \"feedback\",\n \"reward\",\n \"label\",\n ],\n compatibleMethods: [\"none\"],\n rewardKinds: [\"none\"],\n requiresTools: false,\n requiresState: false,\n requiresPrivilegedGrading: true,\n environmentPlacements: [\"local\", \"remote\", \"colocated\"],\n exportable: true,\n portabilityBlockers: [],\n },\n metrics: {\n schemaVersion: \"openpond.tasksetMetricPolicy.v1\",\n primaryMetric: \"score\",\n aggregation: \"mean_score\",\n missingReward: \"zero\",\n customAggregator: null,\n },\n review: {\n enabled: false,\n candidateCount: 2,\n minimumSamples: 100,\n allowTies: true,\n allowRejectAll: true,\n rubric: \"\",\n criteria: [],\n },\n tasks: [],\n graders: [],\n graderFixtures: [],\n learningSignals: {\n demonstrations: [],\n preferences: [],\n corrections: [],\n feedback: [],\n rewards: [],\n labels: [],\n },\n publishedTasksetRef: null,\n createdAt: timestamp,\n updatedAt: timestamp,\n metadata: {},\n });\n}\n\nexport function draftPublishIssues(draft: TasksetDraft): TasksetDraftPublishIssue[] {\n const issues: TasksetDraftPublishIssue[] = [];\n if (!draft.name.trim()) issues.push({ code: \"name_missing\", message: \"Name is required.\", path: \"name\" });\n if (!draft.objective.trim()) issues.push({ code: \"objective_missing\", message: \"Objective is required.\", path: \"objective\" });\n if (!draft.datasetArtifact && draft.tasks.length === 0) issues.push({ code: \"tasks_missing\", message: \"Add at least one task or Dataset artifact.\", path: \"tasks\" });\n const sourceIds = new Set(draft.sourceRefs.map((source) => source.id));\n for (const task of draft.tasks) {\n for (const sourceId of task.sourceRefs) {\n if (!sourceIds.has(sourceId)) issues.push({ code: \"task_source_missing\", message: `Task ${task.id} references missing source ${sourceId}.`, path: `tasks.${task.id}.sourceRefs` });\n }\n }\n return issues;\n}\n", "import { contentHash } from \"@openpond/harness\";\nimport { TasksetSchema, type Taskset, type DatasetBuildIntent } from \"./taskset-authored-contracts.js\";\nimport { TaskDataRecordSchema, type TasksetSourceRef } from \"./taskset-draft-core.js\";\nimport { TasksetDraftSchema, type TasksetDraft } from \"./taskset-draft-document.js\";\nimport { draftPublishIssues, TasksetDraftPublishError } from \"./taskset-draft-authoring.js\";\nimport { computeTasksetHash, validateTaskset } from \"./taskset-authored-validation.js\";\n\nexport function tasksetDraftFromTaskset(\n tasksetInput: unknown,\n now = new Date().toISOString(),\n): TasksetDraft {\n const taskset = TasksetSchema.parse(tasksetInput);\n return TasksetDraftSchema.parse({\n schemaVersion: \"openpond.tasksetDraft.v1\",\n id: `${taskset.id}-draft`,\n revision: 1,\n profileId: taskset.profileId,\n name: taskset.name,\n objective: taskset.objective,\n purpose: taskset.purpose,\n benchmark: taskset.benchmark,\n preferenceComparison: taskset.preferenceComparison,\n status: \"draft\",\n sourceRefs: taskset.sourceRefs,\n datasetArtifact: taskset.datasetArtifact ?? null,\n policy: taskset.policy,\n environment: taskset.environment,\n output: tasksetOutputContract(taskset.metadata),\n capabilities: taskset.capabilities,\n metrics: taskset.metrics ?? {\n schemaVersion: \"openpond.tasksetMetricPolicy.v1\",\n primaryMetric: \"score\",\n aggregation: \"mean_score\",\n missingReward: \"zero\",\n customAggregator: null,\n },\n review: {\n enabled: Boolean(taskset.preferenceComparison),\n candidateCount: 2,\n minimumSamples: 100,\n allowTies: true,\n allowRejectAll: true,\n rubric: \"\",\n criteria: [],\n },\n tasks: taskset.tasks,\n graders: taskset.graders,\n graderFixtures: taskset.graderFixtures,\n learningSignals: taskset.learningSignals,\n publishedTasksetRef: {\n id: taskset.id,\n revision: taskset.revision,\n contentHash: taskset.contentHash,\n },\n createdAt: now,\n updatedAt: now,\n metadata: {\n ...taskset.metadata,\n importedFromTaskset: {\n id: taskset.id,\n revision: taskset.revision,\n contentHash: taskset.contentHash,\n },\n },\n });\n}\n\nexport function publishTasksetDraft(input: {\n draft: unknown;\n now?: string;\n tasksetId?: string;\n sourcePackageHash?: string;\n}): Taskset {\n const draft = TasksetDraftSchema.parse(input.draft);\n const timestamp = input.now ?? new Date().toISOString();\n const issues = draftPublishIssues(draft);\n if (issues.length) throw new TasksetDraftPublishError(issues);\n\n const preparedSource = draft.modelScope?.source;\n if (preparedSource && input.tasksetId && input.tasksetId !== preparedSource.tasksetId) throw new Error(\"Taskset draft publication differs from its prepared identity.\");\n const tasksetId = preparedSource?.tasksetId || input.tasksetId?.trim()\n || draft.publishedTasksetRef?.id\n || draft.id.replace(/-draft$/, \"\");\n const revision = preparedSource?.tasksetRevision ?? (draft.publishedTasksetRef?.id === tasksetId\n ? draft.publishedTasksetRef.revision + 1\n : 1);\n const sourceRefs = draft.sourceRefs.length\n ? draft.sourceRefs\n : [generatedDraftSource(draft, tasksetId, timestamp)];\n const defaultSourceId = sourceRefs[0]!.id;\n const tasks = draft.tasks.map((task) => TaskDataRecordSchema.parse({\n ...task,\n sourceRefs: task.sourceRefs.length ? task.sourceRefs : [defaultSourceId],\n metadata: {\n exampleOrigin: \"expert_authored\",\n ...task.metadata,\n },\n }));\n const explicitMethod = draft.capabilities.compatibleMethods.find(\n (method) => method !== \"none\" && method !== \"retrieval\",\n ) ?? null;\n const buildIntent = buildIntentForDraft(draft);\n const rewardGraders = draft.graders.filter(grader => grader.rewardEligible && grader.weight > 0 && grader.kind !== \"human\");\n const inferRewardMethod = explicitMethod === null && buildIntent === \"verifiable_reward\" && rewardGraders.length > 0;\n const authoredMethod = explicitMethod ?? (inferRewardMethod ? \"grpo\" : null);\n const taskset = TasksetSchema.parse({\n schemaVersion: \"openpond.taskset.v1\",\n id: tasksetId,\n revision,\n profileId: draft.profileId,\n profileRelease: null,\n createImproveRunId: null,\n name: draft.name,\n objective: draft.objective,\n purpose: draft.purpose,\n benchmark: draft.benchmark,\n preferenceComparison: draft.preferenceComparison,\n status: \"needs_review\",\n sourceRefs,\n datasetArtifact: draft.datasetArtifact ?? null,\n policy: draft.policy,\n environment: draft.environment,\n capabilities: inferRewardMethod ? { ...draft.capabilities, compatibleMethods: [\"grpo\"],\n rewardKinds: [...new Set(rewardGraders.map(grader => grader.kind === \"model_judge\" ? \"model_judge\" : \"deterministic\"))] } : draft.capabilities,\n metrics: draft.metrics,\n tasks,\n graders: draft.graders,\n graderFixtures: draft.graderFixtures,\n learningSignals: draft.learningSignals,\n authoringProvenance: {\n schemaVersion: \"openpond.taskAuthoringProvenance.v1\",\n model: null,\n modelConfig: {},\n skillHash: contentHash(\"openpond-taskset-draft-authoring-v1\"),\n promptTemplateVersion: \"taskset-draft-v1\",\n buildIntent,\n buildSpecification: null,\n evidenceHashes: sourceRefs.map((source) => source.sourceHash),\n tasksetSdkVersion: \"draft-v1\",\n sourceCommit: null,\n repairHistory: [],\n createdAt: timestamp,\n },\n readiness: null,\n contentHash: \"00000000\",\n createdAt: revision === 1 ? draft.createdAt : timestamp,\n updatedAt: timestamp,\n metadata: {\n ...draft.metadata,\n ...(preparedSource ? { modelTasksetAuthoring: preparedSource.lineage } : {}),\n tasksetReviewPolicy: draft.review,\n tasksetOutputContract: draft.output,\n ...(input.sourcePackageHash\n ? { sourcePackageHash: input.sourcePackageHash }\n : {}),\n ...(authoredMethod ? { trainingMethod: authoredMethod } : {}),\n diagnosis: {\n schemaVersion: \"openpond.capabilityDiagnosis.v1\",\n summary: draft.objective,\n stableBehavior: [draft.objective],\n changingKnowledge: [],\n requiredContext: [],\n requiredTools: draft.environment.toolNames,\n intervention: authoredMethod === \"dpo\"\n ? \"preference\"\n : authoredMethod === \"grpo\" || authoredMethod === \"ppo\"\n ? \"grpo_rft\"\n : authoredMethod === \"sft\" ? \"sft\" : \"no_training\",\n trainingEligible: authoredMethod !== null,\n rationale: authoredMethod\n ? [`The author selected ${authoredMethod.toUpperCase()} compatibility.`]\n : [\"The Taskset is currently configured for evaluation only.\"],\n confidence: 1,\n },\n },\n });\n const hashed = TasksetSchema.parse({\n ...taskset,\n contentHash: computeTasksetHash(taskset),\n });\n const report = validateTaskset(hashed, { purpose: \"publication\" });\n const validationErrors = report.issues.filter((issue) => issue.severity === \"error\");\n if (validationErrors.length) {\n throw new TasksetDraftPublishError(validationErrors.map((issue) => ({\n code: issue.code,\n message: issue.message,\n path: issue.path,\n })));\n }\n return hashed;\n}\n\nfunction generatedDraftSource(\n draft: TasksetDraft,\n tasksetId: string,\n timestamp: string,\n): TasksetSourceRef {\n const generatorHash = contentHash({\n draftId: draft.id,\n draftRevision: draft.revision,\n tasks: draft.tasks,\n });\n return {\n schemaVersion: \"openpond.generatedDatasetSource.v1\",\n kind: \"generated\",\n id: `source-${tasksetId}`,\n profileId: draft.profileId,\n title: `${draft.name} manual authoring`,\n sourceHash: generatorHash,\n occurredAt: timestamp,\n licensingStatus: \"approved\",\n secretScanStatus: \"passed\",\n piiScanStatus: \"passed\",\n generatorId: \"openpond-taskset-draft\",\n generatorVersion: \"1\",\n seed: 0,\n generatorHash,\n metadata: { draftId: draft.id, draftRevision: draft.revision },\n };\n}\n\nfunction buildIntentForDraft(draft: TasksetDraft): DatasetBuildIntent {\n if (draft.metadata.buildIntent === \"discovery\" || (!draft.graders.length && !draft.learningSignals.preferences.length && !draft.learningSignals.rewards.length && !draft.learningSignals.labels.length)) return \"discovery\";\n if (draft.learningSignals.preferences.length) return \"preferences\";\n if (draft.learningSignals.rewards.length) return \"verifiable_reward\";\n if (draft.learningSignals.labels.length) return \"rubric\";\n if (!draft.capabilities.compatibleMethods.some(method => method !== \"none\" && method !== \"retrieval\")\n && draft.graders.some(grader => grader.rewardEligible && grader.weight > 0 && grader.kind !== \"human\")) return \"verifiable_reward\";\n return \"demonstrations\";\n}\n\nfunction tasksetOutputContract(metadata: Record<string, unknown>): TasksetDraft[\"output\"] {\n const value = metadata.tasksetOutputContract;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n return value as TasksetDraft[\"output\"];\n }\n return { mode: \"text\", jsonSchema: null, renderer: null };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["z", "HashSchema", "z"]
7
+ }
@@ -11,7 +11,7 @@ import {
11
11
  TasksetPreferenceComparisonBindingSchema,
12
12
  TasksetPurposeSchema,
13
13
  TasksetSourceRefSchema
14
- } from "./chunk-Z4OLAEPL.js";
14
+ } from "./chunk-644E3NM2.js";
15
15
  import {
16
16
  ChatModelRefSchema
17
17
  } from "./chunk-KAE7AMYE.js";
@@ -456,16 +456,17 @@ function validateWorkExecution(taskset, issues) {
456
456
  path: `${path}.id`
457
457
  });
458
458
  }
459
- if (fileNames.has(asset.fileName)) {
459
+ const stagedPath = asset.stagingPath ?? asset.fileName;
460
+ if (fileNames.has(stagedPath)) {
460
461
  issues.push({
461
462
  code: "work_asset_duplicate_name",
462
463
  severity: "error",
463
- message: `Task ${task.id} repeats staged file name ${asset.fileName}.`,
464
+ message: `Task ${task.id} repeats staged path ${stagedPath}.`,
464
465
  path: `${path}.fileName`
465
466
  });
466
467
  }
467
468
  assetIds.add(asset.id);
468
- fileNames.add(asset.fileName);
469
+ fileNames.add(stagedPath);
469
470
  if (!task.sourceRefs.includes(asset.sourceRefId)) {
470
471
  issues.push({
471
472
  code: "work_asset_task_source_missing",
@@ -482,7 +483,7 @@ function validateWorkExecution(taskset, issues) {
482
483
  message: `Asset ${asset.id} references missing source ${asset.sourceRefId}.`,
483
484
  path: `${path}.sourceRefId`
484
485
  });
485
- } else if ("sourceFileHashes" in source && !source.sourceFileHashes.includes(asset.sha256)) {
486
+ } else if ("sourceFileHashes" in source && !source.sourceFileHashes?.includes(asset.sha256)) {
486
487
  issues.push({
487
488
  code: "work_asset_hash_unregistered",
488
489
  severity: "error",
@@ -551,8 +552,10 @@ function validatePolicyBoundary(taskset, issues) {
551
552
  }
552
553
  }
553
554
  function validateGraders(taskset, issues) {
555
+ const taskIds = new Set(taskset.tasks.map((task) => task.id));
554
556
  const ids = /* @__PURE__ */ new Set();
555
557
  for (const grader of taskset.graders) {
558
+ if (grader.taskIds?.some((id) => !taskIds.has(id))) issues.push({ code: "grader_task_missing", severity: "error", message: `Grader ${grader.id} refers to a task outside this Dataset.`, path: "graders" });
556
559
  if (ids.has(grader.id)) issues.push({ code: "grader_duplicate", severity: "error", message: `Duplicate grader id ${grader.id}.`, path: "graders" });
557
560
  ids.add(grader.id);
558
561
  if (grader.kind === "model_judge" && grader.rewardEligible && grader.calibrationStatus !== "passed") {
@@ -632,4 +635,4 @@ export {
632
635
  computeTasksetHash,
633
636
  validatePortability
634
637
  };
635
- //# sourceMappingURL=chunk-FDHIL2CV.js.map
638
+ //# sourceMappingURL=chunk-X6J3VVYC.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/taskset-authored-contracts.ts", "../src/taskset-authored-validation.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { VersionedReleaseRefSchema } from \"@openpond/harness\";\nimport { ChatModelRefSchema } from \"@openpond/harness/models\";\nimport { TasksetMetricPolicySchema } from \"@openpond/evals/metrics\";\nimport { DatasetArtifactManifestSchema } from \"./taskset-draft-dataset-artifacts.js\";\nimport {\n TasksetPurposeSchema,\n TasksetBenchmarkBindingSchema,\n TasksetPreferenceComparisonBindingSchema,\n TasksetSourceRefSchema,\n TaskPolicyBoundarySchema,\n TasksetEnvironmentContractSchema,\n TasksetCapabilityManifestSchema,\n TaskDataRecordSchema,\n GraderSpecSchema,\n GraderFixtureSchema,\n LearningSignalInventorySchema,\n type TasksetSourceRef, type TrainingSourceRef,\n} from \"./taskset-draft-core.js\";\n\nconst IdSchema = z.string().trim().min(1).max(240);\nconst TimestampSchema = z.string().trim().min(1);\nconst HashSchema = z.string().trim().min(8).max(256);\nconst MetadataSchema = z.record(z.string(), z.unknown()).default({});\nconst NullableIdSchema = IdSchema.nullable();\n\nexport const TASKSET_WORK_TOOL_NAMES = [\n \"work_capabilities\",\n \"work_environment\",\n \"work_list_files\",\n \"work_read_file\",\n \"work_read_document\",\n \"work_write_file\",\n \"work_write_docx\",\n \"work_edit_file\",\n \"work_delete_file\",\n \"work_exec\",\n \"work_save_output\",\n \"work_stop\",\n] as const;\n\nexport const TasksetStatusSchema = z.enum([\n \"draft\",\n \"awaiting_disclosure_approval\",\n \"awaiting_materialization_approval\",\n \"materializing\",\n \"validating\",\n \"needs_review\",\n \"baselining\",\n \"ready\",\n \"blocked\",\n \"failed\",\n \"archived\",\n]);\n\nexport const DatasetBuildIntentSchema = z.enum([\n \"demonstrations\",\n \"preferences\",\n \"verifiable_reward\",\n \"rubric\",\n \"discovery\",\n]);\n\nconst DatasetEvidenceTextSchema = z.string().trim().max(100_000);\n\nexport const DatasetBuildSpecificationSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"demonstrations\"),\n behavior: DatasetEvidenceTextSchema,\n examples: z.array(z.object({\n id: IdSchema,\n prompt: DatasetEvidenceTextSchema,\n response: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n }),\n z.object({\n kind: z.literal(\"preferences\"),\n preference: DatasetEvidenceTextSchema,\n pairs: z.array(z.object({\n id: IdSchema,\n prompt: DatasetEvidenceTextSchema,\n chosen: DatasetEvidenceTextSchema,\n rejected: DatasetEvidenceTextSchema,\n rationale: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n }),\n z.object({\n kind: z.literal(\"verifiable_reward\"),\n task: DatasetEvidenceTextSchema,\n rules: z.array(z.object({\n id: IdSchema,\n points: z.number().finite(),\n condition: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n otherwisePoints: z.number().finite().default(0),\n }),\n z.object({\n kind: z.literal(\"rubric\"),\n task: DatasetEvidenceTextSchema,\n criteria: z.array(z.object({\n id: IdSchema,\n label: z.string().trim().max(500),\n description: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n positiveExample: DatasetEvidenceTextSchema,\n negativeExample: DatasetEvidenceTextSchema,\n boundaryExample: DatasetEvidenceTextSchema,\n }),\n]);\n\nexport const GeneratedTaskFileSchema = z.object({\n path: z.string().trim().min(1).max(1_000),\n role: z.enum([\"environment\", \"verifier\", \"fixture\"]),\n content: z.string().max(250_000),\n});\n\nexport const TrainingPathRecommendationSchema = z.object({\n primaryMethod: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\", \"sdft\", \"opsd\", \"sdpo\"]),\n bootstrap: z.object({\n method: z.literal(\"sft\"),\n purpose: z.literal(\"trajectory_bootstrap\"),\n demonstrationRefs: z.array(IdSchema).min(1).max(100_000),\n limitations: z.array(z.string().trim().min(1).max(5_000)).min(1).max(100),\n }).nullable(),\n});\n\nexport const TrainingMethodReadinessReasonCodeSchema = z.enum([\n \"taskset_not_ready\",\n \"demonstrations_missing\",\n \"preference_pairs_missing\",\n \"preference_pairs_invalid\",\n \"executable_reward_missing\",\n \"reward_not_calibrated\",\n \"reward_model_missing\",\n \"value_model_required\",\n \"frozen_eval_missing\",\n]);\n\nexport const TrainingMethodReadinessSchema = z.object({\n method: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\"]),\n status: z.enum([\"recommended\", \"compatible\", \"needs_dataset_work\"]),\n reasonCodes: z.array(TrainingMethodReadinessReasonCodeSchema).default([]),\n reasons: z.array(z.string().trim().min(1).max(5_000)).default([]),\n});\n\nexport const TasksetReadinessFindingSchema = z.object({\n code: IdSchema,\n message: z.string().trim().min(1).max(5_000),\n path: z.string().trim().max(2_000).nullable(),\n});\n\nexport const TasksetReadinessReportSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetReadiness.v1\"),\n tasksetId: IdSchema,\n tasksetHash: HashSchema,\n ready: z.boolean(),\n recommendedMethod: z.enum([\"none\", \"retrieval\", \"sft\", \"dpo\", \"grpo\", \"ppo\", \"sdft\", \"opd\", \"opsd\", \"sdpo\"]),\n trainingPath: TrainingPathRecommendationSchema.nullable().default(null),\n methodReadiness: z.array(TrainingMethodReadinessSchema).default([]),\n compatibleDestinationClasses: z.array(\n z.enum([\"export\", \"custom\", \"hosted_managed\"]),\n ),\n blockers: z.array(TasksetReadinessFindingSchema).default([]),\n advisories: z.array(TasksetReadinessFindingSchema).default([]),\n warnings: z.array(z.string().trim().min(1).max(5_000)).default([]),\n generatedAt: TimestampSchema,\n});\n\nexport const AuthoringRepairSchema = z.object({ attempt: z.number().int().positive(), summary: z.string().trim().min(1).max(5_000), createdAt: TimestampSchema });\n\nexport const AuthoringProvenanceSchema = z.object({\n schemaVersion: z.literal(\"openpond.taskAuthoringProvenance.v1\"),\n model: ChatModelRefSchema.nullable(),\n modelConfig: MetadataSchema,\n skillHash: HashSchema,\n promptTemplateVersion: z.string().trim().min(1).max(200),\n buildIntent: DatasetBuildIntentSchema.default(\"demonstrations\"),\n buildSpecification: DatasetBuildSpecificationSchema.nullable().default(null),\n evidenceHashes: z.array(HashSchema).max(100_000),\n tasksetSdkVersion: z.string().trim().min(1).max(100),\n sourceCommit: z.string().trim().min(1).max(256).nullable(),\n repairHistory: z.array(AuthoringRepairSchema).max(1_000),\n createdAt: TimestampSchema,\n});\n\nexport const TasksetSchema = z.object({\n schemaVersion: z.literal(\"openpond.taskset.v1\"),\n id: IdSchema,\n revision: z.number().int().positive().default(1),\n profileId: IdSchema,\n profileRelease: VersionedReleaseRefSchema.nullable().optional(),\n createImproveRunId: NullableIdSchema.default(null),\n name: z.string().trim().min(1).max(500),\n // Portable tasks may carry all instructions in their individual inputs.\n // Preserve an absent package prompt; draft publication validates its objective.\n objective: z.string().trim().max(20_000),\n purpose: TasksetPurposeSchema.default(\"general\"),\n benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),\n preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),\n status: TasksetStatusSchema,\n sourceRefs: z.array(TasksetSourceRefSchema).min(1).max(100_000),\n datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),\n policy: TaskPolicyBoundarySchema,\n environment: TasksetEnvironmentContractSchema,\n capabilities: TasksetCapabilityManifestSchema,\n metrics: TasksetMetricPolicySchema.optional(),\n tasks: z.array(TaskDataRecordSchema).max(1_000_000),\n graders: z.array(GraderSpecSchema).max(1_000),\n // Imported releases are inspectable before local calibration. Admission\n // requires real fixtures separately in validateTaskset.\n graderFixtures: z.array(GraderFixtureSchema).max(100_000),\n learningSignals: LearningSignalInventorySchema,\n authoringProvenance: AuthoringProvenanceSchema,\n readiness: TasksetReadinessReportSchema.nullable(),\n contentHash: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n metadata: MetadataSchema,\n}).superRefine((taskset, context) => {\n if (taskset.purpose === \"benchmark\" && !taskset.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Benchmark Tasksets require an immutable benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (taskset.purpose !== \"benchmark\" && taskset.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Only benchmark Tasksets may carry a benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (taskset.datasetArtifact && taskset.tasks.length > 0) {\n context.addIssue({\n code: \"custom\",\n message:\n \"Artifact-backed Tasksets may not duplicate canonical rows inline.\",\n path: [\"tasks\"],\n });\n }\n if (!taskset.datasetArtifact && taskset.tasks.length === 0) {\n context.addIssue({\n code: \"custom\",\n message: \"A Taskset requires inline tasks or a Dataset artifact manifest.\",\n path: [\"tasks\"],\n });\n }\n});\n\nexport type DatasetBuildIntent = z.infer<typeof DatasetBuildIntentSchema>;\nexport type DatasetBuildSpecification = z.infer<typeof DatasetBuildSpecificationSchema>;\nexport type GeneratedTaskFile = z.infer<typeof GeneratedTaskFileSchema>;\nexport type TrainingPathRecommendation = z.infer<typeof TrainingPathRecommendationSchema>;\nexport type TrainingMethodReadinessReasonCode = z.infer<typeof TrainingMethodReadinessReasonCodeSchema>;\nexport type TrainingMethodReadiness = z.infer<typeof TrainingMethodReadinessSchema>;\nexport type TasksetReadinessReport = z.infer<typeof TasksetReadinessReportSchema>;\nexport type AuthoringProvenance = z.infer<typeof AuthoringProvenanceSchema>;\nexport type AuthoringRepair = z.infer<typeof AuthoringRepairSchema>;\nexport type Taskset = z.infer<typeof TasksetSchema>;\n\nexport function isTrainingSourceRef(\n source: TasksetSourceRef,\n): source is TrainingSourceRef {\n return source.schemaVersion === \"openpond.trainingSource.v1\";\n}\n", "import type { TasksetCapabilityManifest } from \"./taskset-draft-core.js\";\nimport {\n isTrainingSourceRef,\n TASKSET_WORK_TOOL_NAMES,\n TasksetSchema,\n type Taskset,\n} from \"./taskset-authored-contracts.js\";\nimport { contentHash } from \"@openpond/harness\";\n\nexport type TasksetValidationIssue = {\n code: string;\n severity: \"warning\" | \"error\";\n message: string;\n path: string | null;\n};\n\nexport type TasksetValidationReport = {\n valid: boolean;\n taskset: Taskset | null;\n computedHash: string | null;\n issues: TasksetValidationIssue[];\n};\n\nexport function validateTaskset(input: unknown, options: { allowUnscoredOnlineRewardBatch?: boolean; purpose?: \"publication\" | \"execution\" } = {}): TasksetValidationReport {\n const parsed = TasksetSchema.safeParse(input);\n if (!parsed.success) {\n return {\n valid: false,\n taskset: null,\n computedHash: null,\n issues: parsed.error.issues.map((issue) => ({\n code: \"schema_invalid\",\n severity: \"error\",\n message: issue.message,\n path: issue.path.join(\".\"),\n })),\n };\n }\n\n const taskset = parsed.data;\n const issues: TasksetValidationIssue[] = [];\n validateSourceConsent(taskset, issues);\n validateDatasetArtifact(taskset, issues);\n validateSplitIsolation(taskset, issues);\n validatePolicyBoundary(taskset, issues);\n validateGraders(taskset, issues);\n if (options.purpose !== \"publication\") {\n if (!taskset.graders.length) issues.push({ code: \"graders_required\", severity: \"error\", message: \"Scored execution requires at least one grader.\", path: \"graders\" });\n validateGraderFixtures(taskset, issues, options);\n }\n validateLearningSignals(taskset, issues);\n validateCapabilities(taskset.capabilities, issues, taskset);\n validateWorkExecution(taskset, issues);\n\n const computedHash = tasksetContentHash(taskset);\n if (taskset.contentHash !== computedHash) {\n issues.push({\n code: \"content_hash_mismatch\",\n severity: \"error\",\n message: `Taskset contentHash is ${taskset.contentHash}, expected ${computedHash}.`,\n path: \"contentHash\",\n });\n }\n\n return {\n valid: !issues.some((issue) => issue.severity === \"error\"),\n taskset,\n computedHash,\n issues,\n };\n}\n\nfunction validateGraderFixtures(taskset: Taskset, issues: TasksetValidationIssue[], options: { allowUnscoredOnlineRewardBatch?: boolean }): void {\n // The hosted learning boundary checks the sealed batch and executable Reward\n // before opting into fresh-rollout GRPO. Human-only review has no automated\n // grader to calibrate; every mixed/automated taskset retains fixture gates.\n const humanReviewOnly = taskset.graders.length > 0 && taskset.graders.every(grader => grader.kind === \"human\");\n if (!humanReviewOnly && !taskset.graderFixtures.length && !(options.allowUnscoredOnlineRewardBatch && taskset.metadata.trainingMethod === \"grpo\" && taskset.metadata.learning)) {\n issues.push({ code: \"grader_fixtures_required\", severity: \"error\", message: \"Taskset admission requires authored grader fixtures.\", path: \"graderFixtures\" });\n }\n const taskIds = new Set(taskset.tasks.map((task) => task.id));\n const required = new Set([\"positive\", \"negative\", \"boundary\", \"adversarial\", \"prompt_injection\", \"infrastructure_failure\"]);\n for (const fixture of taskset.graderFixtures) {\n if (!taskset.datasetArtifact && !taskIds.has(fixture.taskId)) issues.push({ code: \"grader_fixture_task_missing\", severity: \"warning\", message: `Fixture ${fixture.id} references a task outside this Taskset revision (${fixture.taskId}).`, path: `graderFixtures.${fixture.id}.taskId` });\n required.delete(fixture.label);\n if (fixture.label === \"infrastructure_failure\" && !fixture.infrastructureError) issues.push({ code: \"infrastructure_fixture_error_missing\", severity: \"error\", message: `Infrastructure fixture ${fixture.id} must declare an infrastructure error.`, path: `graderFixtures.${fixture.id}.infrastructureError` });\n }\n for (const label of humanReviewOnly ? [] : required) issues.push({ code: \"grader_fixture_missing\", severity: \"warning\", message: `Taskset does not include the optional ${label} grader calibration fixture.`, path: \"graderFixtures\" });\n}\n\nfunction validateDatasetArtifact(\n taskset: Taskset,\n issues: TasksetValidationIssue[],\n): void {\n const artifact = taskset.datasetArtifact;\n if (!artifact) return;\n if (\n artifact.tasksetId !== taskset.id\n || artifact.tasksetRevision !== taskset.revision\n ) {\n issues.push({\n code: \"dataset_artifact_taskset_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact identity does not match its Taskset revision.\",\n path: \"datasetArtifact\",\n });\n }\n const splitTotal = Object.values(artifact.splitCounts)\n .reduce((total, count) => total + count, 0);\n const shardTotal = artifact.shards\n .reduce((total, shard) => total + shard.rowCount, 0);\n if (splitTotal !== artifact.rowCount || shardTotal !== artifact.rowCount) {\n issues.push({\n code: \"dataset_artifact_row_count_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact row, split, and shard counts do not agree.\",\n path: \"datasetArtifact.rowCount\",\n });\n }\n const shardSplitCounts = new Map<string, number>();\n for (const shard of artifact.shards) {\n shardSplitCounts.set(\n shard.split,\n (shardSplitCounts.get(shard.split) ?? 0) + shard.rowCount,\n );\n }\n for (const [split, count] of Object.entries(artifact.splitCounts)) {\n if ((shardSplitCounts.get(split) ?? 0) !== count) {\n issues.push({\n code: \"dataset_artifact_split_count_mismatch\",\n severity: \"error\",\n message: `Dataset artifact ${split} shard counts do not match its manifest.`,\n path: `datasetArtifact.splitCounts.${split}`,\n });\n }\n }\n const { contentHash: _contentHash, ...hashable } = artifact;\n if (contentHash(hashable) !== artifact.contentHash) {\n issues.push({\n code: \"dataset_artifact_hash_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact manifest content hash is invalid.\",\n path: \"datasetArtifact.contentHash\",\n });\n }\n}\n\nexport function computeTasksetHash(taskset: Omit<Taskset, \"contentHash\"> | Taskset): string {\n return tasksetContentHash(taskset);\n}\n\nfunction tasksetContentHash(taskset: Omit<Taskset, \"contentHash\"> | Taskset): string {\n const { contentHash: _contentHash, status: _status, readiness: _readiness, updatedAt: _updatedAt, ...source } = taskset as Taskset;\n return contentHash(source);\n}\n\nexport function validatePortability(capabilities: TasksetCapabilityManifest): TasksetValidationIssue[] {\n const issues: TasksetValidationIssue[] = [];\n validateCapabilities(capabilities, issues, null);\n return issues;\n}\n\nfunction validateSourceConsent(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n for (const [index, source] of taskset.sourceRefs.entries()) {\n if (isTrainingSourceRef(source) && source.consent.status !== \"granted\") {\n issues.push({ code: \"source_consent_missing\", severity: \"error\", message: `Source ${source.id} is not consented.`, path: `sourceRefs.${index}.consent.status` });\n }\n if (source.secretScanStatus !== \"passed\") {\n issues.push({ code: \"source_secret_scan\", severity: \"error\", message: `Source ${source.id} did not pass secret scanning.`, path: `sourceRefs.${index}.secretScanStatus` });\n }\n if (source.piiScanStatus !== \"passed\") {\n issues.push({ code: \"source_pii_scan\", severity: \"error\", message: `Source ${source.id} has unresolved PII policy.`, path: `sourceRefs.${index}.piiScanStatus` });\n }\n if (source.licensingStatus !== \"approved\") {\n issues.push({ code: \"source_license\", severity: \"error\", message: `Source ${source.id} has unresolved licensing policy.`, path: `sourceRefs.${index}.licensingStatus` });\n }\n }\n}\n\nfunction validateSplitIsolation(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const clusterSplits = new Map<string, Set<string>>();\n for (const task of taskset.tasks) {\n const splits = clusterSplits.get(task.clusterKey) ?? new Set<string>();\n splits.add(task.split);\n clusterSplits.set(task.clusterKey, splits);\n }\n for (const [cluster, splits] of clusterSplits) {\n if (splits.size > 1) {\n issues.push({ code: \"split_cluster_contamination\", severity: \"error\", message: `Source cluster ${cluster} appears in multiple splits: ${[...splits].join(\", \")}.`, path: \"tasks\" });\n }\n }\n const frozenCount = taskset.datasetArtifact\n ? taskset.datasetArtifact.splitCounts.frozen_eval ?? 0\n : taskset.tasks.filter((task) => task.split === \"frozen_eval\").length;\n if (frozenCount === 0) issues.push({ code: \"frozen_eval_missing\", severity: \"warning\", message: \"Add an independent test example before training.\", path: \"tasks\" });\n}\n\nfunction validateWorkExecution(\n taskset: Taskset,\n issues: TasksetValidationIssue[],\n): void {\n if (taskset.environment.kind !== \"work\") return;\n if (taskset.environment.entrypoint !== \"openpond-work-v1\") {\n issues.push({\n code: \"work_entrypoint_invalid\",\n severity: \"error\",\n message: \"Work Tasksets must use the openpond-work-v1 entrypoint.\",\n path: \"environment.entrypoint\",\n });\n }\n if (!taskset.environment.lifecycle.includes(\"reset\") || !taskset.environment.lifecycle.includes(\"cleanup\")) {\n issues.push({\n code: \"work_reset_lifecycle_missing\",\n severity: \"error\",\n message: \"Work attempts require reset and cleanup; filesystem state belongs to one attempt.\",\n path: \"environment.lifecycle\",\n });\n }\n const allowedTools = new Set<string>(TASKSET_WORK_TOOL_NAMES);\n const unknownTools = taskset.environment.toolNames.filter(\n (name) => !allowedTools.has(name),\n );\n if (unknownTools.length) {\n issues.push({\n code: \"work_tool_unknown\",\n severity: \"error\",\n message: `Work Taskset declares unknown tools: ${unknownTools.join(\", \")}.`,\n path: \"environment.toolNames\",\n });\n }\n if (!taskset.environment.toolNames.includes(\"work_save_output\")) {\n issues.push({\n code: \"work_output_tool_missing\",\n severity: \"error\",\n message: \"Work Tasksets must declare work_save_output.\",\n path: \"environment.toolNames\",\n });\n }\n for (const lifecycle of [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"] as const) {\n if (!taskset.environment.lifecycle.includes(lifecycle)) {\n issues.push({\n code: \"work_lifecycle_incomplete\",\n severity: \"error\",\n message: `Work Tasksets require the ${lifecycle} lifecycle stage.`,\n path: \"environment.lifecycle\",\n });\n }\n }\n\n const sourceById = new Map(\n taskset.sourceRefs.map((source) => [source.id, source]),\n );\n for (const [taskIndex, task] of taskset.tasks.entries()) {\n const assetIds = new Set<string>();\n const fileNames = new Set<string>();\n for (const [assetIndex, asset] of (task.assets ?? []).entries()) {\n const path = `tasks.${taskIndex}.assets.${assetIndex}`;\n if (assetIds.has(asset.id)) {\n issues.push({\n code: \"work_asset_duplicate_id\",\n severity: \"error\",\n message: `Task ${task.id} repeats asset id ${asset.id}.`,\n path: `${path}.id`,\n });\n }\n if (fileNames.has(asset.fileName)) {\n issues.push({\n code: \"work_asset_duplicate_name\",\n severity: \"error\",\n message: `Task ${task.id} repeats staged file name ${asset.fileName}.`,\n path: `${path}.fileName`,\n });\n }\n assetIds.add(asset.id);\n fileNames.add(asset.fileName);\n if (!task.sourceRefs.includes(asset.sourceRefId)) {\n issues.push({\n code: \"work_asset_task_source_missing\",\n severity: \"error\",\n message: `Asset ${asset.id} references source ${asset.sourceRefId} outside task ${task.id}.`,\n path: `${path}.sourceRefId`,\n });\n }\n const source = sourceById.get(asset.sourceRefId);\n if (!source) {\n issues.push({\n code: \"work_asset_source_missing\",\n severity: \"error\",\n message: `Asset ${asset.id} references missing source ${asset.sourceRefId}.`,\n path: `${path}.sourceRefId`,\n });\n } else if (\n \"sourceFileHashes\" in source\n && !source.sourceFileHashes.includes(asset.sha256)\n ) {\n issues.push({\n code: \"work_asset_hash_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} hash is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.sha256`,\n });\n }\n if (\n source\n && \"kind\" in source\n && source.kind === \"uploaded_file\"\n && !source.originalFileNames.includes(asset.fileName)\n ) {\n issues.push({\n code: \"work_asset_name_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} file name is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.fileName`,\n });\n }\n if (\n source\n && \"kind\" in source\n && source.kind === \"uploaded_file\"\n && !source.mediaTypes.includes(asset.mediaType)\n ) {\n issues.push({\n code: \"work_asset_media_type_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} media type is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.mediaType`,\n });\n }\n if (asset.split !== task.split) {\n issues.push({\n code: \"work_asset_split_mismatch\",\n severity: \"error\",\n message: `Asset ${asset.id} is assigned to ${asset.split}, not task split ${task.split}.`,\n path: `${path}.split`,\n });\n }\n }\n\n const outputPaths = new Set<string>();\n for (const [outputIndex, output] of (task.requiredOutputs ?? []).entries()) {\n const normalized = output.path.replaceAll(\"\\\\\", \"/\");\n const path = `tasks.${taskIndex}.requiredOutputs.${outputIndex}.path`;\n if (outputPaths.has(normalized)) {\n issues.push({\n code: \"work_output_duplicate_path\",\n severity: \"error\",\n message: `Task ${task.id} repeats required output path ${normalized}.`,\n path,\n });\n }\n outputPaths.add(normalized);\n }\n if ((task.requiredOutputs ?? []).length === 0) {\n issues.push({\n code: \"work_output_missing\",\n severity: \"error\",\n message: `Work task ${task.id} must declare at least one required output.`,\n path: `tasks.${taskIndex}.requiredOutputs`,\n });\n }\n }\n}\n\nfunction validatePolicyBoundary(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const visible = new Set(taskset.policy.policyVisibleFields);\n for (const field of taskset.policy.privilegedFields) {\n if (visible.has(field)) issues.push({ code: \"privileged_field_visible\", severity: \"error\", message: `Field ${field} is both policy-visible and privileged.`, path: \"policy\" });\n }\n for (const task of taskset.tasks) {\n if (task.privilegedContextRef && Object.keys(task.policyVisibleContext).includes(task.privilegedContextRef)) {\n issues.push({ code: \"privileged_context_leak\", severity: \"error\", message: `Task ${task.id} exposes its privileged context reference.`, path: `tasks.${task.id}.policyVisibleContext` });\n }\n }\n}\n\nfunction validateGraders(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const ids = new Set<string>();\n for (const grader of taskset.graders) {\n if (ids.has(grader.id)) issues.push({ code: \"grader_duplicate\", severity: \"error\", message: `Duplicate grader id ${grader.id}.`, path: \"graders\" });\n ids.add(grader.id);\n if (grader.kind === \"model_judge\" && grader.rewardEligible && grader.calibrationStatus !== \"passed\") {\n issues.push({ code: \"judge_calibration_pending\", severity: \"warning\", message: `Model judge ${grader.id} is selected for reward without a passing advisory calibration report.`, path: `graders.${grader.id}` });\n }\n if (grader.kind === \"model_judge\" && grader.calibrationStatus === \"passed\" && typeof grader.metadata.calibrationEvidenceHash !== \"string\") {\n issues.push({ code: \"judge_calibration_evidence_missing\", severity: \"warning\", message: `Model judge ${grader.id} declares calibration without an OpenPond fixture evidence hash.`, path: `graders.${grader.id}.metadata.calibrationEvidenceHash` });\n }\n if (grader.kind === \"human\" && grader.rewardEligible) {\n issues.push({ code: \"human_online_reward\", severity: \"error\", message: `Human grader ${grader.id} cannot be an online optimizer reward.`, path: `graders.${grader.id}` });\n }\n }\n}\n\nfunction validateLearningSignals(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const taskIds = new Set(taskset.tasks.map((task) => task.id));\n const sourceIds = new Set(taskset.sourceRefs.map((source) => source.id));\n for (const signal of [\n ...taskset.learningSignals.demonstrations,\n ...taskset.learningSignals.preferences,\n ...taskset.learningSignals.corrections,\n ...taskset.learningSignals.feedback,\n ...taskset.learningSignals.rewards,\n ...taskset.learningSignals.labels,\n ]) {\n if (signal.taskId && !taskset.datasetArtifact && !taskIds.has(signal.taskId)) {\n issues.push({ code: \"learning_signal_task_missing\", severity: \"error\", message: `Signal ${signal.id} references missing task ${signal.taskId}.`, path: `learningSignals.${signal.kind}.${signal.id}.taskId` });\n }\n if (signal.sourceRefs.some((sourceId) => !sourceIds.has(sourceId))) {\n issues.push({ code: \"learning_signal_source_missing\", severity: \"error\", message: `Signal ${signal.id} references a source outside the Dataset.`, path: `learningSignals.${signal.kind}.${signal.id}.sourceRefs` });\n }\n }\n for (const preference of taskset.learningSignals.preferences) {\n if (preference.chosen.trim() === preference.rejected.trim()) {\n issues.push({ code: \"preference_pair_identical\", severity: \"error\", message: `Preference ${preference.id} has identical chosen and rejected responses.`, path: `learningSignals.preferences.${preference.id}` });\n }\n }\n for (const reward of taskset.learningSignals.rewards) {\n if (!reward.executable) {\n issues.push({ code: \"reward_not_executable\", severity: \"warning\", message: `Reward ${reward.id} is a reviewed specification but has no executable verifier yet.`, path: `learningSignals.rewards.${reward.id}.executable` });\n }\n }\n}\n\nfunction validateCapabilities(\n capabilities: TasksetCapabilityManifest,\n issues: TasksetValidationIssue[],\n taskset: Taskset | null,\n): void {\n if (!capabilities.exportable && capabilities.portabilityBlockers.length === 0) {\n issues.push({ code: \"portability_reason_missing\", severity: \"error\", message: \"Non-exportable Tasksets must declare a portability blocker.\", path: \"capabilities.portabilityBlockers\" });\n }\n if (capabilities.compatibleMethods.includes(\"grpo\") && !capabilities.rewardKinds.some((kind) => kind === \"exact\" || kind === \"deterministic\" || kind === \"model_judge\")) {\n issues.push({ code: \"grpo_reward_missing\", severity: \"error\", message: \"GRPO compatibility requires a scalar reward kind.\", path: \"capabilities.rewardKinds\" });\n }\n if (taskset?.capabilities.compatibleMethods.includes(\"sft\") && taskset.learningSignals.demonstrations.length === 0) {\n issues.push({ code: \"sft_demonstrations_missing\", severity: \"error\", message: \"SFT compatibility requires approved demonstrations.\", path: \"learningSignals.demonstrations\" });\n }\n if (taskset?.capabilities.compatibleMethods.includes(\"dpo\") && taskset.learningSignals.preferences.length === 0) {\n issues.push({ code: \"dpo_preferences_missing\", severity: \"error\", message: \"DPO compatibility requires chosen and rejected response pairs.\", path: \"learningSignals.preferences\" });\n }\n if (\n taskset\n && (taskset.capabilities.compatibleMethods.includes(\"grpo\") || taskset.capabilities.compatibleMethods.includes(\"ppo\"))\n && !taskset.learningSignals.rewards.some((reward) => reward.executable)\n && !taskset.graders.some(grader => grader.rewardEligible && grader.weight > 0 && grader.kind !== \"human\")\n ) {\n issues.push({ code: \"online_reward_not_executable\", severity: \"error\", message: \"GRPO/PPO compatibility requires an executable scalar reward.\", path: \"learningSignals.rewards\" });\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { VersionedReleaseRefSchema } from \"@openpond/harness\";\nimport { ChatModelRefSchema } from \"@openpond/harness/models\";\nimport { TasksetMetricPolicySchema } from \"@openpond/evals/metrics\";\nimport { DatasetArtifactManifestSchema } from \"./taskset-draft-dataset-artifacts.js\";\nimport {\n TasksetPurposeSchema,\n TasksetBenchmarkBindingSchema,\n TasksetPreferenceComparisonBindingSchema,\n TasksetSourceRefSchema,\n TaskPolicyBoundarySchema,\n TasksetEnvironmentContractSchema,\n TasksetCapabilityManifestSchema,\n TaskDataRecordSchema,\n GraderSpecSchema,\n GraderFixtureSchema,\n LearningSignalInventorySchema,\n type TasksetSourceRef, type TrainingSourceRef,\n} from \"./taskset-draft-core.js\";\n\nconst IdSchema = z.string().trim().min(1).max(240);\nconst TimestampSchema = z.string().trim().min(1);\nconst HashSchema = z.string().trim().min(8).max(256);\nconst MetadataSchema = z.record(z.string(), z.unknown()).default({});\nconst NullableIdSchema = IdSchema.nullable();\n\nexport const TASKSET_WORK_TOOL_NAMES = [\n \"work_capabilities\",\n \"work_environment\",\n \"work_list_files\",\n \"work_read_file\",\n \"work_read_document\",\n \"work_write_file\",\n \"work_write_docx\",\n \"work_edit_file\",\n \"work_delete_file\",\n \"work_exec\",\n \"work_save_output\",\n \"work_stop\",\n] as const;\n\nexport const TasksetStatusSchema = z.enum([\n \"draft\",\n \"awaiting_disclosure_approval\",\n \"awaiting_materialization_approval\",\n \"materializing\",\n \"validating\",\n \"needs_review\",\n \"baselining\",\n \"ready\",\n \"blocked\",\n \"failed\",\n \"archived\",\n]);\n\nexport const DatasetBuildIntentSchema = z.enum([\n \"demonstrations\",\n \"preferences\",\n \"verifiable_reward\",\n \"rubric\",\n \"discovery\",\n]);\n\nconst DatasetEvidenceTextSchema = z.string().trim().max(100_000);\n\nexport const DatasetBuildSpecificationSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"demonstrations\"),\n behavior: DatasetEvidenceTextSchema,\n examples: z.array(z.object({\n id: IdSchema,\n prompt: DatasetEvidenceTextSchema,\n response: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n }),\n z.object({\n kind: z.literal(\"preferences\"),\n preference: DatasetEvidenceTextSchema,\n pairs: z.array(z.object({\n id: IdSchema,\n prompt: DatasetEvidenceTextSchema,\n chosen: DatasetEvidenceTextSchema,\n rejected: DatasetEvidenceTextSchema,\n rationale: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n }),\n z.object({\n kind: z.literal(\"verifiable_reward\"),\n task: DatasetEvidenceTextSchema,\n rules: z.array(z.object({\n id: IdSchema,\n points: z.number().finite(),\n condition: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n otherwisePoints: z.number().finite().default(0),\n }),\n z.object({\n kind: z.literal(\"rubric\"),\n task: DatasetEvidenceTextSchema,\n criteria: z.array(z.object({\n id: IdSchema,\n label: z.string().trim().max(500),\n description: DatasetEvidenceTextSchema,\n })).max(1_000).default([]),\n positiveExample: DatasetEvidenceTextSchema,\n negativeExample: DatasetEvidenceTextSchema,\n boundaryExample: DatasetEvidenceTextSchema,\n }),\n]);\n\nexport const GeneratedTaskFileSchema = z.object({\n path: z.string().trim().min(1).max(1_000),\n role: z.enum([\"environment\", \"verifier\", \"fixture\"]),\n content: z.string().max(250_000),\n});\n\nexport const TrainingPathRecommendationSchema = z.object({\n primaryMethod: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\", \"sdft\", \"opsd\", \"sdpo\"]),\n bootstrap: z.object({\n method: z.literal(\"sft\"),\n purpose: z.literal(\"trajectory_bootstrap\"),\n demonstrationRefs: z.array(IdSchema).min(1).max(100_000),\n limitations: z.array(z.string().trim().min(1).max(5_000)).min(1).max(100),\n }).nullable(),\n});\n\nexport const TrainingMethodReadinessReasonCodeSchema = z.enum([\n \"taskset_not_ready\",\n \"demonstrations_missing\",\n \"preference_pairs_missing\",\n \"preference_pairs_invalid\",\n \"executable_reward_missing\",\n \"reward_not_calibrated\",\n \"reward_model_missing\",\n \"value_model_required\",\n \"frozen_eval_missing\",\n]);\n\nexport const TrainingMethodReadinessSchema = z.object({\n method: z.enum([\"sft\", \"dpo\", \"grpo\", \"ppo\"]),\n status: z.enum([\"recommended\", \"compatible\", \"needs_dataset_work\"]),\n reasonCodes: z.array(TrainingMethodReadinessReasonCodeSchema).default([]),\n reasons: z.array(z.string().trim().min(1).max(5_000)).default([]),\n});\n\nexport const TasksetReadinessFindingSchema = z.object({\n code: IdSchema,\n message: z.string().trim().min(1).max(5_000),\n path: z.string().trim().max(2_000).nullable(),\n});\n\nexport const TasksetReadinessReportSchema = z.object({\n schemaVersion: z.literal(\"openpond.tasksetReadiness.v1\"),\n tasksetId: IdSchema,\n tasksetHash: HashSchema,\n ready: z.boolean(),\n recommendedMethod: z.enum([\"none\", \"retrieval\", \"sft\", \"dpo\", \"grpo\", \"ppo\", \"sdft\", \"opd\", \"opsd\", \"sdpo\"]),\n trainingPath: TrainingPathRecommendationSchema.nullable().default(null),\n methodReadiness: z.array(TrainingMethodReadinessSchema).default([]),\n compatibleDestinationClasses: z.array(\n z.enum([\"export\", \"custom\", \"hosted_managed\"]),\n ),\n blockers: z.array(TasksetReadinessFindingSchema).default([]),\n advisories: z.array(TasksetReadinessFindingSchema).default([]),\n warnings: z.array(z.string().trim().min(1).max(5_000)).default([]),\n generatedAt: TimestampSchema,\n});\n\nexport const AuthoringRepairSchema = z.object({ attempt: z.number().int().positive(), summary: z.string().trim().min(1).max(5_000), createdAt: TimestampSchema });\n\nexport const AuthoringProvenanceSchema = z.object({\n schemaVersion: z.literal(\"openpond.taskAuthoringProvenance.v1\"),\n model: ChatModelRefSchema.nullable(),\n modelConfig: MetadataSchema,\n skillHash: HashSchema,\n promptTemplateVersion: z.string().trim().min(1).max(200),\n buildIntent: DatasetBuildIntentSchema.default(\"demonstrations\"),\n buildSpecification: DatasetBuildSpecificationSchema.nullable().default(null),\n evidenceHashes: z.array(HashSchema).max(100_000),\n tasksetSdkVersion: z.string().trim().min(1).max(100),\n sourceCommit: z.string().trim().min(1).max(256).nullable(),\n repairHistory: z.array(AuthoringRepairSchema).max(1_000),\n createdAt: TimestampSchema,\n});\n\nexport const TasksetSchema = z.object({\n schemaVersion: z.literal(\"openpond.taskset.v1\"),\n id: IdSchema,\n revision: z.number().int().positive().default(1),\n profileId: IdSchema,\n profileRelease: VersionedReleaseRefSchema.nullable().optional(),\n createImproveRunId: NullableIdSchema.default(null),\n name: z.string().trim().min(1).max(500),\n // Portable tasks may carry all instructions in their individual inputs.\n // Preserve an absent package prompt; draft publication validates its objective.\n objective: z.string().trim().max(20_000),\n purpose: TasksetPurposeSchema.default(\"general\"),\n benchmark: TasksetBenchmarkBindingSchema.nullable().default(null),\n preferenceComparison: TasksetPreferenceComparisonBindingSchema.nullable().default(null),\n status: TasksetStatusSchema,\n sourceRefs: z.array(TasksetSourceRefSchema).min(1).max(100_000),\n datasetArtifact: DatasetArtifactManifestSchema.nullable().optional(),\n policy: TaskPolicyBoundarySchema,\n environment: TasksetEnvironmentContractSchema,\n capabilities: TasksetCapabilityManifestSchema,\n metrics: TasksetMetricPolicySchema.optional(),\n tasks: z.array(TaskDataRecordSchema).max(1_000_000),\n graders: z.array(GraderSpecSchema).max(1_000),\n // Imported releases are inspectable before local calibration. Admission\n // requires real fixtures separately in validateTaskset.\n graderFixtures: z.array(GraderFixtureSchema).max(100_000),\n learningSignals: LearningSignalInventorySchema,\n authoringProvenance: AuthoringProvenanceSchema,\n readiness: TasksetReadinessReportSchema.nullable(),\n contentHash: HashSchema,\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n metadata: MetadataSchema,\n}).superRefine((taskset, context) => {\n if (taskset.purpose === \"benchmark\" && !taskset.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Benchmark Tasksets require an immutable benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (taskset.purpose !== \"benchmark\" && taskset.benchmark) {\n context.addIssue({\n code: \"custom\",\n message: \"Only benchmark Tasksets may carry a benchmark binding.\",\n path: [\"benchmark\"],\n });\n }\n if (taskset.datasetArtifact && taskset.tasks.length > 0) {\n context.addIssue({\n code: \"custom\",\n message:\n \"Artifact-backed Tasksets may not duplicate canonical rows inline.\",\n path: [\"tasks\"],\n });\n }\n if (!taskset.datasetArtifact && taskset.tasks.length === 0) {\n context.addIssue({\n code: \"custom\",\n message: \"A Taskset requires inline tasks or a Dataset artifact manifest.\",\n path: [\"tasks\"],\n });\n }\n});\n\nexport type DatasetBuildIntent = z.infer<typeof DatasetBuildIntentSchema>;\nexport type DatasetBuildSpecification = z.infer<typeof DatasetBuildSpecificationSchema>;\nexport type GeneratedTaskFile = z.infer<typeof GeneratedTaskFileSchema>;\nexport type TrainingPathRecommendation = z.infer<typeof TrainingPathRecommendationSchema>;\nexport type TrainingMethodReadinessReasonCode = z.infer<typeof TrainingMethodReadinessReasonCodeSchema>;\nexport type TrainingMethodReadiness = z.infer<typeof TrainingMethodReadinessSchema>;\nexport type TasksetReadinessReport = z.infer<typeof TasksetReadinessReportSchema>;\nexport type AuthoringProvenance = z.infer<typeof AuthoringProvenanceSchema>;\nexport type AuthoringRepair = z.infer<typeof AuthoringRepairSchema>;\nexport type Taskset = z.infer<typeof TasksetSchema>;\n\nexport function isTrainingSourceRef(\n source: TasksetSourceRef,\n): source is TrainingSourceRef {\n return source.schemaVersion === \"openpond.trainingSource.v1\";\n}\n", "import type { TasksetCapabilityManifest } from \"./taskset-draft-core.js\";\nimport {\n isTrainingSourceRef,\n TASKSET_WORK_TOOL_NAMES,\n TasksetSchema,\n type Taskset,\n} from \"./taskset-authored-contracts.js\";\nimport { contentHash } from \"@openpond/harness\";\n\nexport type TasksetValidationIssue = {\n code: string;\n severity: \"warning\" | \"error\";\n message: string;\n path: string | null;\n};\n\nexport type TasksetValidationReport = {\n valid: boolean;\n taskset: Taskset | null;\n computedHash: string | null;\n issues: TasksetValidationIssue[];\n};\n\nexport function validateTaskset(input: unknown, options: { allowUnscoredOnlineRewardBatch?: boolean; purpose?: \"publication\" | \"execution\" } = {}): TasksetValidationReport {\n const parsed = TasksetSchema.safeParse(input);\n if (!parsed.success) {\n return {\n valid: false,\n taskset: null,\n computedHash: null,\n issues: parsed.error.issues.map((issue) => ({\n code: \"schema_invalid\",\n severity: \"error\",\n message: issue.message,\n path: issue.path.join(\".\"),\n })),\n };\n }\n\n const taskset = parsed.data;\n const issues: TasksetValidationIssue[] = [];\n validateSourceConsent(taskset, issues);\n validateDatasetArtifact(taskset, issues);\n validateSplitIsolation(taskset, issues);\n validatePolicyBoundary(taskset, issues);\n validateGraders(taskset, issues);\n if (options.purpose !== \"publication\") {\n if (!taskset.graders.length) issues.push({ code: \"graders_required\", severity: \"error\", message: \"Scored execution requires at least one grader.\", path: \"graders\" });\n validateGraderFixtures(taskset, issues, options);\n }\n validateLearningSignals(taskset, issues);\n validateCapabilities(taskset.capabilities, issues, taskset);\n validateWorkExecution(taskset, issues);\n\n const computedHash = tasksetContentHash(taskset);\n if (taskset.contentHash !== computedHash) {\n issues.push({\n code: \"content_hash_mismatch\",\n severity: \"error\",\n message: `Taskset contentHash is ${taskset.contentHash}, expected ${computedHash}.`,\n path: \"contentHash\",\n });\n }\n\n return {\n valid: !issues.some((issue) => issue.severity === \"error\"),\n taskset,\n computedHash,\n issues,\n };\n}\n\nfunction validateGraderFixtures(taskset: Taskset, issues: TasksetValidationIssue[], options: { allowUnscoredOnlineRewardBatch?: boolean }): void {\n // The hosted learning boundary checks the sealed batch and executable Reward\n // before opting into fresh-rollout GRPO. Human-only review has no automated\n // grader to calibrate; every mixed/automated taskset retains fixture gates.\n const humanReviewOnly = taskset.graders.length > 0 && taskset.graders.every(grader => grader.kind === \"human\");\n if (!humanReviewOnly && !taskset.graderFixtures.length && !(options.allowUnscoredOnlineRewardBatch && taskset.metadata.trainingMethod === \"grpo\" && taskset.metadata.learning)) {\n issues.push({ code: \"grader_fixtures_required\", severity: \"error\", message: \"Taskset admission requires authored grader fixtures.\", path: \"graderFixtures\" });\n }\n const taskIds = new Set(taskset.tasks.map((task) => task.id));\n const required = new Set([\"positive\", \"negative\", \"boundary\", \"adversarial\", \"prompt_injection\", \"infrastructure_failure\"]);\n for (const fixture of taskset.graderFixtures) {\n if (!taskset.datasetArtifact && !taskIds.has(fixture.taskId)) issues.push({ code: \"grader_fixture_task_missing\", severity: \"warning\", message: `Fixture ${fixture.id} references a task outside this Taskset revision (${fixture.taskId}).`, path: `graderFixtures.${fixture.id}.taskId` });\n required.delete(fixture.label);\n if (fixture.label === \"infrastructure_failure\" && !fixture.infrastructureError) issues.push({ code: \"infrastructure_fixture_error_missing\", severity: \"error\", message: `Infrastructure fixture ${fixture.id} must declare an infrastructure error.`, path: `graderFixtures.${fixture.id}.infrastructureError` });\n }\n for (const label of humanReviewOnly ? [] : required) issues.push({ code: \"grader_fixture_missing\", severity: \"warning\", message: `Taskset does not include the optional ${label} grader calibration fixture.`, path: \"graderFixtures\" });\n}\n\nfunction validateDatasetArtifact(\n taskset: Taskset,\n issues: TasksetValidationIssue[],\n): void {\n const artifact = taskset.datasetArtifact;\n if (!artifact) return;\n if (\n artifact.tasksetId !== taskset.id\n || artifact.tasksetRevision !== taskset.revision\n ) {\n issues.push({\n code: \"dataset_artifact_taskset_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact identity does not match its Taskset revision.\",\n path: \"datasetArtifact\",\n });\n }\n const splitTotal = Object.values(artifact.splitCounts)\n .reduce((total, count) => total + count, 0);\n const shardTotal = artifact.shards\n .reduce((total, shard) => total + shard.rowCount, 0);\n if (splitTotal !== artifact.rowCount || shardTotal !== artifact.rowCount) {\n issues.push({\n code: \"dataset_artifact_row_count_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact row, split, and shard counts do not agree.\",\n path: \"datasetArtifact.rowCount\",\n });\n }\n const shardSplitCounts = new Map<string, number>();\n for (const shard of artifact.shards) {\n shardSplitCounts.set(\n shard.split,\n (shardSplitCounts.get(shard.split) ?? 0) + shard.rowCount,\n );\n }\n for (const [split, count] of Object.entries(artifact.splitCounts)) {\n if ((shardSplitCounts.get(split) ?? 0) !== count) {\n issues.push({\n code: \"dataset_artifact_split_count_mismatch\",\n severity: \"error\",\n message: `Dataset artifact ${split} shard counts do not match its manifest.`,\n path: `datasetArtifact.splitCounts.${split}`,\n });\n }\n }\n const { contentHash: _contentHash, ...hashable } = artifact;\n if (contentHash(hashable) !== artifact.contentHash) {\n issues.push({\n code: \"dataset_artifact_hash_mismatch\",\n severity: \"error\",\n message: \"Dataset artifact manifest content hash is invalid.\",\n path: \"datasetArtifact.contentHash\",\n });\n }\n}\n\nexport function computeTasksetHash(taskset: Omit<Taskset, \"contentHash\"> | Taskset): string {\n return tasksetContentHash(taskset);\n}\n\nfunction tasksetContentHash(taskset: Omit<Taskset, \"contentHash\"> | Taskset): string {\n const { contentHash: _contentHash, status: _status, readiness: _readiness, updatedAt: _updatedAt, ...source } = taskset as Taskset;\n return contentHash(source);\n}\n\nexport function validatePortability(capabilities: TasksetCapabilityManifest): TasksetValidationIssue[] {\n const issues: TasksetValidationIssue[] = [];\n validateCapabilities(capabilities, issues, null);\n return issues;\n}\n\nfunction validateSourceConsent(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n for (const [index, source] of taskset.sourceRefs.entries()) {\n if (isTrainingSourceRef(source) && source.consent.status !== \"granted\") {\n issues.push({ code: \"source_consent_missing\", severity: \"error\", message: `Source ${source.id} is not consented.`, path: `sourceRefs.${index}.consent.status` });\n }\n if (source.secretScanStatus !== \"passed\") {\n issues.push({ code: \"source_secret_scan\", severity: \"error\", message: `Source ${source.id} did not pass secret scanning.`, path: `sourceRefs.${index}.secretScanStatus` });\n }\n if (source.piiScanStatus !== \"passed\") {\n issues.push({ code: \"source_pii_scan\", severity: \"error\", message: `Source ${source.id} has unresolved PII policy.`, path: `sourceRefs.${index}.piiScanStatus` });\n }\n if (source.licensingStatus !== \"approved\") {\n issues.push({ code: \"source_license\", severity: \"error\", message: `Source ${source.id} has unresolved licensing policy.`, path: `sourceRefs.${index}.licensingStatus` });\n }\n }\n}\n\nfunction validateSplitIsolation(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const clusterSplits = new Map<string, Set<string>>();\n for (const task of taskset.tasks) {\n const splits = clusterSplits.get(task.clusterKey) ?? new Set<string>();\n splits.add(task.split);\n clusterSplits.set(task.clusterKey, splits);\n }\n for (const [cluster, splits] of clusterSplits) {\n if (splits.size > 1) {\n issues.push({ code: \"split_cluster_contamination\", severity: \"error\", message: `Source cluster ${cluster} appears in multiple splits: ${[...splits].join(\", \")}.`, path: \"tasks\" });\n }\n }\n const frozenCount = taskset.datasetArtifact\n ? taskset.datasetArtifact.splitCounts.frozen_eval ?? 0\n : taskset.tasks.filter((task) => task.split === \"frozen_eval\").length;\n if (frozenCount === 0) issues.push({ code: \"frozen_eval_missing\", severity: \"warning\", message: \"Add an independent test example before training.\", path: \"tasks\" });\n}\n\nfunction validateWorkExecution(\n taskset: Taskset,\n issues: TasksetValidationIssue[],\n): void {\n if (taskset.environment.kind !== \"work\") return;\n if (taskset.environment.entrypoint !== \"openpond-work-v1\") {\n issues.push({\n code: \"work_entrypoint_invalid\",\n severity: \"error\",\n message: \"Work Tasksets must use the openpond-work-v1 entrypoint.\",\n path: \"environment.entrypoint\",\n });\n }\n if (!taskset.environment.lifecycle.includes(\"reset\") || !taskset.environment.lifecycle.includes(\"cleanup\")) {\n issues.push({\n code: \"work_reset_lifecycle_missing\",\n severity: \"error\",\n message: \"Work attempts require reset and cleanup; filesystem state belongs to one attempt.\",\n path: \"environment.lifecycle\",\n });\n }\n const allowedTools = new Set<string>(TASKSET_WORK_TOOL_NAMES);\n const unknownTools = taskset.environment.toolNames.filter(\n (name) => !allowedTools.has(name),\n );\n if (unknownTools.length) {\n issues.push({\n code: \"work_tool_unknown\",\n severity: \"error\",\n message: `Work Taskset declares unknown tools: ${unknownTools.join(\", \")}.`,\n path: \"environment.toolNames\",\n });\n }\n if (!taskset.environment.toolNames.includes(\"work_save_output\")) {\n issues.push({\n code: \"work_output_tool_missing\",\n severity: \"error\",\n message: \"Work Tasksets must declare work_save_output.\",\n path: \"environment.toolNames\",\n });\n }\n for (const lifecycle of [\"create\", \"reset\", \"step\", \"grade\", \"cleanup\"] as const) {\n if (!taskset.environment.lifecycle.includes(lifecycle)) {\n issues.push({\n code: \"work_lifecycle_incomplete\",\n severity: \"error\",\n message: `Work Tasksets require the ${lifecycle} lifecycle stage.`,\n path: \"environment.lifecycle\",\n });\n }\n }\n\n const sourceById = new Map(\n taskset.sourceRefs.map((source) => [source.id, source]),\n );\n for (const [taskIndex, task] of taskset.tasks.entries()) {\n const assetIds = new Set<string>();\n const fileNames = new Set<string>();\n for (const [assetIndex, asset] of (task.assets ?? []).entries()) {\n const path = `tasks.${taskIndex}.assets.${assetIndex}`;\n if (assetIds.has(asset.id)) {\n issues.push({\n code: \"work_asset_duplicate_id\",\n severity: \"error\",\n message: `Task ${task.id} repeats asset id ${asset.id}.`,\n path: `${path}.id`,\n });\n }\n const stagedPath = asset.stagingPath ?? asset.fileName;\n if (fileNames.has(stagedPath)) {\n issues.push({\n code: \"work_asset_duplicate_name\",\n severity: \"error\",\n message: `Task ${task.id} repeats staged path ${stagedPath}.`,\n path: `${path}.fileName`,\n });\n }\n assetIds.add(asset.id);\n fileNames.add(stagedPath);\n if (!task.sourceRefs.includes(asset.sourceRefId)) {\n issues.push({\n code: \"work_asset_task_source_missing\",\n severity: \"error\",\n message: `Asset ${asset.id} references source ${asset.sourceRefId} outside task ${task.id}.`,\n path: `${path}.sourceRefId`,\n });\n }\n const source = sourceById.get(asset.sourceRefId);\n if (!source) {\n issues.push({\n code: \"work_asset_source_missing\",\n severity: \"error\",\n message: `Asset ${asset.id} references missing source ${asset.sourceRefId}.`,\n path: `${path}.sourceRefId`,\n });\n } else if (\n \"sourceFileHashes\" in source\n && !source.sourceFileHashes?.includes(asset.sha256)\n ) {\n issues.push({\n code: \"work_asset_hash_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} hash is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.sha256`,\n });\n }\n if (\n source\n && \"kind\" in source\n && source.kind === \"uploaded_file\"\n && !source.originalFileNames.includes(asset.fileName)\n ) {\n issues.push({\n code: \"work_asset_name_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} file name is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.fileName`,\n });\n }\n if (\n source\n && \"kind\" in source\n && source.kind === \"uploaded_file\"\n && !source.mediaTypes.includes(asset.mediaType)\n ) {\n issues.push({\n code: \"work_asset_media_type_unregistered\",\n severity: \"error\",\n message: `Asset ${asset.id} media type is not registered by source ${asset.sourceRefId}.`,\n path: `${path}.mediaType`,\n });\n }\n if (asset.split !== task.split) {\n issues.push({\n code: \"work_asset_split_mismatch\",\n severity: \"error\",\n message: `Asset ${asset.id} is assigned to ${asset.split}, not task split ${task.split}.`,\n path: `${path}.split`,\n });\n }\n }\n\n const outputPaths = new Set<string>();\n for (const [outputIndex, output] of (task.requiredOutputs ?? []).entries()) {\n const normalized = output.path.replaceAll(\"\\\\\", \"/\");\n const path = `tasks.${taskIndex}.requiredOutputs.${outputIndex}.path`;\n if (outputPaths.has(normalized)) {\n issues.push({\n code: \"work_output_duplicate_path\",\n severity: \"error\",\n message: `Task ${task.id} repeats required output path ${normalized}.`,\n path,\n });\n }\n outputPaths.add(normalized);\n }\n if ((task.requiredOutputs ?? []).length === 0) {\n issues.push({\n code: \"work_output_missing\",\n severity: \"error\",\n message: `Work task ${task.id} must declare at least one required output.`,\n path: `tasks.${taskIndex}.requiredOutputs`,\n });\n }\n }\n}\n\nfunction validatePolicyBoundary(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const visible = new Set(taskset.policy.policyVisibleFields);\n for (const field of taskset.policy.privilegedFields) {\n if (visible.has(field)) issues.push({ code: \"privileged_field_visible\", severity: \"error\", message: `Field ${field} is both policy-visible and privileged.`, path: \"policy\" });\n }\n for (const task of taskset.tasks) {\n if (task.privilegedContextRef && Object.keys(task.policyVisibleContext).includes(task.privilegedContextRef)) {\n issues.push({ code: \"privileged_context_leak\", severity: \"error\", message: `Task ${task.id} exposes its privileged context reference.`, path: `tasks.${task.id}.policyVisibleContext` });\n }\n }\n}\n\nfunction validateGraders(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const taskIds = new Set(taskset.tasks.map(task => task.id));\n const ids = new Set<string>();\n for (const grader of taskset.graders) {\n if (grader.taskIds?.some(id => !taskIds.has(id))) issues.push({ code: \"grader_task_missing\", severity: \"error\", message: `Grader ${grader.id} refers to a task outside this Dataset.`, path: \"graders\" });\n if (ids.has(grader.id)) issues.push({ code: \"grader_duplicate\", severity: \"error\", message: `Duplicate grader id ${grader.id}.`, path: \"graders\" });\n ids.add(grader.id);\n if (grader.kind === \"model_judge\" && grader.rewardEligible && grader.calibrationStatus !== \"passed\") {\n issues.push({ code: \"judge_calibration_pending\", severity: \"warning\", message: `Model judge ${grader.id} is selected for reward without a passing advisory calibration report.`, path: `graders.${grader.id}` });\n }\n if (grader.kind === \"model_judge\" && grader.calibrationStatus === \"passed\" && typeof grader.metadata.calibrationEvidenceHash !== \"string\") {\n issues.push({ code: \"judge_calibration_evidence_missing\", severity: \"warning\", message: `Model judge ${grader.id} declares calibration without an OpenPond fixture evidence hash.`, path: `graders.${grader.id}.metadata.calibrationEvidenceHash` });\n }\n if (grader.kind === \"human\" && grader.rewardEligible) {\n issues.push({ code: \"human_online_reward\", severity: \"error\", message: `Human grader ${grader.id} cannot be an online optimizer reward.`, path: `graders.${grader.id}` });\n }\n }\n}\n\nfunction validateLearningSignals(taskset: Taskset, issues: TasksetValidationIssue[]): void {\n const taskIds = new Set(taskset.tasks.map((task) => task.id));\n const sourceIds = new Set(taskset.sourceRefs.map((source) => source.id));\n for (const signal of [\n ...taskset.learningSignals.demonstrations,\n ...taskset.learningSignals.preferences,\n ...taskset.learningSignals.corrections,\n ...taskset.learningSignals.feedback,\n ...taskset.learningSignals.rewards,\n ...taskset.learningSignals.labels,\n ]) {\n if (signal.taskId && !taskset.datasetArtifact && !taskIds.has(signal.taskId)) {\n issues.push({ code: \"learning_signal_task_missing\", severity: \"error\", message: `Signal ${signal.id} references missing task ${signal.taskId}.`, path: `learningSignals.${signal.kind}.${signal.id}.taskId` });\n }\n if (signal.sourceRefs.some((sourceId) => !sourceIds.has(sourceId))) {\n issues.push({ code: \"learning_signal_source_missing\", severity: \"error\", message: `Signal ${signal.id} references a source outside the Dataset.`, path: `learningSignals.${signal.kind}.${signal.id}.sourceRefs` });\n }\n }\n for (const preference of taskset.learningSignals.preferences) {\n if (preference.chosen.trim() === preference.rejected.trim()) {\n issues.push({ code: \"preference_pair_identical\", severity: \"error\", message: `Preference ${preference.id} has identical chosen and rejected responses.`, path: `learningSignals.preferences.${preference.id}` });\n }\n }\n for (const reward of taskset.learningSignals.rewards) {\n if (!reward.executable) {\n issues.push({ code: \"reward_not_executable\", severity: \"warning\", message: `Reward ${reward.id} is a reviewed specification but has no executable verifier yet.`, path: `learningSignals.rewards.${reward.id}.executable` });\n }\n }\n}\n\nfunction validateCapabilities(\n capabilities: TasksetCapabilityManifest,\n issues: TasksetValidationIssue[],\n taskset: Taskset | null,\n): void {\n if (!capabilities.exportable && capabilities.portabilityBlockers.length === 0) {\n issues.push({ code: \"portability_reason_missing\", severity: \"error\", message: \"Non-exportable Tasksets must declare a portability blocker.\", path: \"capabilities.portabilityBlockers\" });\n }\n if (capabilities.compatibleMethods.includes(\"grpo\") && !capabilities.rewardKinds.some((kind) => kind === \"exact\" || kind === \"deterministic\" || kind === \"model_judge\")) {\n issues.push({ code: \"grpo_reward_missing\", severity: \"error\", message: \"GRPO compatibility requires a scalar reward kind.\", path: \"capabilities.rewardKinds\" });\n }\n if (taskset?.capabilities.compatibleMethods.includes(\"sft\") && taskset.learningSignals.demonstrations.length === 0) {\n issues.push({ code: \"sft_demonstrations_missing\", severity: \"error\", message: \"SFT compatibility requires approved demonstrations.\", path: \"learningSignals.demonstrations\" });\n }\n if (taskset?.capabilities.compatibleMethods.includes(\"dpo\") && taskset.learningSignals.preferences.length === 0) {\n issues.push({ code: \"dpo_preferences_missing\", severity: \"error\", message: \"DPO compatibility requires chosen and rejected response pairs.\", path: \"learningSignals.preferences\" });\n }\n if (\n taskset\n && (taskset.capabilities.compatibleMethods.includes(\"grpo\") || taskset.capabilities.compatibleMethods.includes(\"ppo\"))\n && !taskset.learningSignals.rewards.some((reward) => reward.executable)\n && !taskset.graders.some(grader => grader.rewardEligible && grader.weight > 0 && grader.kind !== \"human\")\n ) {\n issues.push({ code: \"online_reward_not_executable\", severity: \"error\", message: \"GRPO/PPO compatibility requires an executable scalar reward.\", path: \"learningSignals.rewards\" });\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CapabilityRequirementSchema,
3
3
  ToolDeclarationSchema
4
- } from "./chunk-JOKRT4CK.js";
4
+ } from "./chunk-KV6JXPQH.js";
5
5
  import {
6
6
  ImmutableAssetRefSchema,
7
7
  contentHash,
@@ -111,8 +111,14 @@ function materializePortableTasksetRelease(input) {
111
111
  sourceTasksetHash: input.taskset.contentHash,
112
112
  sourcePackageHash: input.taskset.metadata.sourcePackageHash ?? null,
113
113
  environmentResources: input.taskset.environment.resources ?? [],
114
+ workAssetStagingPaths: Object.fromEntries(tasks.filter((task) => task.assets?.some((asset) => asset.stagingPath)).map((task) => [task.id, Object.fromEntries((task.assets ?? []).filter((asset) => asset.stagingPath).map((asset) => [asset.id, asset.stagingPath]))])),
114
115
  ordinaryAuthoring: {
115
116
  instructions: input.taskset.objective,
117
+ graderSourceRewards: Object.fromEntries(input.taskset.graders.filter((grader) => grader.metadata.sourceReward !== void 0).map((grader) => [grader.id, grader.metadata.sourceReward])),
118
+ graderOrigins: Object.fromEntries(input.taskset.graders.map((grader) => [
119
+ grader.id,
120
+ grader.metadata.preparationOrigin === "reused" ? "reused" : grader.metadata.preparationOrigin === "adapted" || grader.metadata.adaptedFromReward ? "adapted" : "authored"
121
+ ])),
116
122
  graderFixtures: input.taskset.graderFixtures,
117
123
  judgeCalibrationFixtures: Object.fromEntries(input.taskset.graders.filter((grader) => grader.kind === "model_judge").map((grader) => [grader.id, grader.calibrationFixtureRefs]))
118
124
  },
@@ -167,7 +173,7 @@ function projectPortableTaskRecord(task) {
167
173
  const previous = original.artifactRefs.find((item) => item.id === asset.id);
168
174
  return {
169
175
  id: asset.id,
170
- path: previous?.path ?? `tasks/${segment(task.id)}/${segment(asset.fileName)}`,
176
+ path: previous?.path ?? `tasks/${segment(task.id)}/${asset.stagingPath ?? segment(asset.fileName)}`,
171
177
  contentHash: hash(asset.sha256),
172
178
  sizeBytes: asset.sizeBytes,
173
179
  mediaType: asset.mediaType,
@@ -201,7 +207,7 @@ function projectPortableTaskRecord(task) {
201
207
  privilegedContextRef: task.privilegedContextRef,
202
208
  artifactRefs: (task.assets ?? []).map((item) => ({
203
209
  id: item.id,
204
- path: `tasks/${segment(task.id)}/${segment(item.fileName)}`,
210
+ path: `tasks/${segment(task.id)}/${item.stagingPath ?? segment(item.fileName)}`,
205
211
  contentHash: hash(item.sha256),
206
212
  sizeBytes: item.sizeBytes,
207
213
  mediaType: item.mediaType,
@@ -268,6 +274,7 @@ function portableTools(taskset) {
268
274
  function portableGrader(grader) {
269
275
  const base = {
270
276
  id: grader.id,
277
+ ...grader.taskIds ? { taskIds: grader.taskIds } : {},
271
278
  version: grader.version,
272
279
  weight: grader.weight,
273
280
  hardGate: grader.hardGate,
@@ -376,4 +383,4 @@ export {
376
383
  portableTasksetTools,
377
384
  projectPortableTaskRecord
378
385
  };
379
- //# sourceMappingURL=chunk-PXNHL3SH.js.map
386
+ //# sourceMappingURL=chunk-YRTA3G6O.js.map