openpond-sdk 0.12.13 → 0.12.15

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 (301) hide show
  1. package/TRAINING_WORKFLOWS.md +497 -4
  2. package/dist/advanced-refiner-evaluations.js +7 -7
  3. package/dist/candidate-evaluations.js +6 -6
  4. package/dist/{chunk-TLSP5JKG.js → chunk-3BYFS4RO.js} +2 -2
  5. package/dist/{chunk-XRBM6PBD.js → chunk-3MDNVNBM.js} +5 -5
  6. package/dist/{chunk-CNREFTAV.js → chunk-3VUF5H3B.js} +2 -2
  7. package/dist/{chunk-LHHHJIDR.js → chunk-626JLH4D.js} +2 -2
  8. package/dist/{chunk-Q4TKI2MV.js → chunk-774OWTCD.js} +63 -80
  9. package/dist/chunk-774OWTCD.js.map +1 -0
  10. package/dist/{chunk-HAQPGTQ4.js → chunk-7F43U2NC.js} +2 -2
  11. package/dist/{chunk-ORYA2G7S.js → chunk-7G47YXQT.js} +3 -3
  12. package/dist/{chunk-XMVSQIK4.js → chunk-AG6UJ3DI.js} +2 -2
  13. package/dist/chunk-EBB36D5X.js +866 -0
  14. package/dist/chunk-EBB36D5X.js.map +1 -0
  15. package/dist/{chunk-JBYFD3QS.js → chunk-GBDBKGXW.js} +3 -3
  16. package/dist/{chunk-GHPCQXG5.js → chunk-GCUWJUUM.js} +2 -2
  17. package/dist/{chunk-C4W2MEFP.js → chunk-GS5HEE4M.js} +2 -2
  18. package/dist/{chunk-ATVQQCYN.js → chunk-GWXJSBWR.js} +2 -2
  19. package/dist/{chunk-RLW4Y5ZV.js → chunk-JMFYNIYZ.js} +4 -3
  20. package/dist/chunk-JMFYNIYZ.js.map +1 -0
  21. package/dist/{chunk-UOV2LEXS.js → chunk-MVAEE5EI.js} +60 -3
  22. package/dist/chunk-MVAEE5EI.js.map +1 -0
  23. package/dist/{chunk-KOJC3TH4.js → chunk-OBI2MQYU.js} +6 -6
  24. package/dist/chunk-PMVSO23F.js +65 -0
  25. package/dist/chunk-PMVSO23F.js.map +1 -0
  26. package/dist/{chunk-JDQVAG3R.js → chunk-Q4RGCEOI.js} +3 -3
  27. package/dist/{chunk-YIGFQWZV.js → chunk-QIGMNB6M.js} +3 -3
  28. package/dist/{chunk-O3NOGKMT.js → chunk-QNOCM5JX.js} +2 -2
  29. package/dist/{chunk-2LVR24GU.js → chunk-QOX57Y27.js} +6 -6
  30. package/dist/chunk-QTNYXOJW.js +27 -0
  31. package/dist/chunk-QTNYXOJW.js.map +1 -0
  32. package/dist/{chunk-UWY5PUHR.js → chunk-RN5MK7NH.js} +2 -2
  33. package/dist/{chunk-47I6LT4X.js → chunk-RT7SQHO4.js} +271 -7
  34. package/dist/chunk-RT7SQHO4.js.map +1 -0
  35. package/dist/chunk-UVQENVTW.js +85 -0
  36. package/dist/chunk-UVQENVTW.js.map +1 -0
  37. package/dist/{chunk-7BYLH47N.js → chunk-VPK3SM45.js} +15 -3
  38. package/dist/{chunk-7BYLH47N.js.map → chunk-VPK3SM45.js.map} +1 -1
  39. package/dist/{chunk-RN5G3DQN.js → chunk-WM3U4RPZ.js} +6 -6
  40. package/dist/{chunk-IFBCLRBM.js → chunk-ZQ6QTYRE.js} +2 -2
  41. package/dist/{chunk-IFBCLRBM.js.map → chunk-ZQ6QTYRE.js.map} +1 -1
  42. package/dist/{chunk-K54BDIKL.js → chunk-ZQFROKKS.js} +3 -3
  43. package/dist/{chunk-ZYDDHHZZ.js → chunk-ZRTNR4U7.js} +3 -3
  44. package/dist/connected-evidence.js +9 -17
  45. package/dist/dataset-workspaces.js +12 -17
  46. package/dist/dataset-workspaces.js.map +1 -1
  47. package/dist/errors.js +3 -3
  48. package/dist/experiment-evaluation-schedules.js +18 -21
  49. package/dist/experiment-improvements.js +9 -8
  50. package/dist/experiments.js +17 -20
  51. package/dist/index.js +25 -27
  52. package/dist/index.js.map +1 -1
  53. package/dist/model-projects.js +1 -1
  54. package/dist/model-starter-attempts.js +2 -2
  55. package/dist/model-starter-catalog.js +4 -12
  56. package/dist/model-starter-catalog.js.map +1 -1
  57. package/dist/model-starters.js +4 -12
  58. package/dist/model-taskset-runs.js +3 -3
  59. package/dist/post-training.js +6 -6
  60. package/dist/taskset-drafts.js +6 -15
  61. package/dist/taskset-drafts.js.map +1 -1
  62. package/dist/taskset-packages.js +28 -18
  63. package/dist/tool-learning-local-store.js +2 -1
  64. package/dist/tool-learning-local-store.js.map +1 -1
  65. package/dist/training-bundle.js +33 -32
  66. package/dist/training-bundle.js.map +1 -1
  67. package/dist/training.js +8483 -49
  68. package/dist/training.js.map +1 -1
  69. package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts +87 -6
  70. package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts.map +1 -1
  71. package/dist/types/packages/cloud/src/sandbox/types/io.d.ts +3 -0
  72. package/dist/types/packages/cloud/src/sandbox/types/io.d.ts.map +1 -1
  73. package/dist/types/packages/sdk/src/activation-experiment-draft.d.ts +70 -0
  74. package/dist/types/packages/sdk/src/activation-experiment-draft.d.ts.map +1 -0
  75. package/dist/types/packages/sdk/src/activation-form-compiler.d.ts +25 -0
  76. package/dist/types/packages/sdk/src/activation-form-compiler.d.ts.map +1 -0
  77. package/dist/types/packages/sdk/src/activation-reference.d.ts +347 -0
  78. package/dist/types/packages/sdk/src/activation-reference.d.ts.map +1 -0
  79. package/dist/types/packages/sdk/src/activation-result-comparison.d.ts +185 -0
  80. package/dist/types/packages/sdk/src/activation-result-comparison.d.ts.map +1 -0
  81. package/dist/types/packages/sdk/src/alphaedit-artifact.d.ts +872 -0
  82. package/dist/types/packages/sdk/src/alphaedit-artifact.d.ts.map +1 -0
  83. package/dist/types/packages/sdk/src/alphaedit-experiment-draft.d.ts +123 -0
  84. package/dist/types/packages/sdk/src/alphaedit-experiment-draft.d.ts.map +1 -0
  85. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts +3218 -0
  86. package/dist/types/packages/sdk/src/alphaedit-model-serving.d.ts.map +1 -0
  87. package/dist/types/packages/sdk/src/alphaedit.d.ts +258 -0
  88. package/dist/types/packages/sdk/src/alphaedit.d.ts.map +1 -0
  89. package/dist/types/packages/sdk/src/dataset-training-review-contracts.d.ts +181 -0
  90. package/dist/types/packages/sdk/src/dataset-training-review-contracts.d.ts.map +1 -0
  91. package/dist/types/packages/sdk/src/dataset-training-review-files.d.ts +17 -0
  92. package/dist/types/packages/sdk/src/dataset-training-review-files.d.ts.map +1 -0
  93. package/dist/types/packages/sdk/src/dataset-training-review-preparation.d.ts +541 -0
  94. package/dist/types/packages/sdk/src/dataset-training-review-preparation.d.ts.map +1 -0
  95. package/dist/types/packages/sdk/src/dataset-training-review-source.d.ts +41 -0
  96. package/dist/types/packages/sdk/src/dataset-training-review-source.d.ts.map +1 -0
  97. package/dist/types/packages/sdk/src/dataset-training-review.d.ts +79 -0
  98. package/dist/types/packages/sdk/src/dataset-training-review.d.ts.map +1 -0
  99. package/dist/types/packages/sdk/src/decision-experiment-authoring.d.ts +11 -0
  100. package/dist/types/packages/sdk/src/decision-experiment-authoring.d.ts.map +1 -0
  101. package/dist/types/packages/sdk/src/decision-experiment-draft.d.ts +150 -0
  102. package/dist/types/packages/sdk/src/decision-experiment-draft.d.ts.map +1 -0
  103. package/dist/types/packages/sdk/src/decision-model-artifact.d.ts +541 -0
  104. package/dist/types/packages/sdk/src/decision-model-artifact.d.ts.map +1 -0
  105. package/dist/types/packages/sdk/src/decision-model-data.d.ts +588 -0
  106. package/dist/types/packages/sdk/src/decision-model-data.d.ts.map +1 -0
  107. package/dist/types/packages/sdk/src/decision-model-scoring.d.ts +1587 -0
  108. package/dist/types/packages/sdk/src/decision-model-scoring.d.ts.map +1 -0
  109. package/dist/types/packages/sdk/src/decision-model-serving.d.ts +5328 -0
  110. package/dist/types/packages/sdk/src/decision-model-serving.d.ts.map +1 -0
  111. package/dist/types/packages/sdk/src/decision-model-training.d.ts +871 -0
  112. package/dist/types/packages/sdk/src/decision-model-training.d.ts.map +1 -0
  113. package/dist/types/packages/sdk/src/decision-model-version.d.ts +2971 -0
  114. package/dist/types/packages/sdk/src/decision-model-version.d.ts.map +1 -0
  115. package/dist/types/packages/sdk/src/decision-model.d.ts +241 -0
  116. package/dist/types/packages/sdk/src/decision-model.d.ts.map +1 -0
  117. package/dist/types/packages/sdk/src/engram-adapter.d.ts +788 -0
  118. package/dist/types/packages/sdk/src/engram-adapter.d.ts.map +1 -0
  119. package/dist/types/packages/sdk/src/engram-experiment-authoring.d.ts +14 -0
  120. package/dist/types/packages/sdk/src/engram-experiment-authoring.d.ts.map +1 -0
  121. package/dist/types/packages/sdk/src/engram-experiment-draft.d.ts +92 -0
  122. package/dist/types/packages/sdk/src/engram-experiment-draft.d.ts.map +1 -0
  123. package/dist/types/packages/sdk/src/engram-inference.d.ts +180 -0
  124. package/dist/types/packages/sdk/src/engram-inference.d.ts.map +1 -0
  125. package/dist/types/packages/sdk/src/engram-model-serving.d.ts +2183 -0
  126. package/dist/types/packages/sdk/src/engram-model-serving.d.ts.map +1 -0
  127. package/dist/types/packages/sdk/src/engram-model-version.d.ts +1335 -0
  128. package/dist/types/packages/sdk/src/engram-model-version.d.ts.map +1 -0
  129. package/dist/types/packages/sdk/src/evaluation-experiment-draft.d.ts +1009 -0
  130. package/dist/types/packages/sdk/src/evaluation-experiment-draft.d.ts.map +1 -0
  131. package/dist/types/packages/sdk/src/experiment-client.d.ts +686 -686
  132. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts +11638 -0
  133. package/dist/types/packages/sdk/src/experiment-draft-storage.d.ts.map +1 -0
  134. package/dist/types/packages/sdk/src/experiment-result-reference.d.ts +288 -0
  135. package/dist/types/packages/sdk/src/experiment-result-reference.d.ts.map +1 -0
  136. package/dist/types/packages/sdk/src/experiment-run-details.d.ts +7 -7
  137. package/dist/types/packages/sdk/src/experiment-starting-model.d.ts +911 -0
  138. package/dist/types/packages/sdk/src/experiment-starting-model.d.ts.map +1 -0
  139. package/dist/types/packages/sdk/src/hosted-evaluation-experiment-draft.d.ts +693 -0
  140. package/dist/types/packages/sdk/src/hosted-evaluation-experiment-draft.d.ts.map +1 -0
  141. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts +3152 -0
  142. package/dist/types/packages/sdk/src/managed-alphaedit-executions.d.ts.map +1 -0
  143. package/dist/types/packages/sdk/src/managed-compute-price.d.ts +50 -0
  144. package/dist/types/packages/sdk/src/managed-compute-price.d.ts.map +1 -0
  145. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts +6755 -0
  146. package/dist/types/packages/sdk/src/managed-decision-executions.d.ts.map +1 -0
  147. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts +2774 -0
  148. package/dist/types/packages/sdk/src/managed-engram-executions.d.ts.map +1 -0
  149. package/dist/types/packages/sdk/src/managed-modification-compilation.d.ts +523 -0
  150. package/dist/types/packages/sdk/src/managed-modification-compilation.d.ts.map +1 -0
  151. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts +1470 -0
  152. package/dist/types/packages/sdk/src/managed-modification-executions.d.ts.map +1 -0
  153. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts +3447 -0
  154. package/dist/types/packages/sdk/src/managed-neuron-training-executions.d.ts.map +1 -0
  155. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts +228 -0
  156. package/dist/types/packages/sdk/src/managed-serving-usage.d.ts.map +1 -0
  157. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts +26 -26
  158. package/dist/types/packages/sdk/src/managed-training-preparation.d.ts.map +1 -1
  159. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts +11 -0
  160. package/dist/types/packages/sdk/src/model-batch-review-contracts.d.ts.map +1 -1
  161. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts +10 -0
  162. package/dist/types/packages/sdk/src/model-batch-review-preparation.d.ts.map +1 -1
  163. package/dist/types/packages/sdk/src/model-batch-review.d.ts +21 -0
  164. package/dist/types/packages/sdk/src/model-batch-review.d.ts.map +1 -1
  165. package/dist/types/packages/sdk/src/model-learning-policy.d.ts +9 -0
  166. package/dist/types/packages/sdk/src/model-learning-policy.d.ts.map +1 -1
  167. package/dist/types/packages/sdk/src/model-modification-capabilities.d.ts +323 -0
  168. package/dist/types/packages/sdk/src/model-modification-capabilities.d.ts.map +1 -0
  169. package/dist/types/packages/sdk/src/model-serving-pool.d.ts +28 -0
  170. package/dist/types/packages/sdk/src/model-serving-pool.d.ts.map +1 -0
  171. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts +22 -0
  172. package/dist/types/packages/sdk/src/model-starter-attempts.d.ts.map +1 -1
  173. package/dist/types/packages/sdk/src/model-taskset-runs.d.ts +216 -216
  174. package/dist/types/packages/sdk/src/modification-recordings.d.ts +1303 -0
  175. package/dist/types/packages/sdk/src/modification-recordings.d.ts.map +1 -0
  176. package/dist/types/packages/sdk/src/neuron-calibration-records.d.ts +816 -0
  177. package/dist/types/packages/sdk/src/neuron-calibration-records.d.ts.map +1 -0
  178. package/dist/types/packages/sdk/src/neuron-residual-calibration.d.ts +189 -0
  179. package/dist/types/packages/sdk/src/neuron-residual-calibration.d.ts.map +1 -0
  180. package/dist/types/packages/sdk/src/neuron-steering.d.ts +260 -0
  181. package/dist/types/packages/sdk/src/neuron-steering.d.ts.map +1 -0
  182. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts +517 -0
  183. package/dist/types/packages/sdk/src/neuron-training-artifact.d.ts.map +1 -0
  184. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts +172 -0
  185. package/dist/types/packages/sdk/src/neuron-training-experiment-draft.d.ts.map +1 -0
  186. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts +3502 -0
  187. package/dist/types/packages/sdk/src/neuron-training-model-serving.d.ts.map +1 -0
  188. package/dist/types/packages/sdk/src/neuron-training-result.d.ts +590 -0
  189. package/dist/types/packages/sdk/src/neuron-training-result.d.ts.map +1 -0
  190. package/dist/types/packages/sdk/src/neuron-training.d.ts +260 -0
  191. package/dist/types/packages/sdk/src/neuron-training.d.ts.map +1 -0
  192. package/dist/types/packages/sdk/src/post-training.d.ts +21 -0
  193. package/dist/types/packages/sdk/src/post-training.d.ts.map +1 -1
  194. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts +10 -0
  195. package/dist/types/packages/sdk/src/profile-external-dataset-package.d.ts.map +1 -1
  196. package/dist/types/packages/sdk/src/steering-experiment-authoring.d.ts +15 -0
  197. package/dist/types/packages/sdk/src/steering-experiment-authoring.d.ts.map +1 -0
  198. package/dist/types/packages/sdk/src/steering-experiment-source-verification.d.ts +97 -0
  199. package/dist/types/packages/sdk/src/steering-experiment-source-verification.d.ts.map +1 -0
  200. package/dist/types/packages/sdk/src/steering-experiment-source.d.ts +29 -0
  201. package/dist/types/packages/sdk/src/steering-experiment-source.d.ts.map +1 -0
  202. package/dist/types/packages/sdk/src/steering-inference.d.ts +224 -0
  203. package/dist/types/packages/sdk/src/steering-inference.d.ts.map +1 -0
  204. package/dist/types/packages/sdk/src/steering-model-selection.d.ts +15 -0
  205. package/dist/types/packages/sdk/src/steering-model-selection.d.ts.map +1 -0
  206. package/dist/types/packages/sdk/src/steering-model-serving.d.ts +8759 -0
  207. package/dist/types/packages/sdk/src/steering-model-serving.d.ts.map +1 -0
  208. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts +7892 -0
  209. package/dist/types/packages/sdk/src/steering-profile-publication.d.ts.map +1 -0
  210. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts +20 -0
  211. package/dist/types/packages/sdk/src/taskset-draft-package-compiler.d.ts.map +1 -1
  212. package/dist/types/packages/sdk/src/taskset-package-client.d.ts +40 -0
  213. package/dist/types/packages/sdk/src/taskset-package-client.d.ts.map +1 -1
  214. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts +20 -0
  215. package/dist/types/packages/sdk/src/taskset-package-contracts.d.ts.map +1 -1
  216. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts +20 -0
  217. package/dist/types/packages/sdk/src/taskset-package-learning.d.ts.map +1 -1
  218. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts +10 -0
  219. package/dist/types/packages/sdk/src/taskset-package-projection.d.ts.map +1 -1
  220. package/dist/types/packages/sdk/src/taskset-packages.d.ts +4 -0
  221. package/dist/types/packages/sdk/src/taskset-packages.d.ts.map +1 -1
  222. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts +2 -0
  223. package/dist/types/packages/sdk/src/tool-learning-local-store.d.ts.map +1 -1
  224. package/dist/types/packages/sdk/src/training-compute-selection.d.ts +186 -1
  225. package/dist/types/packages/sdk/src/training-compute-selection.d.ts.map +1 -1
  226. package/dist/types/packages/sdk/src/training-estimate-workload.d.ts +185 -0
  227. package/dist/types/packages/sdk/src/training-estimate-workload.d.ts.map +1 -0
  228. package/dist/types/packages/sdk/src/training-estimates.d.ts +185 -0
  229. package/dist/types/packages/sdk/src/training-estimates.d.ts.map +1 -1
  230. package/dist/types/packages/sdk/src/training-executions.d.ts +275 -0
  231. package/dist/types/packages/sdk/src/training-executions.d.ts.map +1 -0
  232. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts +5957 -0
  233. package/dist/types/packages/sdk/src/training-experiment-setup.d.ts.map +1 -0
  234. package/dist/types/packages/sdk/src/training-funding.d.ts +153 -0
  235. package/dist/types/packages/sdk/src/training-funding.d.ts.map +1 -0
  236. package/dist/types/packages/sdk/src/training-hardware-catalog.d.ts +155 -0
  237. package/dist/types/packages/sdk/src/training-hardware-catalog.d.ts.map +1 -0
  238. package/dist/types/packages/sdk/src/training-job-contracts.d.ts +1535 -0
  239. package/dist/types/packages/sdk/src/training-job-contracts.d.ts.map +1 -0
  240. package/dist/types/packages/sdk/src/training-learning-batch.d.ts +40 -40
  241. package/dist/types/packages/sdk/src/training-model-save.d.ts +2466 -0
  242. package/dist/types/packages/sdk/src/training-model-save.d.ts.map +1 -0
  243. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts +397 -0
  244. package/dist/types/packages/sdk/src/training-model-serving-control.d.ts.map +1 -0
  245. package/dist/types/packages/sdk/src/training-model-serving.d.ts +2662 -0
  246. package/dist/types/packages/sdk/src/training-model-serving.d.ts.map +1 -0
  247. package/dist/types/packages/sdk/src/training-preparations.d.ts +1001 -0
  248. package/dist/types/packages/sdk/src/training-preparations.d.ts.map +1 -1
  249. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts +1 -1
  250. package/dist/types/packages/sdk/src/training-qualification-preparation.d.ts.map +1 -1
  251. package/dist/types/packages/sdk/src/training-result.d.ts +4577 -0
  252. package/dist/types/packages/sdk/src/training-result.d.ts.map +1 -0
  253. package/dist/types/packages/sdk/src/training-usage-funding.d.ts +273 -0
  254. package/dist/types/packages/sdk/src/training-usage-funding.d.ts.map +1 -0
  255. package/dist/types/packages/sdk/src/training-usage-status.d.ts +27 -0
  256. package/dist/types/packages/sdk/src/training-usage-status.d.ts.map +1 -0
  257. package/dist/types/packages/sdk/src/training.d.ts +18309 -3682
  258. package/dist/types/packages/sdk/src/training.d.ts.map +1 -1
  259. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts +23 -0
  260. package/dist/types/packages/sdk/src/weight-experiment-authoring.d.ts.map +1 -0
  261. package/dist/types/packages/sdk/src/weight-inference.d.ts +155 -0
  262. package/dist/types/packages/sdk/src/weight-inference.d.ts.map +1 -0
  263. package/dist/types/packages/sdk/src/weight-model-versions.d.ts +4578 -0
  264. package/dist/types/packages/sdk/src/weight-model-versions.d.ts.map +1 -0
  265. package/fixtures/python-foundation/activation-reference-workflow.json +6403 -0
  266. package/fixtures/python-foundation/dataset-training-review-http-workflow.json +62 -0
  267. package/fixtures/python-foundation/operation-matrix.json +1410 -220
  268. package/fixtures/python-foundation/schemas.json +59491 -25928
  269. package/fixtures/python-foundation/training-estimate-http-workflow.json +100 -0
  270. package/fixtures/python-foundation/training-funding-http-workflow.json +61 -0
  271. package/fixtures/python-foundation/training-model-save-http-workflow.json +302 -0
  272. package/fixtures/python-foundation/training-model-serving-control-http-workflow.json +1633 -0
  273. package/fixtures/python-foundation/training-model-serving-http-workflow.json +1181 -0
  274. package/fixtures/python-foundation/training-result-http-workflow.json +230 -0
  275. package/package.json +3 -3
  276. package/dist/chunk-47I6LT4X.js.map +0 -1
  277. package/dist/chunk-GJRXJL6G.js +0 -1528
  278. package/dist/chunk-GJRXJL6G.js.map +0 -1
  279. package/dist/chunk-Q4TKI2MV.js.map +0 -1
  280. package/dist/chunk-RLW4Y5ZV.js.map +0 -1
  281. package/dist/chunk-UOV2LEXS.js.map +0 -1
  282. /package/dist/{chunk-TLSP5JKG.js.map → chunk-3BYFS4RO.js.map} +0 -0
  283. /package/dist/{chunk-XRBM6PBD.js.map → chunk-3MDNVNBM.js.map} +0 -0
  284. /package/dist/{chunk-CNREFTAV.js.map → chunk-3VUF5H3B.js.map} +0 -0
  285. /package/dist/{chunk-LHHHJIDR.js.map → chunk-626JLH4D.js.map} +0 -0
  286. /package/dist/{chunk-HAQPGTQ4.js.map → chunk-7F43U2NC.js.map} +0 -0
  287. /package/dist/{chunk-ORYA2G7S.js.map → chunk-7G47YXQT.js.map} +0 -0
  288. /package/dist/{chunk-XMVSQIK4.js.map → chunk-AG6UJ3DI.js.map} +0 -0
  289. /package/dist/{chunk-JBYFD3QS.js.map → chunk-GBDBKGXW.js.map} +0 -0
  290. /package/dist/{chunk-GHPCQXG5.js.map → chunk-GCUWJUUM.js.map} +0 -0
  291. /package/dist/{chunk-C4W2MEFP.js.map → chunk-GS5HEE4M.js.map} +0 -0
  292. /package/dist/{chunk-ATVQQCYN.js.map → chunk-GWXJSBWR.js.map} +0 -0
  293. /package/dist/{chunk-KOJC3TH4.js.map → chunk-OBI2MQYU.js.map} +0 -0
  294. /package/dist/{chunk-JDQVAG3R.js.map → chunk-Q4RGCEOI.js.map} +0 -0
  295. /package/dist/{chunk-YIGFQWZV.js.map → chunk-QIGMNB6M.js.map} +0 -0
  296. /package/dist/{chunk-O3NOGKMT.js.map → chunk-QNOCM5JX.js.map} +0 -0
  297. /package/dist/{chunk-2LVR24GU.js.map → chunk-QOX57Y27.js.map} +0 -0
  298. /package/dist/{chunk-UWY5PUHR.js.map → chunk-RN5MK7NH.js.map} +0 -0
  299. /package/dist/{chunk-RN5G3DQN.js.map → chunk-WM3U4RPZ.js.map} +0 -0
  300. /package/dist/{chunk-K54BDIKL.js.map → chunk-ZQFROKKS.js.map} +0 -0
  301. /package/dist/{chunk-ZYDDHHZZ.js.map → chunk-ZRTNR4U7.js.map} +0 -0
