openpond-sdk 0.12.23 → 0.12.25

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 (123) hide show
  1. package/PRODUCT_INTEGRATION.md +134 -0
  2. package/README.md +12 -1
  3. package/TASK_INGESTION.md +88 -86
  4. package/TRAINING_PROTOCOL.md +6 -2
  5. package/TRAINING_WORKFLOWS.md +16 -0
  6. package/dist/advanced-refiner-evaluations.js +3 -3
  7. package/dist/ai-sdk.js +224 -0
  8. package/dist/ai-sdk.js.map +1 -0
  9. package/dist/{chunk-NZRGRUYG.js → chunk-2OVNKPBZ.js} +17 -6
  10. package/dist/chunk-2OVNKPBZ.js.map +1 -0
  11. package/dist/{chunk-QIGMNB6M.js → chunk-3G3HUA32.js} +3 -3
  12. package/dist/{chunk-7G47YXQT.js → chunk-3MWFN7BA.js} +2 -2
  13. package/dist/{chunk-3BYFS4RO.js → chunk-47THZRUM.js} +5 -5
  14. package/dist/chunk-BRP3EBCR.js +245 -0
  15. package/dist/chunk-BRP3EBCR.js.map +1 -0
  16. package/dist/{chunk-BNBPKCIR.js → chunk-DDCR4KB5.js} +4 -4
  17. package/dist/{chunk-ZQ6QTYRE.js → chunk-GV6DEDBU.js} +10 -10
  18. package/dist/{chunk-ZQ6QTYRE.js.map → chunk-GV6DEDBU.js.map} +1 -1
  19. package/dist/{chunk-QCRNQMN4.js → chunk-IXFUYPGV.js} +2 -2
  20. package/dist/{chunk-Q4RGCEOI.js → chunk-JOMZJXGC.js} +3 -3
  21. package/dist/{chunk-OBI2MQYU.js → chunk-QRYEXPG7.js} +7 -7
  22. package/dist/{chunk-6EZAGTZG.js → chunk-RN5MK7NH.js} +4 -4
  23. package/dist/{chunk-GCUWJUUM.js → chunk-RTLJV4OS.js} +2 -2
  24. package/dist/{chunk-GBDBKGXW.js → chunk-T67LNKAK.js} +3 -3
  25. package/dist/{chunk-SP7DQEQM.js → chunk-XBFOFTK3.js} +5 -5
  26. package/dist/{chunk-AG6UJ3DI.js → chunk-YS7DF76T.js} +2 -2
  27. package/dist/{chunk-LEVXD73U.js → chunk-Z5APNTZE.js} +197 -190
  28. package/dist/chunk-Z5APNTZE.js.map +1 -0
  29. package/dist/connected-evidence.js +8 -8
  30. package/dist/dataset-workspaces.js +146 -85
  31. package/dist/dataset-workspaces.js.map +1 -1
  32. package/dist/experiment-evaluation-schedules.js +11 -11
  33. package/dist/experiments.js +15 -15
  34. package/dist/index.js +71 -44
  35. package/dist/index.js.map +1 -1
  36. package/dist/model-starter-catalog.js +2 -2
  37. package/dist/model-starters.js +2 -2
  38. package/dist/taskset-drafts.js +7 -7
  39. package/dist/taskset-packages.js +13 -13
  40. package/dist/training-bundle.js +12 -12
  41. package/dist/training.js +1936 -1809
  42. package/dist/training.js.map +1 -1
  43. package/dist/types/packages/sdk/src/ai-sdk.d.ts +6 -0
  44. package/dist/types/packages/sdk/src/ai-sdk.d.ts.map +1 -0
  45. package/dist/types/packages/sdk/src/candidate-evaluation-client.d.ts +21 -21
  46. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts +8 -1
  47. package/dist/types/packages/sdk/src/dataset-task-ingestion.d.ts.map +1 -1
  48. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts +140 -140
  49. package/dist/types/packages/sdk/src/dataset-workspace-client.d.ts.map +1 -1
  50. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts +28 -0
  51. package/dist/types/packages/sdk/src/dataset-workspace-error.d.ts.map +1 -0
  52. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts +1 -0
  53. package/dist/types/packages/sdk/src/dataset-workspaces.d.ts.map +1 -1
  54. package/dist/types/packages/sdk/src/experiment-client.d.ts +636 -636
  55. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +124 -34
  56. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -1
  57. package/dist/types/packages/sdk/src/experiment-evaluation-schedules.d.ts +28 -28
  58. package/dist/types/packages/sdk/src/experiment-improvement-client.d.ts +1622 -1622
  59. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  60. package/dist/types/packages/sdk/src/index.d.ts +13 -4
  61. package/dist/types/packages/sdk/src/index.d.ts.map +1 -1
  62. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +347 -347
  63. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +242 -21
  64. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -1
  65. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +25 -25
  66. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +28 -28
  67. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts +42 -3
  68. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts.map +1 -1
  69. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts +16 -1
  70. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts.map +1 -1
  71. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +168 -16
  72. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/neuron-training-result.d.ts +42 -3
  74. package/dist/types/packages/sdk/src/neuron-training-result.d.ts.map +1 -1
  75. package/dist/types/packages/sdk/src/neuron-training.d.ts +23 -2
  76. package/dist/types/packages/sdk/src/neuron-training.d.ts.map +1 -1
  77. package/dist/types/packages/sdk/src/post-training.d.ts +7 -7
  78. package/dist/types/packages/sdk/src/product-model-response.d.ts +4 -0
  79. package/dist/types/packages/sdk/src/product-model-response.d.ts.map +1 -0
  80. package/dist/types/packages/sdk/src/product-models.d.ts +76 -0
  81. package/dist/types/packages/sdk/src/product-models.d.ts.map +1 -0
  82. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +42 -4
  83. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -1
  84. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +84 -8
  85. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -1
  86. package/dist/types/packages/sdk/src/taskset-draft-source.d.ts +20 -20
  87. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +20 -20
  88. package/dist/types/packages/sdk/src/training-evidence.d.ts +54 -0
  89. package/dist/types/packages/sdk/src/training-evidence.d.ts.map +1 -0
  90. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +42 -2
  91. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -1
  92. package/dist/types/packages/sdk/src/training-harness-sources.d.ts +2 -2
  93. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  94. package/dist/types/packages/sdk/src/training-preparations.d.ts +1770 -485
  95. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  96. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +25 -25
  97. package/dist/types/packages/sdk/src/training-usage-funding.d.ts +23 -0
  98. package/dist/types/packages/sdk/src/training-usage-funding.d.ts.map +1 -1
  99. package/dist/types/packages/sdk/src/training.d.ts +5189 -4445
  100. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  101. package/dist/types/packages/sdk/src/types.d.ts +14 -1
  102. package/dist/types/packages/sdk/src/types.d.ts.map +1 -1
  103. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts +5 -2
  104. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts.map +1 -1
  105. package/dist/types/packages/sdk/src/weight-model-versions.d.ts +168 -16
  106. package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -1
  107. package/fixtures/personalized-inference-request.schema.json +316 -0
  108. package/fixtures/python-foundation/schemas.json +8750 -8351
  109. package/package.json +18 -3
  110. package/dist/chunk-LEVXD73U.js.map +0 -1
  111. package/dist/chunk-NZRGRUYG.js.map +0 -1
  112. /package/dist/{chunk-QIGMNB6M.js.map → chunk-3G3HUA32.js.map} +0 -0
  113. /package/dist/{chunk-7G47YXQT.js.map → chunk-3MWFN7BA.js.map} +0 -0
  114. /package/dist/{chunk-3BYFS4RO.js.map → chunk-47THZRUM.js.map} +0 -0
  115. /package/dist/{chunk-BNBPKCIR.js.map → chunk-DDCR4KB5.js.map} +0 -0
  116. /package/dist/{chunk-QCRNQMN4.js.map → chunk-IXFUYPGV.js.map} +0 -0
  117. /package/dist/{chunk-Q4RGCEOI.js.map → chunk-JOMZJXGC.js.map} +0 -0
  118. /package/dist/{chunk-OBI2MQYU.js.map → chunk-QRYEXPG7.js.map} +0 -0
  119. /package/dist/{chunk-6EZAGTZG.js.map → chunk-RN5MK7NH.js.map} +0 -0
  120. /package/dist/{chunk-GCUWJUUM.js.map → chunk-RTLJV4OS.js.map} +0 -0
  121. /package/dist/{chunk-GBDBKGXW.js.map → chunk-T67LNKAK.js.map} +0 -0
  122. /package/dist/{chunk-SP7DQEQM.js.map → chunk-XBFOFTK3.js.map} +0 -0
  123. /package/dist/{chunk-AG6UJ3DI.js.map → chunk-YS7DF76T.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/training-recovery.ts","../src/training-physical-placement.ts","../src/training-queue.ts","../src/training-usage-status.ts","../src/managed-compute-price.ts","../src/training-usage-funding.ts","../src/training-job-contracts.ts","../src/training-grading-plan.ts","../src/training-evaluation-source.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { canonicalSha256 } from \"./protocol.js\";\n\nconst id = z.string().trim().min(1).max(191);\nconst hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst ApprovalBodySchema = z\n .object({\n schemaVersion: z.literal(\"openpond.checkpointRecoveryResourceApproval.v1\"),\n ownerUserId: id,\n teamId: id,\n sourceJobId: id,\n sourceJobVersion: z.number().int().positive(),\n sourceInputManifestSha256: hash,\n checkpointId: id,\n adapterSha256: hash,\n resumeSha256: hash,\n idempotencyKey: z.string().trim().min(16).max(191),\n approvedAt: z.iso.datetime({ offset: true }),\n maximumSpendUsd: z\n .number()\n .positive()\n .finite()\n .max(30)\n .refine(\n (value) => Number(value.toFixed(6)) === value,\n \"Recovery spend must use whole microdollars\",\n ),\n maximumGpuSeconds: z.number().int().positive().max(21_600),\n maximumWallSeconds: z.number().int().positive().max(21_600),\n })\n .strict();\n\nexport const TrainingCheckpointRecoveryResourceApprovalSchema = ApprovalBodySchema.extend({\n approvalHash: hash,\n})\n .strict()\n .superRefine((value, context) => {\n if (value.maximumGpuSeconds > value.maximumWallSeconds)\n context.addIssue({\n code: \"custom\",\n path: [\"maximumGpuSeconds\"],\n message: \"Recovery GPU duration exceeds its wall\",\n });\n });\n\n/** The authenticated source owner's funded request is consent; this hash binds its exact scope. */\nexport async function createTrainingCheckpointRecoveryResourceApproval(\n input: z.input<typeof ApprovalBodySchema>,\n) {\n const body = ApprovalBodySchema.parse(input);\n return TrainingCheckpointRecoveryResourceApprovalSchema.parse({\n ...body,\n approvalHash: await canonicalSha256(body),\n });\n}\n\n/** Exact execution recovery; a continual-training optimizer reset is separate. */\nexport const TrainingCheckpointRecoveryRequestSchema = z\n .object({\n resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),\n mode: z.literal(\"evaluation_only\").optional(),\n evaluationGpuType: z\n .enum([\"NVIDIA A100 80GB PCIe\", \"NVIDIA A100-SXM4-80GB\", \"NVIDIA H100 80GB HBM3\"])\n .optional(),\n expectedVersion: z.number().int().positive(),\n checkpointId: id,\n idempotencyKey: z.string().trim().min(16).max(191),\n maximumSpendUsd: z.number().positive().finite(),\n maximumWallSeconds: z.number().int().positive().max(21_600),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.evaluationGpuType && value.mode !== \"evaluation_only\")\n context.addIssue({\n code: \"custom\",\n path: [\"evaluationGpuType\"],\n message: \"GPU substitution requires explicit evaluation-only recovery\",\n });\n const a = value.resourceApproval;\n if (\n a &&\n (a.sourceJobVersion !== value.expectedVersion ||\n a.checkpointId !== value.checkpointId ||\n a.idempotencyKey !== value.idempotencyKey ||\n a.maximumSpendUsd !== value.maximumSpendUsd ||\n a.maximumWallSeconds !== value.maximumWallSeconds)\n )\n context.addIssue({\n code: \"custom\",\n path: [\"resourceApproval\"],\n message: \"Recovery resource approval does not match its request\",\n });\n });\n","import { z } from \"zod\";\n\n/** Placement authority only: a fresh learner never inherits the source Policy. */\nexport const TrainingPhysicalPlacementSchema = z.object({\n mode: z.literal(\"reuse_only\"),\n physicalWorkerId: z.string().trim().min(1).max(191),\n providerPodId: z.string().trim().min(1).max(191),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n baseProfileSha256: z.string().regex(/^[a-f0-9]{64}$/),\n gpuType: z.string().trim().min(1).max(200),\n sourceJobId: z.string().trim().min(1).max(191),\n sourceInputManifestSha256: z.string().regex(/^[a-f0-9]{64}$/),\n ownerTeamId: z.string().trim().min(1).max(191),\n deadlineAt: z.string().datetime({ offset: true }),\n}).strict();\n\nexport type TrainingPhysicalPlacement = z.infer<typeof TrainingPhysicalPlacementSchema>;\n","import { z } from \"zod\";\n\nconst Timestamp = z.string().datetime({ offset: true });\n\n/** Customer status deliberately omits provider/internal capacity reasons. A\n * stable ticket identifies the request; current fair-queue position may change. */\nexport const TrainingQueueStatusSchema = z.object({\n ticketId: z.string().trim().min(1).max(191),\n ticketNumber: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n label: z.literal(\"Waiting for resources\"),\n position: z.number().int().positive().nullable(),\n positionScope: z.literal(\"compatible_fair_queue\"),\n enqueuedAt: Timestamp,\n asOf: Timestamp,\n estimate: z.object({\n revision: z.number().int().nonnegative(),\n estimatedStartAt: Timestamp,\n expiresAt: Timestamp,\n evidence: z.enum([\"observed_capacity\", \"measured_bootstrap\", \"scheduled_release\"]),\n }).strict().nullable(),\n}).strict().superRefine((value, context) => {\n if (value.estimate && Date.parse(value.estimate.expiresAt) <= Date.parse(value.asOf))\n context.addIssue({ code: \"custom\", path: [\"estimate\"], message: \"An expired queue forecast must be returned as unavailable\" });\n});\n\nexport type TrainingQueueStatus = z.infer<typeof TrainingQueueStatusSchema>;\n","import { z } from \"zod\";\n\nconst Money = z.string().regex(/^(0|[1-9]\\d*)\\.\\d{6}$/).max(24).refine(value =>\n /^(0|[1-9]\\d*)\\.\\d{6}$/.test(value) && value.length <= 24 &&\n BigInt(value.replace(\".\", \"\")) <= BigInt(Number.MAX_SAFE_INTEGER));\n\n/** Read-only account-locked totals. Available credit never grants execution authority. */\nexport const TrainingUsageSnapshotSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingUsageSnapshot.v1\"), asOf: z.iso.datetime(),\n customerCapUsd: Money.nullable(), chargedUsd: Money, committedUsd: Money, outstandingUsd: Money,\n remainingCapUsd: Money.nullable(), availableCreditUsd: Money, complete: z.boolean(),\n components: z.array(z.object({ component: z.enum([\"gpu\", \"guest\", \"storage\", \"judge\"]),\n chargedUsd: Money, committedUsd: Money, outstandingUsd: Money, openOwners: z.number().int().nonnegative(),\n }).strict()).length(4).refine(values => values.every((value, index) =>\n value.component === [\"gpu\", \"guest\", \"storage\", \"judge\"][index])),\n}).strict();\nexport type TrainingUsageSnapshot = z.infer<typeof TrainingUsageSnapshotSchema>;\n","import { z } from \"zod\";\nimport { canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Money = z.string().regex(/^(0|[1-9]\\d*)(\\.\\d{1,6})?$/).max(24);\nconst micros = (value:string) => {\n const [whole,fraction=\"\"] = Money.parse(value).split(\".\");\n return BigInt(whole!)*1_000_000n+BigInt(fraction.padEnd(6,\"0\"));\n};\n\n/** Accepted customer price only. Supplier accounts, hardware costs and\n * infrastructure identities are not part of this public contract. */\nexport const ComputeAppliedPriceSchema = z.object({\n schemaVersion:z.literal(\"openpond.computeAppliedPrice.v1\"),\n version:z.string().min(1).max(500),\n service:z.enum([\"managed_rl\",\"model_modification\",\"model_serving\",\"sandbox\"]),\n profileHash:Hash,currency:z.literal(\"USD\"),unit:z.literal(\"resource_hour\"),\n hourlyUsd:Money.refine(value=>{\n if(!Money.safeParse(value).success) return false;\n const amount=micros(value);\n return amount>0n && amount<=BigInt(Number.MAX_SAFE_INTEGER);\n }),\n}).strict();\nexport type ComputeAppliedPrice = z.infer<typeof ComputeAppliedPriceSchema>;\n\nexport const ManagedModificationPriceSchema = z.object({\n schemaVersion:z.literal(\"openpond.modificationPrice.v1\"),\n appliedPrice:ComputeAppliedPriceSchema.extend({service:z.literal(\"model_modification\")}),\n billingBoundary:z.literal(\"active_allocation_until_verified_cleanup\"),\n startupBillable:z.literal(true),\n postCompletionIdleBillable:z.literal(false),\n minimumBillableSeconds:z.literal(0),\n warmReuseSeconds:z.literal(300),\n}).strict();\nexport type ManagedModificationPrice = z.infer<typeof ManagedModificationPriceSchema>;\n\n/** Null means use available credits, with native finite execution bounds.\n * Empty form fields have the same meaning; wire-level schemas reject blanks. */\nexport function canonicalComputeSpendCap(value:string|null|undefined):string|null {\n if(value==null || value.trim()===\"\") return null;\n const amount=micros(value);\n if(amount<=0n || amount>1_000_000_000_000n)\n throw new OpenPondProtocolError(\"managed_modification_cap_invalid\",\"Choose a positive spending limit of at most 1,000,000 USD, or use available credits.\");\n return `${amount/1_000_000n}.${(amount%1_000_000n).toString().padStart(6,\"0\")}`;\n}\n\nexport function assertManagedModificationPricing(plan:{maximumSpendUsd:string|null;runtimeHash:string;computePrice?:ManagedModificationPrice}) {\n if(plan.maximumSpendUsd!==canonicalComputeSpendCap(plan.maximumSpendUsd) ||\n plan.maximumSpendUsd===null && !plan.computePrice ||\n plan.computePrice && plan.computePrice.appliedPrice.profileHash!==plan.runtimeHash)\n throw new OpenPondProtocolError(\"managed_modification_price_mismatch\",\"Retain the exact reviewed rate, runtime and optional spending limit.\");\n}\n\nexport async function managedModificationPriceApprovalMatches(plan:{computePrice?:ManagedModificationPrice},\n command:{approvedPriceHash?:string}) {\n return plan.computePrice ? command.approvedPriceHash===await canonicalSha256(plan.computePrice)\n : command.approvedPriceHash===undefined;\n}\n","import { z } from \"zod\";\nimport { ComputeAppliedPriceSchema } from \"./managed-compute-price.js\";\nimport { canonicalSha256, OpenPondProtocolError } from \"./protocol.js\";\n\nconst Id = z.string().min(1).max(500), Hash = z.string().regex(/^[a-f0-9]{64}$/);\nconst Price = ComputeAppliedPriceSchema.extend({ service: z.literal(\"managed_rl\") });\nconst Cap = z.string().regex(/^(0|[1-9]\\d*)\\.\\d{6}$/).max(24).refine(value => {\n if (!/^(0|[1-9]\\d*)\\.\\d{6}$/.test(value) || value.length > 24) return false;\n const micros = BigInt(value.replace(\".\", \"\"));\n return micros > 0n && micros <= BigInt(Number.MAX_SAFE_INTEGER);\n}).nullable();\nconst Guests = z.array(z.object({\n profileHash: Hash, price: Price,\n resources: z.object({ cpu: z.number().positive(), memoryGb: z.number().positive(), diskGb: z.number().nonnegative() }).strict(),\n}).strict()).max(32);\nconst Rate = z.string().regex(/^(0|[1-9]\\d*)\\.\\d{6}$/).max(24).refine(value =>\n /^(0|[1-9]\\d*)\\.\\d{6}$/.test(value) && value.length <= 24 &&\n BigInt(value.replace(\".\", \"\")) <= BigInt(Number.MAX_SAFE_INTEGER));\nconst Judges = z.object({\n billing: z.literal(\"existing_retail_child_captures\"), acceptedPricingHashes: z.array(Hash).max(64),\n prices: z.array(z.object({\n modelId: Id, displayName: Id, acceptedPricingHash: Hash,\n inputUsdPerMillionTokens: Rate, cachedInputUsdPerMillionTokens: Rate, outputUsdPerMillionTokens: Rate,\n cacheWriteUsdPerMillionTokens: Rate.nullable(), cacheWriteOneHourUsdPerMillionTokens: Rate.nullable(),\n longContextThresholdTokens: z.number().int().positive().nullable(),\n longContext: z.object({ inputUsdPerMillionTokens: Rate, cachedInputUsdPerMillionTokens: Rate,\n outputUsdPerMillionTokens: Rate, cacheWriteUsdPerMillionTokens: Rate.nullable() }).strict().nullable(),\n }).strict()).max(64),\n}).strict();\n\nexport const TrainingBillingModesSchema = z.tuple([\n z.object({ mode: z.literal(\"prepaid_only\"), availability: z.literal(\"available\"), reason: z.null() }).strict(),\n z.object({ mode: z.literal(\"actual_usage\"), availability: z.enum([\"unavailable\", \"requires_preparation\"]),\n reason: z.string().min(1).max(500).nullable() }).strict(),\n]);\nexport type TrainingBillingModes = z.infer<typeof TrainingBillingModesSchema>;\n\n/** The optional customer limit covers all priced components of this Job.\n * An omitted limit uses eligible credits; it never permits customer debt. */\nexport const TrainingUsageFundingRequestSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingUsageFundingRequest.v1\"),\n billingMode: z.literal(\"actual_usage\"), customerCapUsd: Cap,\n}).strict();\nexport type TrainingUsageFundingRequest = z.infer<typeof TrainingUsageFundingRequestSchema>;\n\n/** A server-signed reference to a bounded operator qualification. This pointer\n * confers no authority and does not advertise ordinary image support. */\nexport const TrainingUsageQualificationRefSchema = z.object({\n authorizationId: z.uuid(), operationId: Id, authorizationSha256: Hash,\n}).strict();\nexport type TrainingUsageQualificationRef = z.infer<typeof TrainingUsageQualificationRefSchema>;\n\nexport const TrainingUsageQuoteContentSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingUsageQuote.v1\"), teamId: Id, actorUserId: Id,\n preparationId: Id, submissionHash: Hash, workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n customerCapUsd: Cap, maximumWallSeconds: z.number().int().positive(), retentionDays: z.number().int().nonnegative(),\n qualification: TrainingUsageQualificationRefSchema.optional(),\n gpu: Price, guests: Guests, judges: Judges,\n storage: z.object({ price: Price, storageClass: z.literal(\"STANDARD\"), quantityBasis: z.literal(\"gib_milliseconds\"),\n onCreditExhaustion: z.literal(\"retain_objects_and_stop_new_storage\") }).strict(),\n gpuBillingBoundary: z.literal(\"active_allocation_until_verified_cleanup\"),\n storageBillingBoundary: z.literal(\"accepted_retention_window\"),\n startupBillable: z.literal(true), postCompletionIdleBillable: z.literal(false), minimumBillableSeconds: z.literal(0),\n issuedAt: z.iso.datetime(), expiresAt: z.iso.datetime(),\n}).strict();\nexport const TrainingUsageQuoteSchema = TrainingUsageQuoteContentSchema.extend({ contentHash: Hash, signature: Id }).strict();\nexport type TrainingUsageQuote = z.infer<typeof TrainingUsageQuoteSchema>;\n\n/** The server verifies its private signature before dispatch. Clients verify\n * the quote's hash and exact reviewed preparation without possessing that key. */\nexport async function verifyTrainingUsageQuote(raw: TrainingUsageQuote, expected: {\n teamId: string; actorUserId: string; preparationId: string; submissionHash: string; customerCapUsd: string | null;\n}) {\n const quote = TrainingUsageQuoteSchema.parse(raw), { contentHash, signature: _signature, ...content } = quote;\n if (contentHash !== await canonicalSha256(content) || quote.teamId !== expected.teamId ||\n quote.actorUserId !== expected.actorUserId || quote.preparationId !== expected.preparationId ||\n quote.submissionHash !== expected.submissionHash || quote.customerCapUsd !== expected.customerCapUsd ||\n Date.parse(quote.expiresAt) <= Date.parse(quote.issuedAt) ||\n new Set(quote.guests.map(guest => guest.profileHash)).size !== quote.guests.length ||\n quote.guests.some(guest => guest.profileHash !== guest.price.profileHash) ||\n new Set(quote.judges.acceptedPricingHashes).size !== quote.judges.acceptedPricingHashes.length ||\n new Set(quote.judges.prices.map(price => price.acceptedPricingHash)).size !== quote.judges.prices.length ||\n quote.judges.prices.length !== quote.judges.acceptedPricingHashes.length ||\n quote.judges.prices.some(price => !quote.judges.acceptedPricingHashes.includes(price.acceptedPricingHash)))\n throw new OpenPondProtocolError(\"training_usage_quote_mismatch\", \"Training prices differ from the reviewed preparation, actor or spending limit.\");\n return quote;\n}\n","/** Credential-free training wire contracts. Schema owners import this leaf;\n * the public training client barrel composes owners and re-exports these values. */\nimport { z } from \"zod\";\nimport { TrainingHandoffOriginSchema } from \"@openpond/evals/learning\";\nimport { ModelProjectBaseModelSchema, ModelProjectImmutableRefSchema,\n ModelProjectRecipeDocumentSchema, ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { SftRecipeSchema, TrainingSftImageCapabilitiesSchema } from \"./training-supervised.js\";\nimport { TrainingCheckpointRecoveryResourceApprovalSchema } from \"./training-recovery.js\";\nimport { TrainingPhysicalPlacementSchema } from \"./training-physical-placement.js\";\nimport { TrainingGpuSelectionSchema } from \"./training-compute-selection.js\";\nimport { TrainingQueueStatusSchema } from \"./training-queue.js\";\nimport { TrainingUsageSnapshotSchema } from \"./training-usage-status.js\";\nimport { TrainingBillingModesSchema } from \"./training-usage-funding.js\";\nimport { TRAINING_INPUT_ARTIFACT_MAX_BYTES, TRAINING_JOB_SUBMISSION_MAX_BYTES,\n OpenPondProtocolError, assertCanonicalPayloadSize, canonicalSha256 } from \"./protocol.js\";\n\nconst IdSchema = z.string().trim().min(1).max(500);\nconst HashSchema = z.string().regex(/^[a-f0-9]{64}$/);\nconst TimestampSchema = z.string().datetime({ offset: true });\n\n/**\n * Stages a content-addressed immutable input before Job admission. The payload\n * is deliberately opaque to the transport contract: its declared kind owns\n * the executable schema, while the envelope provides bounded bytes,\n * idempotency, and a stable manifest lookup key.\n */\nexport const TrainingInputArtifactUploadSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingInputArtifactUpload.v2\"),\n kind: z.enum([\"portable_training_bundle\", \"reward_model_dataset\"]),\n idempotencyKey: z.string().trim().min(1).max(500),\n sourceManifest: ModelProjectImmutableRefSchema,\n payload: z.unknown(),\n contentHash: HashSchema,\n })\n .strict();\n\nexport const TrainingInputArtifactSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingInputArtifact.v2\"),\n kind: z.enum([\"portable_training_bundle\", \"reward_model_dataset\"]),\n sourceManifest: ModelProjectImmutableRefSchema,\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n sizeBytes: z.number().int().positive(),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport async function trainingInputArtifactUploadHash(\n upload: Omit<TrainingInputArtifactUpload, \"contentHash\"> | TrainingInputArtifactUpload,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = upload as TrainingInputArtifactUpload;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingInputArtifactUpload(\n value: unknown,\n): Promise<TrainingInputArtifactUpload> {\n assertCanonicalPayloadSize(value, TRAINING_INPUT_ARTIFACT_MAX_BYTES, \"Training input artifact\");\n const parsed = TrainingInputArtifactUploadSchema.parse(value);\n const expectedHash = await trainingInputArtifactUploadHash(parsed);\n if (parsed.contentHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"content_hash_mismatch\",\n `Training input artifact contentHash ${parsed.contentHash} does not match ${expectedHash}.`,\n );\n }\n return parsed;\n}\n\nexport const TrainingJobKindSchema = z.enum([\"reward_model_train\", \"policy_optimize\"]);\n\nexport const TrainingJobStateSchema = z.enum([\n \"queued\",\n \"admitting\",\n \"provisioning\",\n \"running\",\n \"stopping\",\n \"cancelling\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n]);\n\nexport const TrainingCapabilityRequirementSchema = z\n .object({\n id: IdSchema,\n version: z.string().trim().min(1).max(200).nullable().default(null),\n required: z.boolean().default(true),\n })\n .strict();\n\nexport const TrainingJobSourceSchema = z\n .object({\n origin: TrainingHandoffOriginSchema.optional(),\n modelProject: z\n .object({\n id: IdSchema,\n portableProjectId: IdSchema,\n revision: z.number().int().positive(),\n contentHash: HashSchema,\n })\n .strict(),\n harnessRunManifest: ModelProjectImmutableRefSchema,\n harnessRelease: ModelProjectImmutableRefSchema,\n taskset: ModelProjectVersionedRefSchema,\n tasksetRelease: ModelProjectImmutableRefSchema,\n evaluation: z\n .object({\n taskset: ModelProjectVersionedRefSchema,\n dataset: ModelProjectImmutableRefSchema,\n })\n .strict()\n .nullable()\n .optional(),\n dataset: ModelProjectImmutableRefSchema,\n evidenceSets: z.array(ModelProjectImmutableRefSchema).max(10_000),\n })\n .strict();\n\nexport const RewardModelTrainingRequestSchema = z\n .object({\n kind: z.literal(\"reward_model_train\"),\n baseModel: ModelProjectBaseModelSchema,\n preferenceDatasetRelease: ModelProjectImmutableRefSchema,\n processorRelease: ModelProjectImmutableRefSchema,\n recipe: z\n .object({\n schemaVersion: z.literal(\"openpond.rewardModelRecipe.v1\"),\n method: z.literal(\"reward_model\"),\n parameterization: z.literal(\"lora_with_scalar_head\"),\n })\n .catchall(z.unknown()),\n })\n .strict();\n\nconst DeterministicRewardSourceSchema = z\n .object({\n kind: z.literal(\"deterministic\"),\n grader: ModelProjectImmutableRefSchema,\n composer: ModelProjectImmutableRefSchema.nullable().default(null),\n })\n .strict();\n\nconst LearnedRewardSourceSchema = z\n .object({\n kind: z.literal(\"learned_reward\"),\n rewardModelVersion: ModelProjectImmutableRefSchema,\n qualificationReport: ModelProjectImmutableRefSchema.nullable().default(null),\n evaluationReferences: z.array(ModelProjectImmutableRefSchema).max(1_000).default([]),\n scorerArtifact: z\n .object({\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n executionReceipt: ModelProjectImmutableRefSchema,\n })\n .strict(),\n processorRelease: ModelProjectImmutableRefSchema,\n rewardComposerRelease: ModelProjectImmutableRefSchema,\n })\n .strict();\n\nexport const TrainingQualificationBaseModelSchema = ModelProjectBaseModelSchema.extend({\n revision: z.string().regex(/^[a-f0-9]{40,64}$/),\n tokenizerRevision: z.string().regex(/^[a-f0-9]{40,64}$/),\n chatTemplateHash: HashSchema,\n}).strict();\n\nexport const PolicyOptimizationRequestSchema = z\n .object({\n kind: z.literal(\"policy_optimize\"),\n /** Collect and grade one original-learner group without optimizer work. */\n executionMode: z.literal(\"qualification\").optional(),\n baseModel: ModelProjectBaseModelSchema,\n recipe: ModelProjectRecipeDocumentSchema,\n rewardSource: z.discriminatedUnion(\"kind\", [\n DeterministicRewardSourceSchema,\n LearnedRewardSourceSchema,\n ]),\n resumeFrom: ModelProjectImmutableRefSchema.nullable().default(null),\n })\n .strict()\n .superRefine((job, context) => {\n if (job.recipe.method !== \"sft\") return;\n const recipe = SftRecipeSchema.safeParse(job.recipe);\n if (!recipe.success) {\n context.addIssue({\n code: \"custom\",\n path: [\"recipe\"],\n message: \"The SFT recipe is incomplete or invalid.\",\n });\n return;\n }\n if (job.executionMode || job.resumeFrom || \"continuation\" in job.recipe)\n context.addIssue({\n code: \"custom\",\n message:\n \"Initial managed SFT requires a fresh supervised run without rollout qualification or continuation.\",\n });\n if (\n recipe.data.baseModel.id !== job.baseModel.modelId ||\n recipe.data.baseModel.revision !== job.baseModel.revision ||\n recipe.data.baseModel.tokenizerRevision !== job.baseModel.tokenizerRevision ||\n recipe.data.baseModel.chatTemplateHash !== job.baseModel.chatTemplateHash\n )\n context.addIssue({\n code: \"custom\",\n path: [\"baseModel\"],\n message: \"The SFT recipe must pin the exact submitted base and tokenizer.\",\n });\n });\n\nexport const TrainingJobRequestSchema = z.discriminatedUnion(\"kind\", [\n RewardModelTrainingRequestSchema,\n PolicyOptimizationRequestSchema,\n]);\n\nexport const TrainingJobApprovalSchema = z\n .object({\n approvalHash: HashSchema,\n approvedAt: TimestampSchema,\n exportApproved: z.boolean(),\n maximumSpendUsd: z.number().nonnegative(),\n retentionDays: z.number().int().nonnegative().nullable(),\n region: z.string().trim().min(1).max(200).nullable().default(null),\n })\n .strict();\n\nexport const TrainingJobSubmissionSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobSubmission.v2\"),\n idempotencyKey: z.string().trim().min(1).max(500),\n name: z.string().trim().min(1).max(200),\n source: TrainingJobSourceSchema,\n job: TrainingJobRequestSchema,\n requestedCapabilities: z.array(TrainingCapabilityRequirementSchema).max(1_000),\n placementObjective: z.enum([\"fast\", \"balanced\", \"economical\"]),\n gpuSelection: TrainingGpuSelectionSchema.optional(),\n physicalPlacement: TrainingPhysicalPlacementSchema.optional(),\n budget: z\n .object({\n maximumSpendUsd: z.number().nonnegative(),\n maximumWallSeconds: z.number().int().positive(),\n })\n .strict(),\n approval: TrainingJobApprovalSchema,\n contentHash: HashSchema,\n })\n .strict()\n .superRefine((submission, context) => {\n const distributed = (submission.gpuSelection?.gpuCount ?? 1) === 2;\n const distributedRequirement = submission.requestedCapabilities.some(requirement =>\n requirement.id === \"managed_rl.policy.data_parallel\" && requirement.version === \"1\" && requirement.required);\n if (distributed !== distributedRequirement) {\n context.addIssue({ code: \"custom\", path: [\"requestedCapabilities\"], message: \"Two-GPU training must require managed_rl.policy.data_parallel@1 and bind gpuSelection.gpuCount to 2.\" });\n }\n if (distributed && (submission.job.kind !== \"policy_optimize\" || submission.job.executionMode ||\n submission.job.recipe.method !== \"grpo\" || submission.physicalPlacement)) {\n context.addIssue({ code: \"custom\", path: [\"gpuSelection\"], message: \"Two-GPU execution requires exclusive GRPO policy training.\" });\n }\n if (submission.physicalPlacement && (submission.job.kind !== \"policy_optimize\" ||\n submission.job.resumeFrom || submission.job.executionMode || submission.job.recipe.continuation !== undefined)) {\n context.addIssue({ code: \"custom\", path: [\"physicalPlacement\"], message: \"Reuse-only placement requires fresh-base policy training without continuation.\" });\n }\n if (submission.job.kind === \"policy_optimize\" && submission.job.executionMode === \"qualification\") {\n const job = submission.job;\n if (!TrainingQualificationBaseModelSchema.safeParse(job.baseModel).success) {\n context.addIssue({ code: \"custom\", path: [\"job\", \"baseModel\"], message: \"Qualification requires immutable model and tokenizer revisions and a SHA-256 chat-template pin.\" });\n }\n if (job.resumeFrom || job.recipe.continuation !== undefined || job.rewardSource.kind !== \"deterministic\" || job.recipe.method !== \"grpo\") {\n context.addIssue({\n code: \"custom\", path: [\"job\"],\n message: \"Qualification requires the original GRPO learner, deterministic reward, and no resume or continuation.\",\n });\n }\n if (!submission.requestedCapabilities.some(requirement => requirement.required && requirement.id === \"managed_rl.policy.qualification\" && requirement.version === \"1\")) {\n context.addIssue({\n code: \"custom\", path: [\"requestedCapabilities\"],\n message: \"Qualification must require managed_rl.policy.qualification@1.\",\n });\n }\n }\n if (submission.approval.maximumSpendUsd !== submission.budget.maximumSpendUsd) {\n context.addIssue({\n code: \"custom\",\n path: [\"approval\", \"maximumSpendUsd\"],\n message: \"Approved spend must equal the immutable Job budget.\",\n });\n }\n });\n\nexport async function trainingJobSubmissionHash(\n submission: Omit<TrainingJobSubmission, \"contentHash\"> | TrainingJobSubmission,\n): Promise<string> {\n const { contentHash: _contentHash, ...content } = submission as TrainingJobSubmission;\n return canonicalSha256(content);\n}\n\nexport async function parseAndVerifyTrainingJobSubmission(\n value: unknown,\n): Promise<TrainingJobSubmission> {\n assertCanonicalPayloadSize(value, TRAINING_JOB_SUBMISSION_MAX_BYTES, \"Training Job submission\");\n const parsed = TrainingJobSubmissionSchema.parse(value);\n const expectedHash = await trainingJobSubmissionHash(parsed);\n if (parsed.contentHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"content_hash_mismatch\",\n `Training Job contentHash ${parsed.contentHash} does not match ${expectedHash}.`,\n );\n }\n return parsed;\n}\n\nexport const TrainingJobRecoverySchema = z.object({\n resourceApproval: TrainingCheckpointRecoveryResourceApprovalSchema.optional(),\n mode: z.literal(\"evaluation_only\").optional(),\n trainingWorkloadComplete: z.boolean().optional(),\n sourceJobId: IdSchema,\n checkpointId: IdSchema,\n policyVersion: z.number().int().positive(),\n completedGroups: z.number().int().positive(),\n optimizerMode: z.literal(\"continue\"),\n}).strict();\n\nexport const TrainingJobSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJob.v2\"),\n id: IdSchema,\n teamId: IdSchema,\n kind: TrainingJobKindSchema,\n executionMode: z.literal(\"qualification\").optional(),\n recovery: TrainingJobRecoverySchema.optional(),\n modelProjectId: IdSchema,\n portableProjectId: IdSchema,\n sourceProjectRevision: z.number().int().positive(),\n submissionHash: HashSchema,\n state: TrainingJobStateSchema,\n queue: TrainingQueueStatusSchema.optional(),\n phase: z.string().trim().min(1).max(200),\n version: z.number().int().nonnegative(),\n progress: z.number().min(0).max(1),\n rolloutProgress: z\n .object({\n groupsCompleted: z.number().int().nonnegative(),\n groupsTarget: z.number().int().nonnegative(),\n optimizerUpdatesApplied: z.number().int().nonnegative(),\n optimizerUpdatesSkipped: z.number().int().nonnegative(),\n })\n .strict(),\n accruedSpendUsd: z.number().nonnegative(),\n usage: TrainingUsageSnapshotSchema.optional(),\n terminalReason: z.string().trim().min(1).max(5_000).nullable(),\n createdAt: TimestampSchema,\n updatedAt: TimestampSchema,\n completedAt: TimestampSchema.nullable(),\n })\n .strict();\n\nexport const TrainingJobPageSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobPage.v2\"),\n jobs: z.array(TrainingJobSchema).max(1_000),\n nextCursor: z.string().trim().min(1).max(2_000).nullable(),\n })\n .strict();\n\nexport const TrainingJobEventSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobEvent.v2\"),\n id: IdSchema,\n jobId: IdSchema,\n sequence: z.number().int().nonnegative(),\n type: IdSchema,\n phase: z.string().trim().min(1).max(200),\n message: z.string().trim().min(1).max(5_000).nullable(),\n data: z.record(z.string(), z.unknown()).default({}),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport const TrainingJobLogSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobLog.v2\"),\n jobId: IdSchema,\n sequence: z.number().int().nonnegative(),\n level: z.enum([\"debug\", \"info\", \"warning\", \"error\"]),\n message: z.string().max(20_000),\n createdAt: TimestampSchema,\n })\n .strict();\n\nexport const TrainingJobControlRequestSchema = z\n .object({ expectedVersion: z.number().int().nonnegative() })\n .strict();\n\nexport const TrainingJobOutputSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobOutput.v2\"),\n id: IdSchema,\n jobId: IdSchema,\n kind: z.enum([\"checkpoint\", \"adapter\", \"scorer\", \"metrics\", \"evaluation\", \"trace\", \"receipt\"]),\n artifactRef: z.string().trim().min(1).max(2_000),\n contentHash: HashSchema,\n sizeBytes: z.number().int().nonnegative(),\n metadata: z.record(z.string(), z.unknown()).default({}),\n createdAt: TimestampSchema,\n })\n .strict();\n\n/** Evidence that collection used the pinned original learner and never updated it. */\nexport const TrainingQualificationEvidenceSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingQualificationEvidence.v1\"),\n baseModel: TrainingQualificationBaseModelSchema,\n group: ModelProjectImmutableRefSchema,\n rolloutReceipts: z.array(ModelProjectImmutableRefSchema).min(1).max(1_000),\n rewardEvidenceHash: HashSchema,\n groupsCompleted: z.literal(1),\n optimizerUpdatesApplied: z.literal(0),\n optimizerUpdatesSkipped: z.literal(0),\n trainingStepsCreated: z.literal(0),\n checkpointsCreated: z.literal(0),\n artifactsCreated: z.literal(0),\n}).strict().superRefine((evidence, context) => {\n if (new Set(evidence.rolloutReceipts.map(receipt => receipt.id)).size !== evidence.rolloutReceipts.length) {\n context.addIssue({ code: \"custom\", path: [\"rolloutReceipts\"], message: \"Qualification rollout receipt identities must be unique.\" });\n }\n});\n\nexport const TrainingExecutionReceiptSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingExecutionReceipt.v2\"),\n id: IdSchema,\n teamId: IdSchema,\n jobId: IdSchema,\n submissionHash: HashSchema,\n manifestHash: HashSchema,\n recipeHash: HashSchema,\n capabilityHash: HashSchema,\n runtimeRelease: ModelProjectImmutableRefSchema,\n inputs: z.array(ModelProjectImmutableRefSchema).max(10_000),\n outputs: z.array(ModelProjectImmutableRefSchema).max(10_000),\n spendUsd: z.number().nonnegative(),\n durationSeconds: z.number().nonnegative(),\n cleanupComplete: z.boolean(),\n qualification: TrainingQualificationEvidenceSchema.optional(),\n issuer: IdSchema,\n issuedAt: TimestampSchema,\n signature: z.string().trim().min(1).max(10_000).nullable(),\n })\n .strict();\n\nexport async function trainingExecutionReceiptHash(\n receipt: TrainingExecutionReceipt,\n): Promise<string> {\n return canonicalSha256(TrainingExecutionReceiptSchema.parse(receipt));\n}\n\nexport async function parseAndVerifyTrainingExecutionReceipt(\n value: unknown,\n expected: {\n id: string;\n contentHash: string;\n teamId?: string;\n jobId?: string;\n requireCleanup?: boolean;\n qualificationSubmission?: TrainingJobSubmission;\n outputs?: TrainingJobOutput[];\n },\n): Promise<TrainingExecutionReceipt> {\n const receipt = TrainingExecutionReceiptSchema.parse(value);\n const expectedId = IdSchema.parse(expected.id);\n const expectedHash = HashSchema.parse(expected.contentHash);\n const actualHash = await trainingExecutionReceiptHash(receipt);\n if (receipt.id !== expectedId || actualHash !== expectedHash) {\n throw new OpenPondProtocolError(\n \"execution_receipt_mismatch\",\n \"The execution receipt identity or canonical content hash did not match.\",\n );\n }\n if (expected.teamId !== undefined && receipt.teamId !== IdSchema.parse(expected.teamId)) {\n throw new OpenPondProtocolError(\n \"execution_receipt_team_mismatch\",\n \"The execution receipt belongs to a different team.\",\n );\n }\n if (expected.jobId !== undefined && receipt.jobId !== IdSchema.parse(expected.jobId)) {\n throw new OpenPondProtocolError(\n \"execution_receipt_job_mismatch\",\n \"The execution receipt belongs to a different Training Job.\",\n );\n }\n if ((expected.requireCleanup ?? true) && !receipt.cleanupComplete) {\n throw new OpenPondProtocolError(\n \"execution_cleanup_incomplete\",\n \"The execution receipt does not attest complete terminal cleanup.\",\n );\n }\n if (expected.qualificationSubmission) {\n const submission = await parseAndVerifyTrainingJobSubmission(expected.qualificationSubmission);\n if (submission.job.kind !== \"policy_optimize\" || submission.job.executionMode !== \"qualification\") {\n throw new OpenPondProtocolError(\"qualification_submission_required\", \"Expected an immutable qualification submission.\");\n }\n await assertTrainingQualificationReceipt(receipt, { submissionHash: submission.contentHash, baseModel: submission.job.baseModel, outputs: expected.outputs });\n }\n return receipt;\n}\n\nexport async function assertTrainingQualificationReceipt(\n receipt: TrainingExecutionReceipt,\n expected: { submissionHash: string; baseModel?: z.infer<typeof ModelProjectBaseModelSchema>; outputs?: TrainingJobOutput[] },\n): Promise<void> {\n const evidence = TrainingQualificationEvidenceSchema.parse(receipt.qualification);\n if (receipt.submissionHash !== expected.submissionHash || !receipt.cleanupComplete) {\n throw new OpenPondProtocolError(\"qualification_receipt_mismatch\", \"Qualification must attest the expected submission and complete cleanup.\");\n }\n if (expected.baseModel && await canonicalSha256(evidence.baseModel) !== await canonicalSha256(expected.baseModel)) {\n throw new OpenPondProtocolError(\"qualification_learner_mismatch\", \"Qualification used a different original learner or tokenizer.\");\n }\n if (expected.outputs?.some(output => [\"checkpoint\", \"adapter\", \"scorer\"].includes(output.kind))) {\n throw new OpenPondProtocolError(\"qualification_updated_artifact\", \"Qualification must not publish trained artifacts or checkpoints.\");\n }\n}\n\nexport const TrainingJobOutputsSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingJobOutputs.v2\"),\n outputs: z.array(TrainingJobOutputSchema).max(10_000),\n receipt: TrainingExecutionReceiptSchema.nullable(),\n })\n .strict();\n\nexport const TrainingPolicyLoraCapabilitiesSchema = z.object({\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n envelopeRank: z.number().int().positive().max(256),\n supportedRanks: z.array(z.number().int().positive().max(256)).max(256),\n qualification: z.object({ evidenceRef: z.string().min(1), evidenceSha256: HashSchema }).strict().nullable(),\n continuation: z.object({\n sharedRequiresSameRank: z.literal(true),\n mergedRequiresSameRank: z.literal(true),\n residualAppendRequiresFreeCapacity: z.literal(true),\n stageOptimizer: z.literal(\"reset\"),\n interruptedRecoveryOptimizer: z.literal(\"restore\"),\n }).strict(),\n}).strict().superRefine((value, context) => {\n if (new Set(value.supportedRanks).size !== value.supportedRanks.length || value.supportedRanks.some(rank => rank > value.envelopeRank))\n context.addIssue({ code: \"custom\", path: [\"supportedRanks\"], message: \"Supported ranks must be unique and fit the physical adapter envelope.\" });\n if (value.supportedRanks.length && !value.qualification)\n context.addIssue({ code: \"custom\", path: [\"qualification\"], message: \"Advertised ranks require immutable image qualification evidence.\" });\n});\nexport type TrainingPolicyLoraCapabilities = z.infer<typeof TrainingPolicyLoraCapabilitiesSchema>;\n\nexport function supportsTrainingPolicyLoraRank(capabilities: TrainingPolicyLoraCapabilities, rank: number,\n continuation?: { mode: \"shared\" | \"sequential_merge\" | \"residual_append\"; parentEnabledRank: number }): boolean {\n if (!capabilities.supportedRanks.includes(rank)) return false;\n if (!continuation) return true;\n return continuation.mode === \"residual_append\"\n ? continuation.parentEnabledRank + rank <= capabilities.envelopeRank\n : continuation.parentEnabledRank === rank;\n}\n\nexport const TrainingCapabilitiesSchema = z\n .object({\n schemaVersion: z.literal(\"openpond.trainingCapabilities.v2\"),\n capabilityHash: HashSchema,\n jobKinds: z.array(TrainingJobKindSchema),\n methods: z.array(z.string().trim().min(1).max(200)),\n billingModes: TrainingBillingModesSchema.optional(),\n executionModes: z.array(z.enum([\"training\", \"qualification\"])).optional(),\n policyLora: TrainingPolicyLoraCapabilitiesSchema.optional(),\n supervisedTraining: z.array(TrainingSftImageCapabilitiesSchema).min(1).max(100).optional(),\n policyDataParallel: z.object({\n capability: z.literal(\"managed_rl.policy.data_parallel\"),\n version: z.literal(\"1\"),\n gpuCount: z.literal(2),\n worldSize: z.literal(2),\n backend: z.literal(\"nccl\"),\n allocationMode: z.literal(\"exclusive\"),\n workerImageDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n }).strict().optional(),\n structuredOutputs: z.object({\n capability: z.literal(\"work.structured-output.v1\"),\n harnessRuntimeHash: HashSchema,\n workHarnessHash: HashSchema,\n schemaHash: HashSchema,\n artifactHash: HashSchema,\n invalidDataRejected: z.literal(true),\n invalidBytesRejected: z.literal(true),\n }).strict().optional(),\n placements: z.array(z.enum([\"local\", \"remote\", \"colocated\", \"provider_native\"])),\n controls: z\n .object({\n cancel: z.boolean(),\n stopAfterGroup: z.boolean(),\n resumeFromCheckpoint: z.boolean(),\n })\n .strict(),\n estimates: z.object({ schemaVersion: z.literal(\"openpond.trainingEstimate.v1\") }).strict().optional(),\n limits: z\n .object({\n maximumSpendUsd: z.number().nonnegative(),\n maximumWallSeconds: z.number().int().positive(),\n maximumArtifactBytes: z.number().int().positive(),\n })\n .strict(),\n checkedAt: TimestampSchema,\n expiresAt: TimestampSchema,\n })\n .strict();\n\nexport type TrainingJobSubmission = z.infer<typeof TrainingJobSubmissionSchema>;\nexport type TrainingQualificationEvidence = z.infer<typeof TrainingQualificationEvidenceSchema>;\nexport type TrainingInputArtifactUpload = z.infer<typeof TrainingInputArtifactUploadSchema>;\nexport type TrainingInputArtifact = z.infer<typeof TrainingInputArtifactSchema>;\nexport type TrainingJob = z.infer<typeof TrainingJobSchema>;\nexport type TrainingJobPage = z.infer<typeof TrainingJobPageSchema>;\nexport type TrainingJobEvent = z.infer<typeof TrainingJobEventSchema>;\nexport type TrainingJobLog = z.infer<typeof TrainingJobLogSchema>;\nexport type TrainingJobOutput = z.infer<typeof TrainingJobOutputSchema>;\nexport type TrainingJobOutputs = z.infer<typeof TrainingJobOutputsSchema>;\nexport type TrainingExecutionReceipt = z.infer<typeof TrainingExecutionReceiptSchema>;\nexport type TrainingCapabilities = z.infer<typeof TrainingCapabilitiesSchema>;\n","import { z } from \"zod\";\nimport { compileBoundGraders, RewardBindingSchema, RewardReleaseSchema } from \"@openpond/evals/rewards\";\nimport { canonicalSha256 } from \"./protocol.js\";\n\nconst GradersSchema = z.array(z.object({ id: z.string().trim().min(1) }).catchall(z.unknown())).min(1).max(1_000);\nconst RewardExecutionSchema = z.object({\n binding: RewardBindingSchema,\n rewards: z.array(RewardReleaseSchema).min(1).max(100),\n}).strict();\n\n/**\n * The grader reference identifies the entire executed set, including order and\n * configuration. A bound plan additionally identifies its immutable composer,\n * whose sources pin roles, normalization, gates and required-score semantics.\n * Callers must obtain these inputs from their verified immutable bundle.\n */\nexport async function deterministicTrainingRewardSource(input: {\n graders: unknown;\n rewardExecution?: unknown;\n}) {\n const execution = input.rewardExecution ? RewardExecutionSchema.parse(input.rewardExecution) : null;\n const graders = GradersSchema.parse(execution\n ? compileBoundGraders(execution.binding, execution.rewards)\n : input.graders);\n if (new Set(graders.map(grader => grader.id)).size !== graders.length) {\n throw new Error(\"Training grader identities must be unique.\");\n }\n const hash = await canonicalSha256({ schemaVersion: \"openpond.trainingGraderSet.v1\", graders });\n return {\n kind: \"deterministic\" as const,\n grader: { id: `training-graders-${hash.slice(0, 32)}`, contentHash: hash },\n composer: execution ? { id: execution.binding.id, contentHash: execution.binding.contentHash } : null,\n };\n}\n","import { z } from \"zod\";\nimport { ModelProjectVersionedRefSchema } from \"./model-projects.js\";\nimport { canonicalSha256 } from \"./protocol.js\";\n\nexport const TRAINING_EVALUATION_SOURCE_PATH = \"evaluation-source.json\";\n\nconst TaskIdentitySchema = z.object({\n id: z.string().trim().min(1),\n clusterKey: z.string().trim().min(1),\n split: z.enum([\"train\", \"validation\", \"frozen_eval\"]),\n}).passthrough();\n\n/** Evaluator-only payload. The enclosing resolved bundle pins every byte. */\nexport const TrainingEvaluationSourceSchema = z.object({\n schemaVersion: z.literal(\"openpond.trainingEvaluationSource.v1\"),\n taskset: ModelProjectVersionedRefSchema,\n tasks: z.array(TaskIdentitySchema).min(1).max(10_000),\n assets: z.array(z.object({\n path: z.string().trim().min(1).max(2_000),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n sizeBytes: z.number().int().nonnegative(),\n encoding: z.literal(\"base64\"),\n content: z.string().max(32 * 1024 * 1024),\n }).strict()).max(10_000),\n}).strict().superRefine((source, context) => {\n const ids = new Set<string>();\n source.tasks.forEach((task, index) => {\n if (task.split === \"train\") context.addIssue({ code: \"custom\", path: [\"tasks\", index, \"split\"], message: \"Evaluation sources require held-out tasks.\" });\n if (ids.has(task.id)) context.addIssue({ code: \"custom\", path: [\"tasks\", index, \"id\"], message: \"Evaluation task identities must be unique.\" });\n ids.add(task.id);\n });\n});\n\nexport type TrainingEvaluationSource = z.infer<typeof TrainingEvaluationSourceSchema>;\n\nexport function assertTrainingEvaluationIsolation(trainingTasks: unknown, evaluationTasks: unknown): void {\n const training = z.array(TaskIdentitySchema).min(1).max(10_000).parse(trainingTasks);\n const evaluation = z.array(TaskIdentitySchema).min(1).max(10_000).parse(evaluationTasks);\n const trainIds = new Set<string>();\n const trainFamilies = new Set<string>();\n for (const task of training) {\n if (task.split !== \"train\") throw new Error(\"The training population contains a held-out task.\");\n if (trainIds.has(task.id)) throw new Error(\"Training task identities must be unique.\");\n trainIds.add(task.id);\n trainFamilies.add(task.clusterKey);\n }\n const evaluationIds = new Set<string>();\n for (const task of evaluation) {\n if (task.split === \"train\") throw new Error(\"The evaluation population contains a training task.\");\n if (evaluationIds.has(task.id)) throw new Error(\"Evaluation task identities must be unique.\");\n if (trainIds.has(task.id) || trainFamilies.has(task.clusterKey)) {\n throw new Error(\"Training and evaluation tasks or families overlap.\");\n }\n evaluationIds.add(task.id);\n }\n}\n\nexport async function trainingEvaluationSourceRef(input: unknown) {\n const source = TrainingEvaluationSourceSchema.parse(input);\n const hash = await canonicalSha256(source);\n return { taskset: source.taskset, dataset: { id: `training-evaluation-${hash.slice(0, 32)}`, contentHash: hash } };\n}\n"],"mappings":"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","names":["z","z","z","z","z","Money","z","z","Hash","micros","z","z","z","z","hash","z","z","hash"]}