@@ -27,10 +27,13 @@ Persist operation IDs and immutable request bytes before a write. On a timeout
27
27
  or lost response, reconcile the same preparation/operation and current revision;
28
28
  do not mint another identity. A submitted preparation contains its durable job
29
29
  ID. Use existing Dataset operation-result reads for uncertain authoring writes.
30
- Expected revisions, plan hashes and model ETags remain required. The existing
31
- estimate client currently lacks a hosted endpoint and is excluded from the runnable
32
- base workflow; its schema does not establish availability. No estimate backend is
33
- added here. A catalog read does not reserve capacity or increase spending approval.
30
+ Expected revisions, plan hashes and model ETags remain required. Estimate availability and measured coverage depend on the configured host.
31
+ `estimate()` is a read-only POST for exact preparation, configuration or submission
32
+ inputs. It returns current GPU/disk rates and explicit unknowns when calibrated
33
+ cost or duration evidence is missing. A configuration estimate does not prepare a
34
+ batch. Carry a preparation estimate's `review` into `startPreparation`; admission
35
+ checks its exact input, actor, runtime, provider scope, expiry and reviewed rate.
36
+ It reserves neither money nor capacity and does not raise the approved cap.
34
37
 
35
38
  Follow each page's `nextCursor` using the same scope/filter and supplied limits.
36
39
  Do not treat a partial page or a transient request failure as an empty result.
@@ -38,8 +41,135 @@ Acceptance groups, evaluation task pages, candidate decisions and output hashes
38
41
  retain their existing SDK identity checks. Candidate acceptance is distinct from
39
42
  serving activation, which requires its existing explicit controls.
40
43
 
44
+ ## Standalone experiment drafts
45
+
46
+ The draft client surface stores creator-owned authoring documents independently
47
+ of chats, model configurations and training Jobs. Host deployment of the draft
48
+ routes is required. Saving does not validate execution availability, reserve
49
+ credits, stage data or start compute.
50
+
51
+ Evaluation authoring uses `evaluationForm` for its editable settings, exact
52
+ Dataset/task selection, released graders and mappings, optional source run, and
53
+ execution location. Training authoring uses `trainingForm`. Cleared evaluation
54
+ numeric controls remain `null`; blank training spend fields remain strings.
55
+ These incomplete values can be retained without becoming executable requests.
56
+
57
+ Use `training.saveExperimentDraft(request)` with
58
+ `schemaVersion: "openpond.experimentDraftSave.v1"`, `teamId`, a stable
59
+ `operationId`, `expectedRevision`, optional `projectId`, and an
60
+ `ExperimentDraftSchema` document. Revision zero creates a draft. A later save
61
+ uses the revision returned by `getExperimentDraft(teamId, id)`. Explicitly retry
62
+ the same operation/request after an uncertain response; its original receipt
63
+ remains unchanged after later edits. Changed inputs require a new operation ID.
64
+ Do not silently replace a newer draft after a revision conflict.
65
+
66
+ `listExperimentDrafts(teamId, filters)` supports Project, literal name search,
67
+ archive state and bounded cursor pagination. Cursors are scoped to the current
68
+ creator/workspace and filters. `archiveExperimentDraft(id, control)` retains
69
+ history and requires its own operation ID and expected revision. Saving an
70
+ archived document at its current revision explicitly restores it. Each read and
71
+ receipt verifies the retained document hash and requested scope.
72
+
73
+ Native Python exposes `save_experiment_draft`, `get_experiment_draft`,
74
+ `list_experiment_drafts` and `archive_experiment_draft` in both clients. The
75
+ corresponding official CLI commands are:
76
+
77
+ ```sh
78
+ openpond training hosted-drafts --team-id TEAM --json
79
+ openpond training hosted-draft DRAFT --team-id TEAM --json
80
+ openpond training hosted-save-draft draft.json --team-id TEAM --json
81
+ openpond training hosted-archive-draft DRAFT --team-id TEAM --operation-id OPERATION --expected-revision 2 --json
82
+ ```
83
+
84
+ A draft ID identifies an editable authoring record. An execution ID identifies
85
+ an immutable run; neither is a substitute for the other.
86
+
41
87
  ## Manual reviewed-batch workflow