@@ -31,7 +31,8 @@ import {
31
31
  hashCollectorEligibleBoundaries,
32
32
  summarizeCollectorCoverage,
33
33
  verifyConnectedRecordedExecution
34
- } from "./chunk-3BYFS4RO.js";
34
+ } from "./chunk-47THZRUM.js";
35
+ import "./chunk-O6FKHAWN.js";
35
36
  import {
36
37
  AgentImportCommitRequestSchema,
37
38
  AgentImportFileSchema,
@@ -48,19 +49,18 @@ import {
48
49
  ConnectedStartingAssetsReceiptSchema,
49
50
  ConnectedStartingAssetsRequestSchema,
50
51
  verifyConnectedStartingAssetsReceipt
51
- } from "./chunk-AG6UJ3DI.js";
52
- import "./chunk-BNBPKCIR.js";
53
- import "./chunk-Q4RGCEOI.js";
52
+ } from "./chunk-YS7DF76T.js";
53
+ import "./chunk-DDCR4KB5.js";
54
+ import "./chunk-JOMZJXGC.js";
54
55
  import "./chunk-GWXJSBWR.js";
55
- import "./chunk-GCUWJUUM.js";
56
+ import "./chunk-RTLJV4OS.js";
56
57
  import {
57
58
  ConnectedDatasetSourceRefSchema
58
- } from "./chunk-ZQ6QTYRE.js";
59
+ } from "./chunk-GV6DEDBU.js";
59
60
  import "./chunk-TK3DXH7A.js";