42
88
 
89
+ ### Credit coverage and Billing handoff
90
+
91
+ On hosts implementing these endpoints, `training.funding(request)` checks the
92
+ entire `maximumSpendUsd` against current included/prepaid usage and member limits.
93
+ Use `schemaVersion: "openpond.trainingFundingRequest.v1"`, `teamId`, the positive
94
+ cap and optionally an exact saved draft reference. Restricted viewers receive
95
+ coverage status without account balances. This observation expires quickly and
96
+ does not reserve credit or authorize a Job.
97
+
98
+ After saving the draft, `training.fundingHandoff(request)` accepts
99
+ `schemaVersion: "openpond.trainingFundingHandoffRequest.v1"`, `teamId`,
100
+ `maximumSpendUsd` and the required `draft: { id, revision, contentHash, projectId }`.
101
+ Changed revisions, caps or ownership are rejected. Current purchase permission
102
+ controls whether a grantless Billing URL is returned; normal Web sign-in remains
103
+ required. Native Python uses `client.training.funding(...)` and
104
+ `client.training.funding_handoff(...)` with the same inputs, in sync and async
105
+ clients. The CLI exposes `hosted-funding` and `hosted-funding-handoff`.
106
+
107
+ Keep the original experiment open while Billing is used separately. On return,
108
+ verify the saved draft, recheck settled credits and refresh the exact preparation
109
+ estimate before explicit Start. Pending payments and card setup add no spendable
110
+ credit; a completed purchase never starts training automatically. Hosted
111
+ deployment and complete financial/UI qualification remain pending.
112
+
113
+ ### Authoring and preparation
114
+
115
+ `ExperimentDraftSchema` (from `openpond-sdk/training`) describes an incomplete
116
+ authoring snapshot with its own identity, an `evaluate`, `sft` or `grpo` type,
117
+ name and optional canonical training inputs/settings. Chat can retain this
118
+ snapshot before a dataset or chat session exists. The native Python schema
119
+ inventory includes the same draft shape. A draft is not a preparation or run;
120
+ its identity does not grant access to referenced models or inputs. Validate and
121
+ authorize the complete request through preparation before execution.
122
+
123
+ The optional `trainingForm` preserves editable model/recipe/input references,
124
+ validation split, name and spend text, including blank fields. It is distinct
125
+ from a valid submission: saving a blank spend field never supplies a spending
126
+ authorization. `TrainingExperimentFormDraftSchema` describes those values.
127
+ `ExperimentDraftUpdateSchema` binds a save operation to an expected draft
128
+ revision. Desktop chat uses that contract to reject stale saves and reconcile
129
+ retries; a draft save does not prepare or start training.
130
+
131
+ For model-first setup, `training.prepareExperiment(request)` accepts an exact
132
+ `baseModel`, method-specific `settings`, reviewed `batch`, name and spend cap.
133
+ Use `TrainingExperimentSetupRequestSchema` from `openpond-sdk/training`. The
134
+ service resolves the owned configuration internally and returns
135
+ `{ request, requestHash, preparation }`; no preliminary Model-creation call is
136
+ required. Native Python exposes the same operation as
137
+ `client.training.prepare_experiment(request)`, including its async counterpart.
138
+ Host deployment and normal method/data admission still determine availability.
139
+
140
+ An optional `parent` retains a trained GRPO starting checkpoint in both
141
+ `TrainingPreparationRequest` and model-first setup. Its shape is:
142
+
143
+ ```ts
144
+ { jobId, artifact: { id, contentHash }, checkpointId,
145
+ adapterMode: "residual_append" /* or "shared" / "sequential_merge" */ }
146
+ ```
147
+
148
+ Use references returned by the producing Job and its retained artifact/checkpoint
149
+ records. A Model name or inference alias cannot identify this source. The host
150
+ checks the creator/workspace, final checkpoint and published manifest before
151
+ preparing; funded execution still rechecks runtime, adapter composition and
152
+ method qualification. A listed mode is a contract value, not proof that the
153
+ current image admits it. Optimizer state resets for a new stage; interrupted
154
+ checkpoint recovery is a separate operation. SFT continuation is unavailable in
155
+ the current worker. Never silently replace an unavailable parent with base-only
156
+ training. Draft `trainingForm.parent` preserves these references across save and
157
+ reopen; `startingModelLabel` is display text and grants no execution authority.
158
+
159
+ The CLI equivalent is `openpond training hosted-prepare-experiment draft.json
160
+ --team-id <id> --json`. Retain the input and returned receipt. Preparation starts
161
+ no compute. Explicit `hosted-start` accepts either that wrapper receipt or a
162
+ normal preparation receipt, requires `--yes`, and uses the same funded start
163
+ boundary. Reusing an operation ID with different inputs is a conflict; editing
164
+ and rerunning uses a new operation ID.
165
+
166
+ Use `hosted-preparation <id>` to read one retained preparation and
167
+ `hosted-preparations --cursor <id>` to follow discovery pages (`--project-id` and
168
+ `--limit` are supported). `hosted-cancel-preparation <receipt.json>` cancels an
169
+ unsubmitted preparation with its reviewed plan hash and current revision. Both
170
+ ordinary and model-first wrapper receipts are accepted. Once a job exists, use
171
+ the job controls and keep its identity.
172
+
43
173
  1. Use the public Model, Dataset, Harness and Learning clients to select published