60
61
  import "./chunk-Z252BNAZ.js";
61
- import "./chunk-H3367ISL.js";
62
- import "./chunk-O6FKHAWN.js";
63
62
  import "./chunk-QTNYXOJW.js";
63
+ import "./chunk-H3367ISL.js";
64
64
  import "./chunk-MVAEE5EI.js";
65
65
  import "./chunk-CL3IOOVL.js";
66
66
  import "./chunk-B3ZHJ2KK.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TaskDesignProposalSchema
3
- } from "./chunk-QIGMNB6M.js";
3
+ } from "./chunk-3G3HUA32.js";
4
4
  import {
5
5
  DatasetTaskAppendReceiptSchema,
6
6
  DatasetTaskAppendRequestSchema,
@@ -8,7 +8,7 @@ import {
8
8
  DatasetTaskInputSchema,
9
9
  addDatasetTask,
10
10
  createTaskAdder
11
- } from "./chunk-NZRGRUYG.js";
11
+ } from "./chunk-2OVNKPBZ.js";
12
12
  import {
13
13
  ConnectedCaseRefSchema,
14
14
  ConnectedStartingAssetSchema,
@@ -20,34 +20,34 @@ import {
20
20
  DatasetWorkspaceValidationSchema,
21
21
  DatasetWorkspaceVersionsSchema,
22
22
  DatasetWorkspaceWriteSchema
23
- } from "./chunk-AG6UJ3DI.js";
23
+ } from "./chunk-YS7DF76T.js";
24
24
  import {
25
25
  compileTasksetDraftWorkspace
26
- } from "./chunk-BNBPKCIR.js";
26
+ } from "./chunk-DDCR4KB5.js";
27
27
  import {
28
28
  createTasksetDraftFile,
29
29
  createTasksetDraftWorkspace,
30
30
  decodeTasksetDraftFileContent,
31
31
  decodeTasksetDraftWorkspaceFile,
32
32
  validateTasksetDraftWorkspace
33
- } from "./chunk-Q4RGCEOI.js";
33
+ } from "./chunk-JOMZJXGC.js";
34
34
  import "./chunk-GWXJSBWR.js";