44
174
  immutable resources, review evidence and seal a batch. Keep the exact Model
45
175
  revision/ETag and batch revision/content hash. Private grader artifacts stay
@@ -130,3 +260,366 @@ The original `openpond-sdk@0.12.8` is published and independently verified.
130
260
  The source follow-up prepares coordinated SDK/Ponder0.12.9; it does not claim
131
261
  that version is published. Ponder npm and Python first-name publication remain separate publisher/bootstrap
132
262
  gates; clean packed consumers do not establish registry ownership.
263
+
264
+ Training history is available through `client.listExecutions(teamId, { projectId, datasetHash, search, cursor, limit })` (`GET /v1/training/executions`). It returns bounded typed collection metadata around canonical Job identities, without examples, input bundles or artifact payloads. Use the returned Job ID with existing lifecycle/results operations. Missing historical model/data pins remain null; the collection never fills them from current Model settings. Python exposes `training.list_executions` in both native clients, and the CLI exposes `training hosted-executions`. Availability still depends on the deployed hosted release.
265
+
266
+
267
+ ### Hardware specifications and live offers
268
+
269
+ `training.hardwareCatalog()` reads persisted provider GPU specifications, their content version and refresh timestamps. Its runtime labels distinguish candidates requiring live workload checks from hardware that is not admitted. The catalog contains no prices or stock. `training.gpuCatalog()` reads current offers; canonical preparation and reviewed execution admission remain required. Neither a GPU listing nor its maximum per-Pod count proves free capacity or support for a larger model. Python clients expose the same metadata read as `client.training.hardware_catalog()`.
270
+
271
+
272
+ `training.gpuCatalog(query)` binds live offers to `teamId`, the exact model/tokenizer/template revisions, method, LoRA rank and GPU count. The response includes its request hash, opaque provider-account scope, product/cloud/geography/CUDA constraints and expiry. It labels provider catalog pricing separately from accepted execution pricing; no capacity or credits are reserved. Unsupported combinations return a reason with no offers. The SDK rejects expired or substituted scoped replies. Calling `gpuCatalog()` without a query remains an overview read. Python sync/async clients accept the same fields through `training.gpu_catalog(query=...)`; the CLI accepts a JSON query file. Preparation and signed cost/funding review still own execution admission.
273
+
274
+
275
+ Timing calibration is implemented in source, with hosted proof pending. A partial
276
+ estimate can use the observed median and minimum/maximum of at least three clean,
277
+ matching completed executions from the same actor/workspace. The response binds
278
+ its cohort hash into the signed input review, reports incomplete sample counts
279
+ and separately excludes clean matches from other observed runtime profiles. This is historical evidence, not a confidence interval, latency
280
+ guarantee or token-throughput extrapolation. Queue wait, exact unmeasured token
281
+ populations and uncovered resource costs remain unknown. No calibration job is
282
+ launched by an estimate request. A `gpu_allocation` component prices conserved
283
+ billable allocation time from at least three matching completed runs at the
284
+ current whole-Pod GPU-plus-disk rate. Weighted sharing and device count are
285
+ already included once; other GPU phase rows do not add separate charges. The
286
+ component's expected cost and observed-range repricing are partial evidence.
287
+ Whole-run totals remain null while CPU, judges, network or retention lack
288
+ complete coverage; a spending ceiling is never substituted for an estimate.
289
+
290
+ ## Copy a published Dataset into review
291
+
292
+ The Dataset review path and shared Dataset import UI are implemented in source;
293
+ hosted import/review qualification is still pending. They reuse the workspace
294
+ learning review engine without requiring a saved Model. Obtain the exact package through
295
+ `OpenPondTasksetPackageClient.getByRelease()` before composing this request:
296
+
297
+ ```ts
298
+ const receipt = await training.reviewDataset({
299
+ schemaVersion: "openpond.datasetTrainingReviewRequest.v1",
300
+ teamId,
301
+ operationId: "review-selected-examples-1", // retain on uncertain retries
302
+ dataset: { id: pkg.taskset.id, revision: pkg.taskset.revision,
303
+ contentHash: pkg.taskset.contentHash },
304
+ packageHash: pkg.contentHash,
305
+ taskIds: selectedTaskIds, // null copies the whole exact release
306
+ purpose: "supervised_training",
307
+ shareWithWorkspace: true,
308
+ rewardBindingRef: selectedRewardBinding,
309
+ definition: { instructions: taskInstructions, outputSchema: actualOutputSchema },
310
+ targetSource: "expected_output",
311
+ });
312
+ ```
313
+
314
+ Workspace sharing is an explicit copy of selected examples and their required
315
+ execution dependencies, including evaluator context. The host retains the
316
+ original package privately. A bound package can retain its existing Reward and
317
+ task format; an ordinary package needs an exact saved Reward and a real output
318
+ contract, rather than a schema inferred from answer examples.
319
+
320
+ The receipt identifies new unapproved evidence and pending target proposals.
321
+ Use the existing learning commands to grade, review and seal the appropriate
322
+ batch, then pass its exact reference to experiment preparation. Original splits
323
+ and family boundaries remain enforced. Parent approvals are never copied.
324
+ `targetSource: "none"` imports without proposals; `"approved_parent"` proposes
325
+ targets from a learning-backed package and still requires fresh approval. Reward
326
+ training accepts only `"none"`. Import creates no training Job or credit hold.
327
+ The CLI exposes `training hosted-review-dataset input.json --team-id <id>`;
328
+ native Python sync/async clients expose `training.review_dataset(...)`.
329
+
330
+ `inspectDatasetTrainingReviewPackage(pkg)` from `openpond-sdk/taskset-packages`
331
+ returns task-format defaults, the retained Reward reference, exact package/release
332
+ identity and counts. It omits original task answers, evaluator context, grader
333
+ code and files. The shared UI uses this metadata plus the existing policy-visible
334
+ Dataset population read for example selection. Python consumers can read the
335
+ same immutable package through the existing package client; the inspection helper
336
+ is a pure TypeScript convenience, not another hosted mutation.
337
+
338
+ ## Exact trained result
339
+
340
+ The result read is implemented in source; hosted release verification is pending.
341
+ `client.result(jobId, { teamId })` reads `GET /v1/training/jobs/{jobId}/result`.
342
+ Native Python exposes `training.result(job_id)` in both clients, bound to the
343
+ client's workspace. The official CLI uses `training hosted-result <job-id>`.
344
+
345
+ The response retains the original base model, recipe and immutable data/config
346
+ references, current Job, outputs and execution receipt. A retained candidate pins
347
+ its final checkpoint, artifact hash and adapter composition/parent. Clients reject
348
+ changed Job/source identities, inconsistent inventories and incomplete cleanup.
349
+ The host reuses the final SFT/GRPO checkpoint verifier. Missing original requests,
350
+ qualification runs and unfinished publication have explicit candidate states.
351
+ The read creates no Model, credit reservation, training Job or serving allocation.
352
+ A registry publication ID does not establish serving readiness or model quality.
353
+ Model saving and serving control are explicit operations described below.
354
+
355
+ ### Save a trained Model
356
+
357
+ `client.saveResultModel(jobId, request)` saves the exact result as a version of
358
+ its producing Model. Read `client.result(jobId, { teamId })` first, then retain
359
+ one operation ID and send `TrainingResultSaveRequestSchema` fields: `teamId`,
360
+ `name`, `expectedModelRevision` from `result.model.revision`, `submissionHash`,
361
+ and the candidate's `artifact` and `checkpointId`. The request schema version is
362
+ `openpond.trainingResultSave.v1`. Retry an uncertain save with the same body.
363
+ The client does not automatically retry writes.
364
+
365
+ `client.savedModel(modelProjectId, { teamId })` returns the Model and its most
366
+ recently explicitly saved training version. That version retains original
367
+ base/settings/data, checkpoint and parent composition independently of later
368
+ configuration edits. The name applies to the producing Model. Saving another
369
+ checkpoint selects that version; viewing or running another experiment does
370
+ not select it. Serving activation remains separate.
371
+
372
+ Native Python uses `training.save_result_model(job_id, request)` and
373
+ `training.saved_model(model_project_id, {"teamId": team_id})` in sync/async clients.
374
+ The CLI reads a `{ "jobId": "…", "request": { … } }` command file with
375
+ `training hosted-save-model <input.json> --team-id <id>` and reads the saved
376
+ version with `training hosted-saved-model <model-project-id> --team-id <id>`.
377
+ The existing Desktop operation journal retains the reviewed save for recovery.
378
+ These additions are implemented in source; deployed save/concurrency,
379
+ artifact lifecycle and serving qualification remain open.
380
+
381
+
382
+ ### Read saved-Model serving state
383
+
384
+ `client.modelServing(modelProjectId, { teamId, versionHash })` reads the exact
385
+ version hash returned by `savedModel`. A changed saved version requires a fresh
386
+ read. The response includes the verified saved snapshot, its separate registry
387
+ publication, Model-scoped routing bindings, deployment/pool metadata and an
388
+ optional historical inference receipt reference. Registry and native checkpoint
389
+ hashes describe different artifacts and must not be substituted.
390
+
391
+ `active` means eligible routing metadata points to a ready deployment/pool.
392
+ It does not establish current GPU residency, a warm worker, scale-to-zero or
393
+ released billed capacity. `lastVerifiedInference` is historical, settled request
394
+ evidence for that exact registry artifact and immutable runtime. Pool consumer
395
+ counts include other uses of shared capacity. An unblocked retirement read is
396
+ an observation, not a retirement action or a provider billing receipt.
397
+
398
+ Native Python exposes `training.model_serving(model_project_id, query)` in both
399
+ clients. The CLI uses `training hosted-model-serving <input.json> --team-id <id>`;
400
+ the file contains `modelProjectId` and `versionHash`. This is read-only. Serving reads and Model activation/stop controls are implemented in source;
401
+ hosted qualification remains pending.
402
+
403
+
404
+ ### Activate and stop a saved Model
405
+
406
+ `client.controlModelServing(modelProjectId, request)` sends one explicit command.
407
+ Read `modelServing` first. Use schema version
408
+ `openpond.trainingModelServingControlRequest.v1`, the current `teamId`, one
409
+ retained `operationId`, the exact saved `versionHash`, the observed registry
410
+ `artifact` reference, `expectedRevision` from `state.control?.revision ?? 0`,
411
+ `action: "activate"` and an `idleTimeoutSeconds` value from 60 to 3600.
412
+ The UI obtains these references from the Model; users do not browse artifacts.
413
+
414
+ The immutable receipt binds the actor, action, checkpoint, publication and
415
+ revision. Retain the original request across uncertain replies and retry it
416
+ explicitly; writes are never automatically retried. The receipt acknowledges
417
+ the request. Read current serving status to observe readiness and subsequent
418
+ cleanup. Background reconciliation continues without the client or Desktop.
419
+ Activation uses the host's existing supported runtime, authorization, pooled
420
+ capacity and funding owners. It does not qualify a new GPU/model combination.
421
+
422
+ For Stop, refresh serving status and use its control's `versionHash`, `artifact`,
423
+ `revision` and `idleTimeoutSeconds` with a new operation ID and `action: "stop"`.
424
+ The Model's route becomes inactive first. Original calls, reservations and
425
+ shared consumers remain protected; physical retirement runs through the existing
426
+ capacity owner. A failed or uncertain allocation remains cleanup-pending rather
427
+ than causing a replacement allocation or a claim that provider capacity is gone.
428
+ Stop does not revoke the artifact. A different checkpoint cannot replace an
429
+ active saved serving version; stop that version before selecting another.
430
+
431
+ Native Python uses `training.control_model_serving(model_project_id, request)`
432
+ in both clients. The official CLI accepts a `{ "modelProjectId": "…",
433
+ "request": { … } }` file with `training hosted-control-model-serving <input.json>
434
+ --team-id <id>`. Activation additionally requires `--yes` because it authorizes
435
+ billed serving capacity. The Desktop journal retains the reviewed command across
436
+ reopen. These controls are source implementation; actual hosted startup,
437
+ interruption, shared capacity, provider retirement and settlement qualification
438
+ remain open.
439
+
440
+
441
+ Use the returned control's `modelId` for inference. The `model:` logical-name
442
+ and `saved-model:` binding-ID prefixes are reserved for saved-Model controls;
443
+ generic binding-projection writes cannot modify those routes. Pending cleanup
444
+ for previous versions is returned in `state.cleanup` and remains independent of
445
+ the current route. A new version does not erase earlier capacity obligations.
446
+
447
+ ### Local neuron-steering and activation reference
448
+
449
+ Steering and inspection authoring use the existing standalone draft operations.
450
+ Set `draft.operationType` to `neuron_steering` or `inspect_activations` and retain
451
+ an `activationForm` matching `ActivationExperimentFormDraftSchema`. It contains
452
+ a nullable model preference, prompt rows (`id`, `text`), coordinate rows (`id`,
453
+ `layer`, `neuron`, `dose`), `doseMultipliers`, normalization and token scope,
454
+ plus generation/capture/work/time limits. Numeric authoring fields are strings
455
+ so a blank or unfinished value survives save/reopen. Row IDs remain unique and
456
+ stable across edits. Inspection ignores steering dose fields.
457
+
458
+ Use `saveExperimentDraft`, `getExperimentDraft`, `listExperimentDrafts` and
459
+ `archiveExperimentDraft` with their existing workspace, owner, revision and
460
+ operation-receipt semantics. The official CLI's `training hosted-save-draft`
461
+ and related draft commands accept the same documents on compatible hosts.
462
+ Native Python has the same generated inputs and sync/async methods. Drafts
463
+ are bounded to 32 KiB over the wire. They contain no tensor or activation bytes.
464
+
465
+ The common UI exposes both methods as editable drafts, reusing its Model picker,
466
+ prompt/coordinate fields, Advanced settings, Save draft and discard recovery.
467
+ Run remains unavailable while hosted activation execution has no compatible
468
+ runtime. A saved draft is neither a published steering profile nor an admitted
469
+ execution request. Runtime preparation still must resolve exact tensor/tokenizer
470
+ identity, tokenize prompts, validate coordinates/doses and bound the whole sweep.
471
+ No training recipe, Dataset, spend cap or chat prompt is fabricated for inspection.
472
+
473
+ Read `client.modificationCapabilities(query)` before preparing a modification.
474
+ It calls read-only `GET /v1/training/modification-capabilities`. The query uses
475
+ `teamId`, `modelId`, `source` (`managed`, `local` or `builtin`) and optional exact
476
+ `revision`, `tokenizerRevision`, `chatTemplateHash` and `modelAssetId` fields.
477
+ Omit unknown values rather than inventing a pin. The response retains the exact
478
+ query/request hash, workspace/actor, checked time, expiry and one entry for each
479
+ of `neuron_steering` and `inspect_activations`. `draftSchema` describes the format,
480
+ not permission to write or execute.
481
+
482
+ Each capability observation retains `validationLevel`: `null` when execution is
483
+ unavailable, `source_validated` for an experimental staging runtime, or
484
+ `gpu_qualified` after a retained exact-model/runtime GPU run. Source validation
485
+ describes a runtime reviewed for an experimental staging trial; it is not
486
+ evidence that training or inference has already succeeded. Read the runtime's retained evidence; neither level
487
+ reserves compute, approves a charge or establishes model quality. Engram,
488
+ Decision, AlphaEdit and neuron-training capabilities use the same distinction.
489
+ The validation level stays outside native tensor descriptors and runtime hashes.
490
+
491
+ An unavailable entry explains `model_not_supported` or `runtime_not_qualified`.
492
+ The current hosted projection advertises no executable activation runtime. A
493
+ future ready entry must bind a complete dense tensor identity, runtime image/
494
+ release and retained evidence, plus prompt/variant/coordinate/dose/capture/work/
495
+ time limits. The client verifies hashes, query identity, method coverage and a
496
+ maximum five-minute observation lifetime. Call
497
+ `parseAndVerifyModelModificationCapabilities(value, query, expectedActorId)`
498
+ when the current account identity is known. A capability observation reserves
499
+ no funds/capacity, proves no warm worker and is rechecked by execution admission.
500
+ The TypeScript read has a 30-second bound and accepts an optional `{ signal }`
501
+ second argument; cancellation does not change the draft or start any operation.
502
+
503
+ Native Python exposes `training.modification_capabilities(input)` in both
504
+ clients. The official CLI reads the same query file with
505
+ `training hosted-modification-capabilities <input.json> --team-id <id> --json`.
506
+ Desktop relays the read through the existing setup owner; the common form
507
+ refreshes it for the selected model without changing any draft settings.
508
+
509
+ `neuron-steering.ts` defines exact dense-model identities, additive profiles and
510
+ residual calibration artifacts. `activation-reference.ts` defines bounded
511
+ tokenized prompt comparisons and selected-coordinate observations. Use
512
+ `createNeuronSteeringProfile` and `parseAndVerifyNeuronSteeringProfile` for
513
+ profiles, and `parseAndVerifyActivationReferenceRequest` /
514
+ `parseAndVerifyActivationReferenceResult` for retained execution evidence.
515
+ These exports are local contracts; they add no hosted execution operation.
516
+
517
+ The optional native Python `ponder_sdk.reference` executor runs a host-supplied,
518
+ loaded dense PyTorch model serially. The source example
519
+ Native Python also provides `ponder_sdk.activation_forms.compile_activation_form`.
520
+ It turns the saved raw text form into the bounded reference request using an
521
+ explicit trusted `ActivationFormTokenizer` and exact model identity. It rejects
522
+ blank required numbers, changed tokenizer/source pins and invalid coordinates;
523
+ steering includes a baseline plus the authored sweep, while inspection captures
524
+ the unsteered baseline. The example below supplies a complete adapter. Local
525
+ compilation grants no hosted admission, and fixed calibration artifacts remain
526
+ required at execution.
527
+
528
+ `python/openpond-sdk/examples/activation_reference.py` runs a synthetic CPU
529
+ network with Off, zero, signed-dose and token-scope comparisons. It captures
530
+ selected values before/after the intervention, retains exact request/model/
531
+ profile hashes, and checks that weights are unchanged. Its manual numerical
532
+ workflow lives outside the ordinary HTTP SDK test suite.
533
+
534
+ Reference semantics are zero-based coordinates, additive updates to the
535
+ post-gating input of `down_proj`, and an FP32 midpoint median of outgoing
536
+ residual norms. These are explicit proposed semantics, not a claim of reproducing
537
+ an unspecified external recipe. Baseline-prompt normalization uses a separate
538
+ unsteered prefill and freezes its statistics. Fixed normalization instead pins
539
+ an immutable calibration artifact. Prompt/decode and absolute-position scope
540
+ are separate from the calibration sample mask.
541
+
542
+ Requests bound prompts, variants, capture values, forward-token work, generated
543
+ tokens and duration. The serial reference recomputes full contexts and includes
544
+ a final inspection forward for the last generated token. It has no KV/prefix
545
+ cache or concurrent shared-model serving. Only a single-device, unquantized,
546
+ adapter-free dense model is admitted; LoRA, fused/quantized kernels, MoE and
547
+ checkpoint-specific Qwen support need separate runtime integration.
548
+
549
+ This reference makes no paid request, downloads no model and creates no hosted
550
+ Job, saved Model or serving allocation. There is no corresponding official CLI
551
+ execution command yet. Managed authoring, isolation, comparisons and serving
552
+ remain separate implementation work.
553
+
554
+
555
+ ### Retain an external activation observation locally
556
+
557
+ The authenticated local server exposes `POST /v1/modification-recordings`,
558
+ `GET /v1/modification-recordings/:id?teamId=...` and the metadata-only collection
559
+ read. Point an ordinary configured training client at that loopback server;
560
+ these paths are not hosted training endpoints.
561
+
562
+ ```ts
563
+ const recording = await localTraining.recordModificationObservation({
564
+ schemaVersion: "openpond.modificationRecordingRequest.v1",
565
+ teamId, operationId: "retain-reference-1", name: "Reference comparison",
566
+ projectId: null, method: "neuron_steering", request, result,
567
+ });
568
+ const retained = await localTraining.modificationRecording(recording.id, { teamId });
569
+ const page = await localTraining.modificationRecordings({ teamId, limit: 30 });
570
+ ```
571
+
572
+ `request` and `result` are the exact verified activation-reference output, not a
573
+ draft or arbitrary tensor dump. Inspection requires only unsteered variants;
574
+ steering requires an explicit Off baseline and an intervention. The canonical
575
+ command is bounded to 8 MiB. Reuse the original operation ID and exact command
576
+ after a lost reply; a changed command conflicts. The returned ID and first
577
+ receipt remain stable across retries and local server restarts.
578
+
579
+ The read verifies exact request/result/model hashes, capture coverage, artifact
580
+ bytes, metadata and scope. Collection reads return bounded metadata with opaque
581
+ cursors scoped to account, workspace, Project filter and search. Project IDs
582
+ organize local observations; they do not confer hosted Project permissions.
583
+ Custody is `local`, provenance is `external_observation`, and
584
+ `measurementAttestation` is `unattested`. Neither hashes nor import imply worker
585
+ execution, a grade or measured provider cost. No Job, funding hold or allocation
586
+ is created. The payload stays in the existing device database.
587
+
588
+ Native Python offers `record_modification_observation(command)`,
589
+ `modification_recording(id, {"teamId": team_id})` and
590
+ `modification_recordings({"teamId": team_id, "limit": 30})` in both clients.
591
+ The official CLI uses:
592
+
593
+ ```sh
594
+ openpond experiments record-modification --local --team <id> --input-file <command.json> --json
595
+ openpond experiments modification <recording-id> --local --team <id> --json
596
+ openpond experiments modifications --local --team <id> --limit 30 --json
597
+ ```
598
+
599
+ Supply `--home` and `--server-url` when the running app uses nondefault values.
600
+ The UI imports the reference example's `{request, result}` document, constructs
601
+ an immutable import command, and reuses the same local service/table/viewer.
602
+ Imported observations are not deployable Models or managed runs.
603
+
604
+ ### Inspect a managed modification execution
605
+
606
+ On a host implementing managed execution inspection, read an existing execution with:
607
+
608
+ ```ts
609
+ const history = await training.listModificationExecutions(teamId, {projectId, limit: 25});
610
+ const execution = await training.getModificationExecution(teamId, executionId);
611
+ ```
612
+
613
+ The matching native Python method is `client.training.get_modification_execution(execution_id)` in sync and async clients. The official CLI provides:
614
+
615
+ ```sh
616
+ openpond training hosted-modification-execution <execution-id> --team-id <id> --json
617
+ ```
618
+
619
+ This read returns the owned execution's exact request, lifecycle phase and any retained capture. Clients verify the response hash, execution/workspace identity, request hash and complete capture coverage. A capture can be present while the phase is still `dispatching` or `stopping`; its presence does not establish resource cleanup or final cost settlement. This read starts no compute. Current runtime discovery advertises no qualified managed steering or inspection runtime.
620
+
621
+ ### Compile, prepare and control managed activations
622
+
623
+ On a compatible host, `compileModificationExecution(input)` compiles a bounded raw form with the exact registered tokenizer. `prepareModificationExecution(input)` retains the compiled request, Project, name and maximum spend without starting compute. After explicit review, `startModificationExecution(input)` uses the returned execution ID, revision, plan hash, approved cap and a stable operation ID. `cancelModificationExecution(input)` retains that exact execution identity while cleanup proceeds.
624
+
625
+ The CLI equivalents are `training hosted-compile-modification`, `hosted-prepare-modification`, `hosted-start-modification --yes` and `hosted-cancel-modification`, each taking `<input.json> --team-id <id>`. Native Python provides corresponding snake_case methods in both clients. Use the exported input schemas or installed help; preserve the original command and operation ID after an uncertain reply. Start is the funded execution boundary. An unavailable capability never grants permission to start an unsupported model.
@@ -12,16 +12,16 @@ import {
12
12
  sealAdvancedRefinerEvaluationPin,
13
13
  sealAdvancedRefinerReviewReceipt,
14
14
  verifyAdvancedRefinerEvaluationPin
15
- } from "./chunk-UWY5PUHR.js";
16
- import "./chunk-O3NOGKMT.js";
15
+ } from "./chunk-RN5MK7NH.js";
16
+ import "./chunk-QNOCM5JX.js";
17
17
  import "./chunk-3B5KSH3V.js";