35
35
  import {
36
36
  TasksetDraftSchema,
37
37
  createTasksetDraft
38
- } from "./chunk-GCUWJUUM.js";
38
+ } from "./chunk-RTLJV4OS.js";
39
39
  import {
40
40
  TaskDataRecordSchema,
41
41
  TaskRequiredOutputSchema,
42
42
  TasksetEnvironmentContractSchema,
43
43
  TasksetSourceRefSchema
44
- } from "./chunk-ZQ6QTYRE.js";
44
+ } from "./chunk-GV6DEDBU.js";
45
45
  import "./chunk-TK3DXH7A.js";
46
46
  import {
47
47
  TasksetCatalogReleaseRefSchema
48
48
  } from "./chunk-Z252BNAZ.js";
49
- import "./chunk-H3367ISL.js";
50
49
  import "./chunk-QTNYXOJW.js";
50
+ import "./chunk-H3367ISL.js";
51
51
  import {
52
52
  ExperimentGraderPinSchema
53
53
  } from "./chunk-GS5HEE4M.js";
@@ -55,7 +55,9 @@ import "./chunk-ZRTNR4U7.js";
55
55
  import "./chunk-JMFYNIYZ.js";
56
56
  import "./chunk-MVAEE5EI.js";
57
57
  import "./chunk-CL3IOOVL.js";
58
- import "./chunk-B3ZHJ2KK.js";
58
+ import {
59
+ readBoundedJsonResponse
60
+ } from "./chunk-B3ZHJ2KK.js";
59
61
  import {
60
62
  contentHash
61
63
  } from "./chunk-H3JZ3P5T.js";
@@ -757,6 +759,64 @@ var OpenPondDatasetPreparationClient = class {
757
759
  }
758
760
  };
759
761
 
762
+ // src/dataset-workspace-error.ts
763
+ import { z as z4 } from "zod";
764
+ var Code = z4.enum([
765
+ "dataset_validation_failed",
766
+ "dataset_grader_invalid",
767
+ "dataset_grader_source_unavailable",
768
+ "dataset_feedback_key_conflict",
769
+ "dataset_request_invalid",
770
+ "dataset_request_failed",
771
+ "dataset_not_found",
772
+ "dataset_revision_conflict",
773
+ "dataset_operation_conflict",
774
+ "dataset_workspace_changed",
775
+ "dataset_validation_changed",
776
+ "dataset_source_context_immutable"
777
+ ]);
778
+ var Failure = z4.object({
779
+ code: Code,
780
+ // Bound the expected wire field, but never retain or display its contents.
781
+ message: z4.string().max(5e3).optional()
782
+ }).strict();
783
+ var validationGuidance = {
784
+ dataset_validation_failed: "Dataset validation failed. Review source privacy and licensing checks, required approved demonstrations, and attached graders before validating the saved revision again.",
785
+ dataset_grader_invalid: "Dataset grader validation failed. Review the attached graders and their checked fixtures before validating again.",
786
+ dataset_grader_source_unavailable: "An attached grader release is unavailable or has changed. Select the intended published grader release before validating again.",
787
+ dataset_feedback_key_conflict: "Attached graders use conflicting feedback keys. Choose distinct published grader feedback keys before validating again."
788
+ };
789
+ var DatasetWorkspaceRequestError = class extends Error {
790
+ constructor(status, code = "dataset_request_failed") {
791
+ const safeCode = Code.safeParse(code);
792
+ const value = safeCode.success ? safeCode.data : "dataset_request_failed";
793
+ super((status === 422 ? validationGuidance[value] : void 0) ?? `Dataset request failed (${status}).`);
794
+ this.status = status;
795
+ this.name = "DatasetWorkspaceRequestError";
796
+ this.code = value;
797
+ this.retryable = status === 408 || status === 429 || status >= 500;
798
+ this.outcomeUnknown = status === 408 || status >= 500;
799
+ }
800
+ status;
801
+ code;
802
+ retryable;
803
+ outcomeUnknown;
804
+ };
805
+ async function readDatasetWorkspaceFailure(response) {
806
+ let code = "dataset_request_failed";
807
+ try {
808
+ const mediaType = response.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase();
809
+ if (mediaType === "application/json") {
810
+ const parsed = Failure.safeParse(await readBoundedJsonResponse(response, 16 * 1024, "Dataset failure"));
811
+ if (parsed.success) code = parsed.data.code;
812
+ } else {
813
+ await response.body?.cancel();
814
+ }
815
+ } catch {
816
+ }
817
+ return new DatasetWorkspaceRequestError(response.status, code);
818
+ }
819
+
760
820
  // src/dataset-workspace-client.ts