18
18
  import "./chunk-H3367ISL.js";
19
- import "./chunk-LHHHJIDR.js";
19
+ import "./chunk-626JLH4D.js";
20
20
  import "./chunk-O6FKHAWN.js";
21
- import "./chunk-C4W2MEFP.js";
22
- import "./chunk-ZYDDHHZZ.js";
23
- import "./chunk-RLW4Y5ZV.js";
24
- import "./chunk-UOV2LEXS.js";
21
+ import "./chunk-GS5HEE4M.js";
22
+ import "./chunk-ZRTNR4U7.js";
23
+ import "./chunk-JMFYNIYZ.js";
24
+ import "./chunk-MVAEE5EI.js";
25
25
  import "./chunk-CL3IOOVL.js";
26
26
  import "./chunk-B3ZHJ2KK.js";
27
27
  import "./chunk-H3JZ3P5T.js";
@@ -5,12 +5,12 @@ import {
5
5
  CandidateEvaluationPreparationSchema,
6
6
  CandidateEvaluationRequestSchema,
7
7
  createCandidateEvaluationClient
8
- } from "./chunk-CNREFTAV.js";
9
- import "./chunk-K54BDIKL.js";
10
- import "./chunk-C4W2MEFP.js";
11
- import "./chunk-ZYDDHHZZ.js";
12
- import "./chunk-RLW4Y5ZV.js";
13
- import "./chunk-UOV2LEXS.js";
8
+ } from "./chunk-3VUF5H3B.js";
9
+ import "./chunk-ZQFROKKS.js";
10
+ import "./chunk-GS5HEE4M.js";
11
+ import "./chunk-ZRTNR4U7.js";
12
+ import "./chunk-JMFYNIYZ.js";
13
+ import "./chunk-MVAEE5EI.js";
14
14
  import "./chunk-CL3IOOVL.js";