761
821
  var OpenPondDatasetWorkspaceClient = class {
762
822
  constructor(options) {
@@ -919,7 +979,7 @@ var OpenPondDatasetWorkspaceClient = class {
919
979
  ...body === void 0 ? {} : { body: JSON.stringify(body) }
920
980
  }
921
981
  );
922
- if (!response.ok) throw new Error(`Dataset request failed (${response.status}).`);
982
+ if (!response.ok) throw await readDatasetWorkspaceFailure(response);
923
983
  if (maxResponseBytes !== void 0) {
924
984
  if (!response.body) throw new Error("Dataset response is empty.");
925
985
  const reader = response.body.getReader(), chunks = [];
@@ -950,31 +1010,31 @@ var OpenPondDatasetWorkspaceClient = class {
950
1010
 
951
1011
  // src/dataset-population.ts
952
1012
  import { TaskSplitSchema, TaskRecordSchema } from "@openpond/evals/tasksets";
953
- import { z as z4 } from "zod";
954
- var Id3 = z4.string().trim().min(1).max(500);
955
- var Hash2 = z4.string().regex(/^[a-f0-9]{64}$/);
956
- var DatasetPopulationQuerySchema = z4.object({
1013
+ import { z as z5 } from "zod";
1014
+ var Id3 = z5.string().trim().min(1).max(500);
1015
+ var Hash2 = z5.string().regex(/^[a-f0-9]{64}$/);
1016
+ var DatasetPopulationQuerySchema = z5.object({
957
1017
  release: TasksetCatalogReleaseRefSchema,
958
1018
  afterId: Id3.optional(),
959
- limit: z4.number().int().min(1).max(1e4).default(100),
960
- view: z4.enum(["ids", "policy"]).default("ids")
1019
+ limit: z5.number().int().min(1).max(1e4).default(100),
1020
+ view: z5.enum(["ids", "policy"]).default("ids")
961
1021
  }).strict().superRefine((query, context) => {
962
1022
  if (query.view === "policy" && query.limit > 100) context.addIssue({ code: "custom", path: ["limit"], message: "Policy previews are bounded to 100 tasks." });
963
1023
  });
964
- var TaskIdentity = z4.object({ id: TaskRecordSchema.shape.id, split: TaskSplitSchema }).strict();
1024
+ var TaskIdentity = z5.object({ id: TaskRecordSchema.shape.id, split: TaskSplitSchema }).strict();
965
1025
  var PolicyTask = TaskIdentity.extend({
966
- input: z4.record(z4.string(), z4.unknown()),
967
- policyVisibleContext: z4.record(z4.string(), z4.unknown()),
968
- artifacts: z4.array(z4.object({ id: Id3, path: z4.string(), mediaType: z4.string(), sizeBytes: z4.number().int().nonnegative() }).strict()).max(1e3)
1026
+ input: z5.record(z5.string(), z5.unknown()),
1027
+ policyVisibleContext: z5.record(z5.string(), z5.unknown()),
1028
+ artifacts: z5.array(z5.object({ id: Id3, path: z5.string(), mediaType: z5.string(), sizeBytes: z5.number().int().nonnegative() }).strict()).max(1e3)
969
1029
  }).strict();
970
- var DatasetPopulationPageSchema = z4.object({
971
- schemaVersion: z4.literal("openpond.datasetPopulationPage.v1"),
1030
+ var DatasetPopulationPageSchema = z5.object({
1031
+ schemaVersion: z5.literal("openpond.datasetPopulationPage.v1"),
972
1032
  teamId: Id3,
973
1033
  release: TasksetCatalogReleaseRefSchema,
974
1034
  view: DatasetPopulationQuerySchema.shape.view,
975
- taskCount: z4.number().int().nonnegative(),
976
- items: z4.array(z4.union([TaskIdentity, PolicyTask])).max(1e4),
977
- graders: z4.array(ExperimentGraderPinSchema).max(1e3),
1035
+ taskCount: z5.number().int().nonnegative(),
1036
+ items: z5.array(z5.union([TaskIdentity, PolicyTask])).max(1e4),
1037
+ graders: z5.array(ExperimentGraderPinSchema).max(1e3),
978
1038
  nextCursor: Id3.nullable(),
979
1039
  contentHash: Hash2
980
1040
  }).strict().superRefine((page, context) => {
@@ -1013,7 +1073,7 @@ var OpenPondDatasetPopulationClient = class {
1013
1073
  reader.releaseLock();
1014
1074
  }
1015
1075
  const raw = JSON.parse(source);
1016
- if (!response.ok) throw new Error(z4.object({ message: z4.string() }).passthrough().parse(raw).message);
1076
+ if (!response.ok) throw new Error(z5.object({ message: z5.string() }).passthrough().parse(raw).message);
1017
1077
  const page = DatasetPopulationPageSchema.parse(raw);
1018
1078
  const { contentHash: hash, ...content } = page;
1019
1079
  if (page.teamId !== this.options.teamId || contentHash(page.release) !== contentHash(query.release) || page.view !== query.view || page.items.length > query.limit || contentHash(content) !== hash || page.items.some((item, index) => query.afterId !== void 0 && item.id <= query.afterId || index > 0 && item.id <= page.items[index - 1].id) || page.nextCursor !== null && page.nextCursor !== page.items.at(-1)?.id) throw new Error("Dataset population identity, hash, order or bounds mismatch.");
@@ -1022,23 +1082,23 @@ var OpenPondDatasetPopulationClient = class {
1022
1082
  };
1023
1083
 
1024
1084
  // src/dataset-preparation-research-contracts.ts
1025
- import { z as z5 } from "zod";
1026
- var Id4 = z5.string().trim().min(1).max(240);
1027
- var Text = z5.string().trim().min(1).max(5e3);
1028
- var DatasetPreparationResearchCandidateSchema = z5.object({
1085
+ import { z as z6 } from "zod";
1086
+ var Id4 = z6.string().trim().min(1).max(240);
1087
+ var Text = z6.string().trim().min(1).max(5e3);
1088
+ var DatasetPreparationResearchCandidateSchema = z6.object({
1029
1089
  taskClass: DatasetPreparationTaskClassSchema,
1030
- objective: z5.string().trim().min(1).max(2e4),
1031
- sourceSpans: z5.array(PreparedTaskEvidenceSpanSchema).min(1).max(200),
1032
- firstAvailableAt: z5.iso.datetime(),
1033
- reconstruction: z5.object({
1034
- kind: z5.enum(["text_only", "pinned_repository", "pinned_artifact", "unsupported"]),
1035
- requiredAssets: z5.array(z5.object({ reference: Text, evidence: PreparedTaskEvidenceSpanSchema }).strict()).max(100),
1036
- missingEvidence: z5.array(Text).max(20)
1090
+ objective: z6.string().trim().min(1).max(2e4),
1091
+ sourceSpans: z6.array(PreparedTaskEvidenceSpanSchema).min(1).max(200),
1092
+ firstAvailableAt: z6.iso.datetime(),
1093
+ reconstruction: z6.object({
1094
+ kind: z6.enum(["text_only", "pinned_repository", "pinned_artifact", "unsupported"]),
1095
+ requiredAssets: z6.array(z6.object({ reference: Text, evidence: PreparedTaskEvidenceSpanSchema }).strict()).max(100),
1096
+ missingEvidence: z6.array(Text).max(20)
1037
1097
  }).strict(),
1038
- assessment: z5.object({
1039
- kind: z5.enum(["executable", "calibrated_judge", "unsupported"]),
1040
- requirements: z5.array(z5.object({ criterion: Text, evidence: PreparedTaskEvidenceSpanSchema }).strict()).min(1).max(20),
1041
- limitations: z5.array(Text).max(20)
1098
+ assessment: z6.object({
1099
+ kind: z6.enum(["executable", "calibrated_judge", "unsupported"]),
1100
+ requirements: z6.array(z6.object({ criterion: Text, evidence: PreparedTaskEvidenceSpanSchema }).strict()).min(1).max(20),
1101
+ limitations: z6.array(Text).max(20)
1042
1102
  }).strict()
1043
1103
  }).strict().superRefine((value, ctx) => {
1044
1104
  if (!value.sourceSpans.some((span) => span.role === "requirement"))
@@ -1046,18 +1106,18 @@ var DatasetPreparationResearchCandidateSchema = z5.object({
1046
1106
  if (value.assessment.requirements.some((item) => item.evidence.role !== "requirement"))
1047
1107
  ctx.addIssue({ code: "custom", message: "Assessment criteria must cite user requirements, not historical answers." });
1048
1108
  });
1049
- var DatasetPreparationResearchDecisionSchema = z5.object({
1050
- schemaVersion: z5.literal("openpond.datasetPreparationResearchDecision.v1"),
1109
+ var DatasetPreparationResearchDecisionSchema = z6.object({
1110
+ schemaVersion: z6.literal("openpond.datasetPreparationResearchDecision.v1"),
1051
1111
  sourceId: Id4,
1052
- snapshotHash: z5.string().regex(/^[a-f0-9]{64}$/),
1053
- candidates: z5.array(DatasetPreparationResearchCandidateSchema).max(100),
1054
- exclusions: z5.array(z5.object({ code: Id4, reason: Text, sourceSpans: z5.array(PreparedTaskEvidenceSpanSchema).max(200) }).strict()).max(100),
1055
- contextSummary: z5.string().max(2e4)
1112
+ snapshotHash: z6.string().regex(/^[a-f0-9]{64}$/),
1113
+ candidates: z6.array(DatasetPreparationResearchCandidateSchema).max(100),
1114
+ exclusions: z6.array(z6.object({ code: Id4, reason: Text, sourceSpans: z6.array(PreparedTaskEvidenceSpanSchema).max(200) }).strict()).max(100),
1115
+ contextSummary: z6.string().max(2e4)
1056
1116
  }).strict();
1057
1117
 
1058
1118
  // src/dataset-preparation-starting-state.ts
1059
- import { z as z6 } from "zod";
1060
- var Hash3 = z6.string().regex(/^[a-f0-9]{64}$/);
1119
+ import { z as z7 } from "zod";
1120
+ var Hash3 = z7.string().regex(/^[a-f0-9]{64}$/);
1061
1121
  function connectedStartingAssetReference(receiptId, path) {
1062
1122
  if (!/^starting-assets-[a-f0-9]{40}$/.test(receiptId)) throw new Error("Invalid starting asset receipt.");
1063
1123
  ConnectedStartingAssetSchema.shape.path.parse(path);
@@ -1070,11 +1130,11 @@ function parseConnectedStartingAssetReference(reference) {
1070
1130
  if (connectedStartingAssetReference(match[1], path) !== reference) throw new Error("Noncanonical starting asset reference.");
1071
1131
  return { receiptId: match[1], path };
1072
1132
  }
1073
- var PreparedRepositoryStartingStateSchema = z6.object({
1074
- schemaVersion: z6.literal("openpond.preparedRepositoryStartingState.v1"),
1075
- dependencyClosureQualified: z6.literal(false),
1076
- assets: z6.array(ConnectedStartingAssetSchema.extend({
1077
- receiptId: z6.string().regex(/^starting-assets-[a-f0-9]{40}$/),
1133
+ var PreparedRepositoryStartingStateSchema = z7.object({
1134
+ schemaVersion: z7.literal("openpond.preparedRepositoryStartingState.v1"),
1135
+ dependencyClosureQualified: z7.literal(false),
1136
+ assets: z7.array(ConnectedStartingAssetSchema.extend({
1137
+ receiptId: z7.string().regex(/^starting-assets-[a-f0-9]{40}$/),
1078
1138
  receiptHash: Hash3,
1079
1139
  source: ConnectedCaseRefSchema
1080
1140
  }).strict()).min(1).max(100)
@@ -1278,55 +1338,55 @@ function reconcilePreparationSourceCoverage(input) {
1278
1338
  }
1279
1339
 
1280
1340
  // src/dataset-preparation-qualification-contracts.ts
1281
- import { z as z7 } from "zod";
1282
- var Id5 = z7.string().trim().min(1).max(240);
1283
- var Text2 = z7.string().trim().min(1).max(2e4);
1284
- var PreparedQualificationWitnessSchema = z7.object({
1341
+ import { z as z8 } from "zod";
1342
+ var Id5 = z8.string().trim().min(1).max(240);
1343
+ var Text2 = z8.string().trim().min(1).max(2e4);
1344
+ var PreparedQualificationWitnessSchema = z8.object({
1285
1345
  id: Id5,
1286
- label: z7.enum(["positive", "incorrect", "incomplete", "adversarial"]),
1287
- output: z7.record(z7.string(), z7.unknown()),
1288
- artifacts: z7.array(z7.object({
1346
+ label: z8.enum(["positive", "incorrect", "incomplete", "adversarial"]),
1347
+ output: z8.record(z8.string(), z8.unknown()),
1348
+ artifacts: z8.array(z8.object({
1289
1349
  path: TaskRequiredOutputSchema.shape.path,
1290
1350
  mediaType: TaskRequiredOutputSchema.shape.mediaType,
1291
- base64: z7.string().max(8 * 1024 * 1024)
1351
+ base64: z8.string().max(8 * 1024 * 1024)
1292
1352
  }).strict()).max(100)
1293
1353
  }).strict().superRefine((value, ctx) => {
1294
1354
  if (new Set(value.artifacts.map((artifact) => artifact.path)).size !== value.artifacts.length)
1295
1355
  ctx.addIssue({ code: "custom", message: "Qualification artifacts must have distinct paths." });
1296
1356
  });
1297
- var PreparedQualificationPlanSchema = z7.object({
1298
- schemaVersion: z7.literal("openpond.preparedQualificationPlan.v1"),
1299
- requirementRefs: z7.array(Id5).min(1).max(100),
1300
- supported: z7.boolean(),
1301
- limitations: z7.array(Text2).max(20),
1302
- independentVerifier: z7.object({
1303
- runtime: z7.enum(["isolated_javascript", "sandbox_process"]),
1304
- source: z7.string().trim().min(1).max(2e5),
1305
- exportName: z7.literal("verify"),
1306
- timeoutMs: z7.number().int().min(1).max(6e4)
1357
+ var PreparedQualificationPlanSchema = z8.object({
1358
+ schemaVersion: z8.literal("openpond.preparedQualificationPlan.v1"),
1359
+ requirementRefs: z8.array(Id5).min(1).max(100),
1360
+ supported: z8.boolean(),
1361
+ limitations: z8.array(Text2).max(20),
1362
+ independentVerifier: z8.object({
1363
+ runtime: z8.enum(["isolated_javascript", "sandbox_process"]),
1364
+ source: z8.string().trim().min(1).max(2e5),
1365
+ exportName: z8.literal("verify"),
1366
+ timeoutMs: z8.number().int().min(1).max(6e4)
1307
1367
  }).strict().nullable(),
1308
- witnesses: z7.array(PreparedQualificationWitnessSchema).max(20)
1368
+ witnesses: z8.array(PreparedQualificationWitnessSchema).max(20)
1309
1369
  }).strict().superRefine((value, ctx) => {
1310
1370
  if (new Set(value.requirementRefs).size !== value.requirementRefs.length || new Set(value.witnesses.map((item) => item.id)).size !== value.witnesses.length)
1311
1371
  ctx.addIssue({ code: "custom", message: "Qualification evidence identities must be distinct." });
1312
1372
  if (value.supported && (!value.independentVerifier || value.limitations.length || ["positive", "incorrect", "incomplete", "adversarial"].some((label) => !value.witnesses.some((witness) => witness.label === label))))
1313
1373
  ctx.addIssue({ code: "custom", message: "Supported qualification needs a complete verifier and witness population without unresolved evidence gaps." });
1314
1374
  });
1315
- var PreparedWitnessAdjudicationSchema = z7.object({
1316
- schemaVersion: z7.literal("openpond.preparedWitnessAdjudication.v1"),
1317
- witnesses: z7.array(z7.object({
1375
+ var PreparedWitnessAdjudicationSchema = z8.object({
1376
+ schemaVersion: z8.literal("openpond.preparedWitnessAdjudication.v1"),
1377
+ witnesses: z8.array(z8.object({
1318
1378
  id: Id5,
1319
- failureMode: z7.enum(["none", "incorrect", "incomplete", "adversarial", "unverifiable"]),
1320
- requirements: z7.array(z7.object({ reference: Id5, status: z7.enum(["satisfied", "violated", "unverifiable"]), reason: Text2 }).strict()).min(1).max(100)
1379
+ failureMode: z8.enum(["none", "incorrect", "incomplete", "adversarial", "unverifiable"]),
1380
+ requirements: z8.array(z8.object({ reference: Id5, status: z8.enum(["satisfied", "violated", "unverifiable"]), reason: Text2 }).strict()).min(1).max(100)
1321
1381
  }).strict()).min(4).max(20)
1322
1382
  }).strict();
1323
- var PreparedCheckerAuditSchema = z7.object({
1324
- schemaVersion: z7.literal("openpond.preparedCheckerAudit.v1"),
1325
- requirements: z7.array(z7.object({ reference: Id5, adequatelyChecked: z7.boolean(), oracleAdequatelyChecked: z7.boolean(), reason: Text2 }).strict()).min(1).max(100),
1326
- executionIsolationPassed: z7.boolean(),
1327
- futureEvidenceLeak: z7.boolean(),
1328
- unresolvedLimitations: z7.array(Text2).max(20),
1329
- passed: z7.boolean()
1383
+ var PreparedCheckerAuditSchema = z8.object({
1384
+ schemaVersion: z8.literal("openpond.preparedCheckerAudit.v1"),
1385
+ requirements: z8.array(z8.object({ reference: Id5, adequatelyChecked: z8.boolean(), oracleAdequatelyChecked: z8.boolean(), reason: Text2 }).strict()).min(1).max(100),
1386
+ executionIsolationPassed: z8.boolean(),
1387
+ futureEvidenceLeak: z8.boolean(),
1388
+ unresolvedLimitations: z8.array(Text2).max(20),
1389
+ passed: z8.boolean()
1330
1390
  }).strict();
1331
1391
 
1332
1392
  // src/dataset-preparation-assembly.ts
@@ -1454,6 +1514,7 @@ export {
1454
1514
  DatasetWorkspaceOperationResultSchema,
1455
1515
  DatasetWorkspacePublishSchema,
1456
1516
  DatasetWorkspaceReceiptSchema,
1517
+ DatasetWorkspaceRequestError,
1457
1518
  DatasetWorkspaceValidationSchema,
1458
1519
  DatasetWorkspaceVersionsSchema,
1459
1520
  DatasetWorkspaceWriteSchema,