15
15
  import "./chunk-B3ZHJ2KK.js";
16
16
  import "./chunk-H3JZ3P5T.js";
@@ -8,7 +8,7 @@ import {
8
8
  ConnectedStartingAssetsRequestSchema,
9
9
  DatasetWorkspaceReceiptSchema,
10
10
  verifyConnectedStartingAssetsReceipt
11
- } from "./chunk-XMVSQIK4.js";
11
+ } from "./chunk-AG6UJ3DI.js";
12
12
  import {
13
13
  fetchConnectedJson
14
14
  } from "./chunk-O6FKHAWN.js";
@@ -650,4 +650,4 @@ export {
650
650
  summarizeCollectorCoverage2 as summarizeCollectorCoverage,
651
651
  hashCollectorEligibleBoundaries
652
652
  };
653
- //# sourceMappingURL=chunk-TLSP5JKG.js.map
653
+ //# sourceMappingURL=chunk-3BYFS4RO.js.map
@@ -2,18 +2,18 @@ import {
2
2
  materializePortableTasksetRelease,
3
3
  portableTasksetEnvironment,
4
4
  projectPortableTaskRecord
5
- } from "./chunk-ATVQQCYN.js";
5
+ } from "./chunk-GWXJSBWR.js";
6
6
  import {
7
7
  decodeTasksetDraftWorkspaceFile,
8
8
  isManagedTasksetDraftFilePath,
9
9
  publishTasksetDraft,
10
10
  renderTasksetDraftManifests,
11
11
  validateTasksetDraftWorkspace
12
- } from "./chunk-JDQVAG3R.js";
12
+ } from "./chunk-Q4RGCEOI.js";
13
13
  import {
14
14
  TasksetSchema,
15
15
  computeTasksetHash
16
- } from "./chunk-GHPCQXG5.js";
16
+ } from "./chunk-GCUWJUUM.js";
17
17
  import {
18
18
  MAX_TASKSET_PACKAGE_BYTES,
19
19
  ModelStarterExecutionSchema,
@@ -32,7 +32,7 @@ import {
32
32
  resolveTasksetPackageInstructions,
33
33
  structuredSamplingSchemaDeclaration,
34
34
  validateTasksetPackage
35
- } from "./chunk-IFBCLRBM.js";
35
+ } from "./chunk-ZQ6QTYRE.js";
36
36
  import {
37
37
  ModelTasksetAuthoringOwnerSchema,
38
38
  ModelTasksetDraftPreparationSchema,
@@ -471,4 +471,4 @@ export {
471
471
  compileTasksetDraftWorkspace,
472
472
  compileModelTasksetDraftWorkspace
473
473
  };
474
- //# sourceMappingURL=chunk-XRBM6PBD.js.map
474
+ //# sourceMappingURL=chunk-3MDNVNBM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RunExperimentSchema
3
- } from "./chunk-K54BDIKL.js";
3
+ } from "./chunk-ZQFROKKS.js";
4
4
  import {
5
5
  contentHash
6
6
  } from "./chunk-H3JZ3P5T.js";
@@ -136,4 +136,4 @@ export {
136
136
  CandidateEvaluationPreparationSchema,
137
137
  CandidateEvaluationControlSchema
138
138
  };
139
- //# sourceMappingURL=chunk-CNREFTAV.js.map
139
+ //# sourceMappingURL=chunk-3VUF5H3B.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ExperimentFieldMappingsSchema,
3
3
  ExperimentGraderPinSchema
4
- } from "./chunk-C4W2MEFP.js";
4
+ } from "./chunk-GS5HEE4M.js";
5
5
  import {
6
6
  ImmutableReleaseRefSchema,
7
7
  contentHash
@@ -67,4 +67,4 @@ export {
67
67
  ExperimentScoringPassSchema,
68
68
  verifyExperimentScoringPass
69
69
  };
70
- //# sourceMappingURL=chunk-LHHHJIDR.js.map
70
+ //# sourceMappingURL=chunk-626JLH4D.js.map