ponder-sdk 0.1.0__tar.gz

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 (569) hide show
  1. ponder_sdk-0.1.0/.gitignore +5 -0
  2. ponder_sdk-0.1.0/LICENSE +21 -0
  3. ponder_sdk-0.1.0/PKG-INFO +177 -0
  4. ponder_sdk-0.1.0/README.md +162 -0
  5. ponder_sdk-0.1.0/examples/continual.py +73 -0
  6. ponder_sdk-0.1.0/examples/manual.py +50 -0
  7. ponder_sdk-0.1.0/pyproject.toml +29 -0
  8. ponder_sdk-0.1.0/src/ponder_sdk/__init__.py +7 -0
  9. ponder_sdk-0.1.0/src/ponder_sdk/canonical-identities.json +94 -0
  10. ponder_sdk-0.1.0/src/ponder_sdk/client.py +47 -0
  11. ponder_sdk-0.1.0/src/ponder_sdk/dataset_preparations.py +72 -0
  12. ponder_sdk-0.1.0/src/ponder_sdk/datasets.py +80 -0
  13. ponder_sdk-0.1.0/src/ponder_sdk/errors.py +12 -0
  14. ponder_sdk-0.1.0/src/ponder_sdk/evaluation_identity.py +35 -0
  15. ponder_sdk-0.1.0/src/ponder_sdk/evaluation_runs.py +48 -0
  16. ponder_sdk-0.1.0/src/ponder_sdk/fixtures/policy-optimize.valid.json +96 -0
  17. ponder_sdk-0.1.0/src/ponder_sdk/inputs/__init__.py +266 -0
  18. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_attempt.py +52 -0
  19. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_check.py +34 -0
  20. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_group_manifest.py +56 -0
  21. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_group_manifest_content.py +55 -0
  22. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_group_snapshot.py +109 -0
  23. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_group_snapshot_content.py +108 -0
  24. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_measurement.py +26 -0
  25. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_plan.py +43 -0
  26. ponder_sdk-0.1.0/src/ponder_sdk/inputs/acceptance_plan_content.py +42 -0
  27. ponder_sdk-0.1.0/src/ponder_sdk/inputs/apply_task_correction_command.py +18 -0
  28. ponder_sdk-0.1.0/src/ponder_sdk/inputs/archive_authoring_draft_command.py +17 -0
  29. ponder_sdk-0.1.0/src/ponder_sdk/inputs/attach_post_training.py +331 -0
  30. ponder_sdk-0.1.0/src/ponder_sdk/inputs/authoring_draft.py +165 -0
  31. ponder_sdk-0.1.0/src/ponder_sdk/inputs/authoring_draft_content.py +162 -0
  32. ponder_sdk-0.1.0/src/ponder_sdk/inputs/authoring_draft_finalization.py +17 -0
  33. ponder_sdk-0.1.0/src/ponder_sdk/inputs/authoring_draft_input.py +144 -0
  34. ponder_sdk-0.1.0/src/ponder_sdk/inputs/authoring_target_kind.py +7 -0
  35. ponder_sdk-0.1.0/src/ponder_sdk/inputs/bound_judge_response.py +18 -0
  36. ponder_sdk-0.1.0/src/ponder_sdk/inputs/cancel_learning_iteration_command.py +12 -0
  37. ponder_sdk-0.1.0/src/ponder_sdk/inputs/cancel_learning_iteration_reservation_command.py +12 -0
  38. ponder_sdk-0.1.0/src/ponder_sdk/inputs/cancel_reward_check_command.py +12 -0
  39. ponder_sdk-0.1.0/src/ponder_sdk/inputs/cancel_task_grade_command.py +12 -0
  40. ponder_sdk-0.1.0/src/ponder_sdk/inputs/combined_reward_authoring_fields.py +46 -0
  41. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_metric_observation.py +47 -0
  42. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_metric_summary.py +52 -0
  43. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_opportunity.py +26 -0
  44. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_verification_check.py +27 -0
  45. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_verification_plan.py +56 -0
  46. ponder_sdk-0.1.0/src/ponder_sdk/inputs/correction_verification_plan_content.py +55 -0
  47. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_accounting.py +15 -0
  48. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_candidate.py +83 -0
  49. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_candidate_page.py +91 -0
  50. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_command.py +22 -0
  51. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_coverage.py +25 -0
  52. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_create.py +82 -0
  53. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_grant.py +23 -0
  54. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_grant_create.py +12 -0
  55. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_list.py +193 -0
  56. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_operation_result.py +192 -0
  57. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_policy.py +76 -0
  58. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_preview.py +40 -0
  59. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_run.py +186 -0
  60. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_source.py +22 -0
  61. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_stage.py +7 -0
  62. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_status.py +7 -0
  63. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_preparation_task_class.py +7 -0
  64. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_begin_version.py +10 -0
  65. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_list.py +35 -0
  66. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_list_query.py +13 -0
  67. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_operation_kind.py +7 -0
  68. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_operation_result.py +747 -0
  69. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_publish.py +12 -0
  70. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_receipt.py +739 -0
  71. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_validate_request.py +9 -0
  72. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_validation.py +20 -0
  73. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_versions.py +30 -0
  74. ponder_sdk-0.1.0/src/ponder_sdk/inputs/dataset_workspace_write.py +724 -0
  75. ponder_sdk-0.1.0/src/ponder_sdk/inputs/harness_experiment_policy.py +169 -0
  76. ponder_sdk-0.1.0/src/ponder_sdk/inputs/harness_policy_source_package.py +98 -0
  77. ponder_sdk-0.1.0/src/ponder_sdk/inputs/harness_source_package.py +98 -0
  78. ponder_sdk-0.1.0/src/ponder_sdk/inputs/harness_source_selection.py +17 -0
  79. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_model_project_detail.py +111 -0
  80. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_model_project_link.py +29 -0
  81. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_model_project_summary.py +97 -0
  82. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_model_project_sync.py +93 -0
  83. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_model_project_training_setup.py +80 -0
  84. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_training_policy_control.py +15 -0
  85. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_training_policy_detail.py +517 -0
  86. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_training_setup_action.py +7 -0
  87. ponder_sdk-0.1.0/src/ponder_sdk/inputs/hosted_training_setup_catalog.py +532 -0
  88. ponder_sdk-0.1.0/src/ponder_sdk/inputs/import_task_intake_command.py +20 -0
  89. ponder_sdk-0.1.0/src/ponder_sdk/inputs/judge_call_reservation.py +26 -0
  90. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_accepted_parent.py +24 -0
  91. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_batch_publication.py +10 -0
  92. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_batch_publication_result.py +14 -0
  93. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_candidate_decision_observation.py +28 -0
  94. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_chain.py +36 -0
  95. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_command.py +1010 -0
  96. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_command_request.py +1013 -0
  97. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_consumption.py +22 -0
  98. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_continuation_mode_override.py +16 -0
  99. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_eligibility_counts.py +12 -0
  100. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration.py +55 -0
  101. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_dispatch.py +49 -0
  102. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_observation.py +24 -0
  103. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_reservation.py +56 -0
  104. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_status.py +7 -0
  105. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_submission.py +13 -0
  106. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_iteration_trigger.py +22 -0
  107. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_json_object.py +9 -0
  108. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_json_pointer.py +7 -0
  109. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_operation_result.py +1289 -0
  110. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_policy.py +300 -0
  111. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_policy_content.py +299 -0
  112. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_policy_inspection_result.py +75 -0
  113. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_read_request.py +50 -0
  114. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource.py +875 -0
  115. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_asset.py +23 -0
  116. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_batch.py +32 -0
  117. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_binding.py +53 -0
  118. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_chain.py +36 -0
  119. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_consumption.py +22 -0
  120. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_decision.py +109 -0
  121. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_definition.py +96 -0
  122. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_dispatch.py +49 -0
  123. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_draft.py +165 -0
  124. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_evidence.py +67 -0
  125. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_feedback.py +51 -0
  126. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_grade.py +127 -0
  127. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_iteration.py +55 -0
  128. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_kind.py +7 -0
  129. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_package.py +247 -0
  130. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_policy.py +300 -0
  131. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_reservation.py +56 -0
  132. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_reward.py +161 -0
  133. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_reward_check.py +126 -0
  134. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_schedule.py +35 -0
  135. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_schedule_fire.py +32 -0
  136. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_resource_source.py +56 -0
  137. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_review_origin.py +19 -0
  138. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_revision_ref.py +11 -0
  139. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_schedule.py +35 -0
  140. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_schedule_fire.py +32 -0
  141. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source.py +56 -0
  142. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_configuration.py +19 -0
  143. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_configuration_request.py +10 -0
  144. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_content.py +55 -0
  145. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_credential.py +16 -0
  146. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_credential_created.py +21 -0
  147. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_credential_page.py +21 -0
  148. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_credential_request.py +32 -0
  149. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_source_credential_secret.py +7 -0
  150. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_task_queue_inspection.py +18 -0
  151. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_text_asset.py +23 -0
  152. ponder_sdk-0.1.0/src/ponder_sdk/inputs/learning_text_asset_content.py +22 -0
  153. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_initial_learning.py +14 -0
  154. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_profile_evaluation_selection.py +19 -0
  155. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_profile_source_selection.py +16 -0
  156. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project.py +132 -0
  157. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_api_error.py +14 -0
  158. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_base_model.py +15 -0
  159. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_base_model_candidate.py +22 -0
  160. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_configuration_check.py +23 -0
  161. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_editable.py +90 -0
  162. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_immutable_ref.py +10 -0
  163. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_recipe_document.py +11 -0
  164. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_resource_summary.py +17 -0
  165. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_save_request.py +107 -0
  166. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_taskset_sync.py +17 -0
  167. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_training_method.py +7 -0
  168. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_training_setup.py +80 -0
  169. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_project_versioned_ref.py +11 -0
  170. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_details.py +384 -0
  171. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_list_query.py +12 -0
  172. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_page.py +61 -0
  173. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_policy.py +226 -0
  174. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_request.py +256 -0
  175. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_result.py +434 -0
  176. ponder_sdk-0.1.0/src/ponder_sdk/inputs/model_taskset_run_summary.py +56 -0
  177. ponder_sdk-0.1.0/src/ponder_sdk/inputs/nightly_schedule.py +10 -0
  178. ponder_sdk-0.1.0/src/ponder_sdk/inputs/policy_optimization_request.py +57 -0
  179. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_attachment.py +326 -0
  180. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_control.py +11 -0
  181. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_plan.py +359 -0
  182. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_qualification.py +28 -0
  183. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_state.py +7 -0
  184. ponder_sdk-0.1.0/src/ponder_sdk/inputs/post_training_summary.py +30 -0
  185. ponder_sdk-0.1.0/src/ponder_sdk/inputs/prepared_task_evidence_span.py +19 -0
  186. ponder_sdk-0.1.0/src/ponder_sdk/inputs/prepared_task_provenance.py +32 -0
  187. ponder_sdk-0.1.0/src/ponder_sdk/inputs/prepared_task_qualification.py +38 -0
  188. ponder_sdk-0.1.0/src/ponder_sdk/inputs/publish_checked_reward_command.py +19 -0
  189. ponder_sdk-0.1.0/src/ponder_sdk/inputs/publish_learning_resource_command.py +663 -0
  190. ponder_sdk-0.1.0/src/ponder_sdk/inputs/publish_learning_resources_command.py +650 -0
  191. ponder_sdk-0.1.0/src/ponder_sdk/inputs/queue_reward_check_command.py +19 -0
  192. ponder_sdk-0.1.0/src/ponder_sdk/inputs/queue_task_grade_command.py +23 -0
  193. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reserve_learning_iteration_command.py +33 -0
  194. ponder_sdk-0.1.0/src/ponder_sdk/inputs/resolve_task_feedback_command.py +21 -0
  195. ponder_sdk-0.1.0/src/ponder_sdk/inputs/retry_learning_iteration_dispatch_command.py +12 -0
  196. ponder_sdk-0.1.0/src/ponder_sdk/inputs/review_task_evidence_command.py +26 -0
  197. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_authoring_fields.py +69 -0
  198. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_calibration_closure.py +437 -0
  199. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_check_run.py +126 -0
  200. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_check_runtime.py +11 -0
  201. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_fixture.py +31 -0
  202. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_fixture_authoring_fields.py +38 -0
  203. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_fixture_check_result.py +75 -0
  204. ponder_sdk-0.1.0/src/ponder_sdk/inputs/reward_model_training_request.py +34 -0
  205. ponder_sdk-0.1.0/src/ponder_sdk/inputs/save_authoring_draft_command.py +149 -0
  206. ponder_sdk-0.1.0/src/ponder_sdk/inputs/seal_task_batch_command.py +21 -0
  207. ponder_sdk-0.1.0/src/ponder_sdk/inputs/submit_task_example_command.py +61 -0
  208. ponder_sdk-0.1.0/src/ponder_sdk/inputs/submit_task_feedback_command.py +26 -0
  209. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_admission_decision.py +109 -0
  210. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_admission_decision_content.py +108 -0
  211. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_batch.py +32 -0
  212. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_batch_content.py +31 -0
  213. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_batch_package_metadata.py +287 -0
  214. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_definition.py +96 -0
  215. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_definition_content.py +95 -0
  216. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_evidence.py +67 -0
  217. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_evidence_content.py +66 -0
  218. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_evidence_inspection_result.py +30 -0
  219. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_example_submission.py +55 -0
  220. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_feedback.py +51 -0
  221. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_feedback_submission.py +20 -0
  222. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_format_authoring_fields.py +51 -0
  223. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_grade_run.py +127 -0
  224. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_intake_file.py +10 -0
  225. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_intake_format.py +7 -0
  226. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_intake_preview.py +37 -0
  227. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_intake_record.py +23 -0
  228. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_rating.py +19 -0
  229. ponder_sdk-0.1.0/src/ponder_sdk/inputs/task_source_mapping.py +18 -0
  230. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_acceptance_group_page.py +31 -0
  231. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_acceptance_group_query.py +10 -0
  232. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_acceptance_group_reference.py +11 -0
  233. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_acceptance_group_summary.py +23 -0
  234. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_api_error.py +14 -0
  235. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_candidate_decision.py +39 -0
  236. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_candidate_decision_request.py +23 -0
  237. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_capabilities.py +68 -0
  238. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_capability_requirement.py +11 -0
  239. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_checkpoint_recovery_request.py +34 -0
  240. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_checkpoint_recovery_resource_approval.py +23 -0
  241. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_estimate.py +132 -0
  242. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_estimate_component.py +20 -0
  243. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_estimate_request.py +388 -0
  244. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_estimate_review.py +14 -0
  245. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_estimate_source.py +383 -0
  246. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_evaluation_source.py +32 -0
  247. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_evaluation_task_page.py +53 -0
  248. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_evaluation_task_result.py +26 -0
  249. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_execution_receipt.py +55 -0
  250. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_gpu_catalog.py +29 -0
  251. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_gpu_selection.py +18 -0
  252. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_handoff_context.py +212 -0
  253. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_handoff_origin.py +206 -0
  254. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_harness_source_publication.py +17 -0
  255. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_input_artifact.py +20 -0
  256. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_input_artifact_upload.py +19 -0
  257. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job.py +83 -0
  258. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_approval.py +14 -0
  259. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_control_request.py +9 -0
  260. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_event.py +17 -0
  261. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_kind.py +7 -0
  262. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_log.py +14 -0
  263. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_output.py +17 -0
  264. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_outputs.py +73 -0
  265. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_page.py +89 -0
  266. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_recovery.py +34 -0
  267. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_request.py +73 -0
  268. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_source.py +241 -0
  269. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_state.py +7 -0
  270. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_job_submission.py +361 -0
  271. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_physical_placement.py +18 -0
  272. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_policy_lora_capabilities.py +26 -0
  273. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_control.py +21 -0
  274. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_list_query.py +12 -0
  275. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_page.py +312 -0
  276. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_plan.py +297 -0
  277. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_plan_content.py +296 -0
  278. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_receipt.py +305 -0
  279. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_preparation_request.py +256 -0
  280. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_qualification_base_model.py +15 -0
  281. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_qualification_evidence.py +34 -0
  282. ponder_sdk-0.1.0/src/ponder_sdk/inputs/training_queue_status.py +23 -0
  283. ponder_sdk-0.1.0/src/ponder_sdk/learning.py +112 -0
  284. ponder_sdk-0.1.0/src/ponder_sdk/models/__init__.py +266 -0
  285. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_attempt.py +52 -0
  286. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_check.py +34 -0
  287. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_group_manifest.py +56 -0
  288. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_group_manifest_content.py +55 -0
  289. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_group_snapshot.py +109 -0
  290. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_group_snapshot_content.py +108 -0
  291. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_measurement.py +26 -0
  292. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_plan.py +43 -0
  293. ponder_sdk-0.1.0/src/ponder_sdk/models/acceptance_plan_content.py +42 -0
  294. ponder_sdk-0.1.0/src/ponder_sdk/models/apply_task_correction_command.py +18 -0
  295. ponder_sdk-0.1.0/src/ponder_sdk/models/archive_authoring_draft_command.py +17 -0
  296. ponder_sdk-0.1.0/src/ponder_sdk/models/attach_post_training.py +331 -0
  297. ponder_sdk-0.1.0/src/ponder_sdk/models/authoring_draft.py +165 -0
  298. ponder_sdk-0.1.0/src/ponder_sdk/models/authoring_draft_content.py +162 -0
  299. ponder_sdk-0.1.0/src/ponder_sdk/models/authoring_draft_finalization.py +17 -0
  300. ponder_sdk-0.1.0/src/ponder_sdk/models/authoring_draft_input.py +144 -0
  301. ponder_sdk-0.1.0/src/ponder_sdk/models/authoring_target_kind.py +7 -0
  302. ponder_sdk-0.1.0/src/ponder_sdk/models/bound_judge_response.py +18 -0
  303. ponder_sdk-0.1.0/src/ponder_sdk/models/cancel_learning_iteration_command.py +12 -0
  304. ponder_sdk-0.1.0/src/ponder_sdk/models/cancel_learning_iteration_reservation_command.py +12 -0
  305. ponder_sdk-0.1.0/src/ponder_sdk/models/cancel_reward_check_command.py +12 -0
  306. ponder_sdk-0.1.0/src/ponder_sdk/models/cancel_task_grade_command.py +12 -0
  307. ponder_sdk-0.1.0/src/ponder_sdk/models/combined_reward_authoring_fields.py +46 -0
  308. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_metric_observation.py +47 -0
  309. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_metric_summary.py +52 -0
  310. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_opportunity.py +26 -0
  311. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_verification_check.py +27 -0
  312. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_verification_plan.py +56 -0
  313. ponder_sdk-0.1.0/src/ponder_sdk/models/correction_verification_plan_content.py +55 -0
  314. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_accounting.py +15 -0
  315. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_candidate.py +83 -0
  316. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_candidate_page.py +91 -0
  317. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_command.py +22 -0
  318. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_coverage.py +25 -0
  319. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_create.py +82 -0
  320. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_grant.py +23 -0
  321. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_grant_create.py +12 -0
  322. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_list.py +193 -0
  323. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_operation_result.py +192 -0
  324. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_policy.py +76 -0
  325. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_preview.py +40 -0
  326. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_run.py +186 -0
  327. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_source.py +22 -0
  328. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_stage.py +7 -0
  329. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_status.py +7 -0
  330. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_preparation_task_class.py +7 -0
  331. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_begin_version.py +10 -0
  332. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_list.py +35 -0
  333. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_list_query.py +13 -0
  334. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_operation_kind.py +7 -0
  335. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_operation_result.py +741 -0
  336. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_publish.py +12 -0
  337. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_receipt.py +733 -0
  338. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_validate_request.py +9 -0
  339. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_validation.py +20 -0
  340. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_versions.py +30 -0
  341. ponder_sdk-0.1.0/src/ponder_sdk/models/dataset_workspace_write.py +718 -0
  342. ponder_sdk-0.1.0/src/ponder_sdk/models/harness_experiment_policy.py +169 -0
  343. ponder_sdk-0.1.0/src/ponder_sdk/models/harness_policy_source_package.py +98 -0
  344. ponder_sdk-0.1.0/src/ponder_sdk/models/harness_source_package.py +98 -0
  345. ponder_sdk-0.1.0/src/ponder_sdk/models/harness_source_selection.py +17 -0
  346. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_model_project_detail.py +111 -0
  347. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_model_project_link.py +29 -0
  348. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_model_project_summary.py +97 -0
  349. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_model_project_sync.py +93 -0
  350. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_model_project_training_setup.py +80 -0
  351. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_training_policy_control.py +15 -0
  352. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_training_policy_detail.py +517 -0
  353. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_training_setup_action.py +7 -0
  354. ponder_sdk-0.1.0/src/ponder_sdk/models/hosted_training_setup_catalog.py +532 -0
  355. ponder_sdk-0.1.0/src/ponder_sdk/models/import_task_intake_command.py +20 -0
  356. ponder_sdk-0.1.0/src/ponder_sdk/models/judge_call_reservation.py +26 -0
  357. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_accepted_parent.py +24 -0
  358. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_batch_publication.py +10 -0
  359. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_batch_publication_result.py +14 -0
  360. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_candidate_decision_observation.py +28 -0
  361. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_chain.py +36 -0
  362. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_command.py +1010 -0
  363. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_command_request.py +1013 -0
  364. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_consumption.py +22 -0
  365. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_continuation_mode_override.py +16 -0
  366. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_eligibility_counts.py +12 -0
  367. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration.py +55 -0
  368. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_dispatch.py +49 -0
  369. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_observation.py +24 -0
  370. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_reservation.py +56 -0
  371. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_status.py +7 -0
  372. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_submission.py +13 -0
  373. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_iteration_trigger.py +22 -0
  374. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_json_object.py +9 -0
  375. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_json_pointer.py +7 -0
  376. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_operation_result.py +1289 -0
  377. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_policy.py +300 -0
  378. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_policy_content.py +299 -0
  379. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_policy_inspection_result.py +75 -0
  380. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_read_request.py +50 -0
  381. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource.py +875 -0
  382. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_asset.py +23 -0
  383. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_batch.py +32 -0
  384. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_binding.py +53 -0
  385. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_chain.py +36 -0
  386. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_consumption.py +22 -0
  387. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_decision.py +109 -0
  388. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_definition.py +96 -0
  389. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_dispatch.py +49 -0
  390. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_draft.py +165 -0
  391. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_evidence.py +67 -0
  392. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_feedback.py +51 -0
  393. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_grade.py +127 -0
  394. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_iteration.py +55 -0
  395. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_kind.py +7 -0
  396. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_package.py +247 -0
  397. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_policy.py +300 -0
  398. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_reservation.py +56 -0
  399. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_reward.py +161 -0
  400. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_reward_check.py +126 -0
  401. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_schedule.py +35 -0
  402. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_schedule_fire.py +32 -0
  403. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_resource_source.py +56 -0
  404. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_review_origin.py +19 -0
  405. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_revision_ref.py +11 -0
  406. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_schedule.py +35 -0
  407. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_schedule_fire.py +32 -0
  408. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source.py +56 -0
  409. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_configuration.py +19 -0
  410. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_configuration_request.py +10 -0
  411. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_content.py +55 -0
  412. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_credential.py +16 -0
  413. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_credential_created.py +21 -0
  414. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_credential_page.py +21 -0
  415. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_credential_request.py +32 -0
  416. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_source_credential_secret.py +7 -0
  417. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_task_queue_inspection.py +18 -0
  418. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_text_asset.py +23 -0
  419. ponder_sdk-0.1.0/src/ponder_sdk/models/learning_text_asset_content.py +22 -0
  420. ponder_sdk-0.1.0/src/ponder_sdk/models/model_initial_learning.py +14 -0
  421. ponder_sdk-0.1.0/src/ponder_sdk/models/model_profile_evaluation_selection.py +19 -0
  422. ponder_sdk-0.1.0/src/ponder_sdk/models/model_profile_source_selection.py +16 -0
  423. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project.py +132 -0
  424. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_api_error.py +14 -0
  425. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_base_model.py +15 -0
  426. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_base_model_candidate.py +22 -0
  427. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_configuration_check.py +23 -0
  428. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_editable.py +90 -0
  429. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_immutable_ref.py +10 -0
  430. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_recipe_document.py +11 -0
  431. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_resource_summary.py +17 -0
  432. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_save_request.py +107 -0
  433. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_taskset_sync.py +17 -0
  434. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_training_method.py +7 -0
  435. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_training_setup.py +80 -0
  436. ponder_sdk-0.1.0/src/ponder_sdk/models/model_project_versioned_ref.py +11 -0
  437. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_details.py +384 -0
  438. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_list_query.py +12 -0
  439. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_page.py +61 -0
  440. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_policy.py +226 -0
  441. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_request.py +256 -0
  442. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_result.py +434 -0
  443. ponder_sdk-0.1.0/src/ponder_sdk/models/model_taskset_run_summary.py +56 -0
  444. ponder_sdk-0.1.0/src/ponder_sdk/models/nightly_schedule.py +10 -0
  445. ponder_sdk-0.1.0/src/ponder_sdk/models/policy_optimization_request.py +57 -0
  446. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_attachment.py +326 -0
  447. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_control.py +11 -0
  448. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_plan.py +359 -0
  449. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_qualification.py +28 -0
  450. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_state.py +7 -0
  451. ponder_sdk-0.1.0/src/ponder_sdk/models/post_training_summary.py +30 -0
  452. ponder_sdk-0.1.0/src/ponder_sdk/models/prepared_task_evidence_span.py +19 -0
  453. ponder_sdk-0.1.0/src/ponder_sdk/models/prepared_task_provenance.py +32 -0
  454. ponder_sdk-0.1.0/src/ponder_sdk/models/prepared_task_qualification.py +38 -0
  455. ponder_sdk-0.1.0/src/ponder_sdk/models/publish_checked_reward_command.py +19 -0
  456. ponder_sdk-0.1.0/src/ponder_sdk/models/publish_learning_resource_command.py +663 -0
  457. ponder_sdk-0.1.0/src/ponder_sdk/models/publish_learning_resources_command.py +650 -0
  458. ponder_sdk-0.1.0/src/ponder_sdk/models/queue_reward_check_command.py +19 -0
  459. ponder_sdk-0.1.0/src/ponder_sdk/models/queue_task_grade_command.py +23 -0
  460. ponder_sdk-0.1.0/src/ponder_sdk/models/reserve_learning_iteration_command.py +33 -0
  461. ponder_sdk-0.1.0/src/ponder_sdk/models/resolve_task_feedback_command.py +21 -0
  462. ponder_sdk-0.1.0/src/ponder_sdk/models/retry_learning_iteration_dispatch_command.py +12 -0
  463. ponder_sdk-0.1.0/src/ponder_sdk/models/review_task_evidence_command.py +26 -0
  464. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_authoring_fields.py +69 -0
  465. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_calibration_closure.py +437 -0
  466. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_check_run.py +126 -0
  467. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_check_runtime.py +11 -0
  468. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_fixture.py +31 -0
  469. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_fixture_authoring_fields.py +38 -0
  470. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_fixture_check_result.py +75 -0
  471. ponder_sdk-0.1.0/src/ponder_sdk/models/reward_model_training_request.py +34 -0
  472. ponder_sdk-0.1.0/src/ponder_sdk/models/save_authoring_draft_command.py +149 -0
  473. ponder_sdk-0.1.0/src/ponder_sdk/models/seal_task_batch_command.py +21 -0
  474. ponder_sdk-0.1.0/src/ponder_sdk/models/submit_task_example_command.py +61 -0
  475. ponder_sdk-0.1.0/src/ponder_sdk/models/submit_task_feedback_command.py +26 -0
  476. ponder_sdk-0.1.0/src/ponder_sdk/models/task_admission_decision.py +109 -0
  477. ponder_sdk-0.1.0/src/ponder_sdk/models/task_admission_decision_content.py +108 -0
  478. ponder_sdk-0.1.0/src/ponder_sdk/models/task_batch.py +32 -0
  479. ponder_sdk-0.1.0/src/ponder_sdk/models/task_batch_content.py +31 -0
  480. ponder_sdk-0.1.0/src/ponder_sdk/models/task_batch_package_metadata.py +287 -0
  481. ponder_sdk-0.1.0/src/ponder_sdk/models/task_definition.py +96 -0
  482. ponder_sdk-0.1.0/src/ponder_sdk/models/task_definition_content.py +95 -0
  483. ponder_sdk-0.1.0/src/ponder_sdk/models/task_evidence.py +67 -0
  484. ponder_sdk-0.1.0/src/ponder_sdk/models/task_evidence_content.py +66 -0
  485. ponder_sdk-0.1.0/src/ponder_sdk/models/task_evidence_inspection_result.py +30 -0
  486. ponder_sdk-0.1.0/src/ponder_sdk/models/task_example_submission.py +55 -0
  487. ponder_sdk-0.1.0/src/ponder_sdk/models/task_feedback.py +51 -0
  488. ponder_sdk-0.1.0/src/ponder_sdk/models/task_feedback_submission.py +20 -0
  489. ponder_sdk-0.1.0/src/ponder_sdk/models/task_format_authoring_fields.py +51 -0
  490. ponder_sdk-0.1.0/src/ponder_sdk/models/task_grade_run.py +127 -0
  491. ponder_sdk-0.1.0/src/ponder_sdk/models/task_intake_file.py +10 -0
  492. ponder_sdk-0.1.0/src/ponder_sdk/models/task_intake_format.py +7 -0
  493. ponder_sdk-0.1.0/src/ponder_sdk/models/task_intake_preview.py +37 -0
  494. ponder_sdk-0.1.0/src/ponder_sdk/models/task_intake_record.py +23 -0
  495. ponder_sdk-0.1.0/src/ponder_sdk/models/task_rating.py +19 -0
  496. ponder_sdk-0.1.0/src/ponder_sdk/models/task_source_mapping.py +18 -0
  497. ponder_sdk-0.1.0/src/ponder_sdk/models/training_acceptance_group_page.py +31 -0
  498. ponder_sdk-0.1.0/src/ponder_sdk/models/training_acceptance_group_query.py +10 -0
  499. ponder_sdk-0.1.0/src/ponder_sdk/models/training_acceptance_group_reference.py +11 -0
  500. ponder_sdk-0.1.0/src/ponder_sdk/models/training_acceptance_group_summary.py +23 -0
  501. ponder_sdk-0.1.0/src/ponder_sdk/models/training_api_error.py +14 -0
  502. ponder_sdk-0.1.0/src/ponder_sdk/models/training_candidate_decision.py +39 -0
  503. ponder_sdk-0.1.0/src/ponder_sdk/models/training_candidate_decision_request.py +23 -0
  504. ponder_sdk-0.1.0/src/ponder_sdk/models/training_capabilities.py +68 -0
  505. ponder_sdk-0.1.0/src/ponder_sdk/models/training_capability_requirement.py +11 -0
  506. ponder_sdk-0.1.0/src/ponder_sdk/models/training_checkpoint_recovery_request.py +34 -0
  507. ponder_sdk-0.1.0/src/ponder_sdk/models/training_checkpoint_recovery_resource_approval.py +23 -0
  508. ponder_sdk-0.1.0/src/ponder_sdk/models/training_estimate.py +132 -0
  509. ponder_sdk-0.1.0/src/ponder_sdk/models/training_estimate_component.py +20 -0
  510. ponder_sdk-0.1.0/src/ponder_sdk/models/training_estimate_request.py +388 -0
  511. ponder_sdk-0.1.0/src/ponder_sdk/models/training_estimate_review.py +14 -0
  512. ponder_sdk-0.1.0/src/ponder_sdk/models/training_estimate_source.py +383 -0
  513. ponder_sdk-0.1.0/src/ponder_sdk/models/training_evaluation_source.py +32 -0
  514. ponder_sdk-0.1.0/src/ponder_sdk/models/training_evaluation_task_page.py +53 -0
  515. ponder_sdk-0.1.0/src/ponder_sdk/models/training_evaluation_task_result.py +26 -0
  516. ponder_sdk-0.1.0/src/ponder_sdk/models/training_execution_receipt.py +55 -0
  517. ponder_sdk-0.1.0/src/ponder_sdk/models/training_gpu_catalog.py +29 -0
  518. ponder_sdk-0.1.0/src/ponder_sdk/models/training_gpu_selection.py +18 -0
  519. ponder_sdk-0.1.0/src/ponder_sdk/models/training_handoff_context.py +212 -0
  520. ponder_sdk-0.1.0/src/ponder_sdk/models/training_handoff_origin.py +206 -0
  521. ponder_sdk-0.1.0/src/ponder_sdk/models/training_harness_source_publication.py +17 -0
  522. ponder_sdk-0.1.0/src/ponder_sdk/models/training_input_artifact.py +20 -0
  523. ponder_sdk-0.1.0/src/ponder_sdk/models/training_input_artifact_upload.py +19 -0
  524. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job.py +83 -0
  525. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_approval.py +14 -0
  526. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_control_request.py +9 -0
  527. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_event.py +17 -0
  528. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_kind.py +7 -0
  529. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_log.py +14 -0
  530. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_output.py +17 -0
  531. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_outputs.py +73 -0
  532. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_page.py +89 -0
  533. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_recovery.py +34 -0
  534. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_request.py +73 -0
  535. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_source.py +241 -0
  536. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_state.py +7 -0
  537. ponder_sdk-0.1.0/src/ponder_sdk/models/training_job_submission.py +361 -0
  538. ponder_sdk-0.1.0/src/ponder_sdk/models/training_physical_placement.py +18 -0
  539. ponder_sdk-0.1.0/src/ponder_sdk/models/training_policy_lora_capabilities.py +26 -0
  540. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_control.py +21 -0
  541. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_list_query.py +12 -0
  542. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_page.py +312 -0
  543. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_plan.py +297 -0
  544. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_plan_content.py +296 -0
  545. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_receipt.py +305 -0
  546. ponder_sdk-0.1.0/src/ponder_sdk/models/training_preparation_request.py +256 -0
  547. ponder_sdk-0.1.0/src/ponder_sdk/models/training_qualification_base_model.py +15 -0
  548. ponder_sdk-0.1.0/src/ponder_sdk/models/training_qualification_evidence.py +34 -0
  549. ponder_sdk-0.1.0/src/ponder_sdk/models/training_queue_status.py +23 -0
  550. ponder_sdk-0.1.0/src/ponder_sdk/models_client.py +56 -0
  551. ponder_sdk-0.1.0/src/ponder_sdk/operation-matrix.json +1640 -0
  552. ponder_sdk-0.1.0/src/ponder_sdk/operations.py +207 -0
  553. ponder_sdk-0.1.0/src/ponder_sdk/portable_assets.py +42 -0
  554. ponder_sdk-0.1.0/src/ponder_sdk/post_training.py +32 -0
  555. ponder_sdk-0.1.0/src/ponder_sdk/py.typed +0 -0
  556. ponder_sdk-0.1.0/src/ponder_sdk/resources.py +40 -0
  557. ponder_sdk-0.1.0/src/ponder_sdk/schema_asset.py +62 -0
  558. ponder_sdk-0.1.0/src/ponder_sdk/schemas.json +35780 -0
  559. ponder_sdk-0.1.0/src/ponder_sdk/training.py +208 -0
  560. ponder_sdk-0.1.0/src/ponder_sdk/transport.py +131 -0
  561. ponder_sdk-0.1.0/src/ponder_sdk/wire-normalization.json +101 -0
  562. ponder_sdk-0.1.0/src/ponder_sdk/wire.py +126 -0
  563. ponder_sdk-0.1.0/tests/test_http_workflow.py +142 -0
  564. ponder_sdk-0.1.0/tools/check_consumer.py +39 -0
  565. ponder_sdk-0.1.0/tools/export-wire.ts +116 -0
  566. ponder_sdk-0.1.0/tools/generate_clients.py +48 -0
  567. ponder_sdk-0.1.0/tools/generate_models.py +79 -0
  568. ponder_sdk-0.1.0/tools/prepare_release.py +20 -0
  569. ponder_sdk-0.1.0/uv.lock +712 -0
@@ -0,0 +1,5 @@
1
+ .venv/
2
+ .pytest_cache/
3
+ __pycache__/
4
+ *.pyc
5
+ dist/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenPond contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,177 @@
1
+ Metadata-Version: 2.5
2
+ Name: ponder-sdk
3
+ Version: 0.1.0
4
+ Summary: Typed native Python access to OpenPond training and learning
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Typing :: Typed
9
+ Requires-Python: >=3.10
10
+ Requires-Dist: httpx<1,>=0.28.1
11
+ Requires-Dist: jsonschema[format]<5,>=4.23
12
+ Requires-Dist: rfc8785<1,>=0.1.4
13
+ Requires-Dist: typing-extensions<5,>=4.12
14
+ Description-Content-Type: text/markdown
15
+
16
+ # Ponder Python SDK
17
+
18
+ Native synchronous and asynchronous access to existing OpenPond training,
19
+ evaluation, dataset and continual-learning APIs. Python3.10+; no Node subprocess,
20
+ Desktop application, or uv installation is required to use the installed wheel.
21
+ Distribution `ponder-sdk`, import `ponder_sdk`, candidate version0.1.0. Name and
22
+ publisher ownership must be verified before publication; this source is not a
23
+ claim that a registry release exists.
24
+
25
+ ```sh
26
+ pip install ponder-sdk==0.1.0
27
+ # or: uv add ponder-sdk==0.1.0
28
+ ```
29
+
30
+ Use an existing workspace API credential and explicit API origin. Do not put
31
+ credentials in source or request URLs. The SDK does not perform a second login.
32
+ For the official CLI use the running app's configured OpenPond home as described
33
+ in the repository configuration guide; the SDK accepts the credential explicitly.
34
+
35
+ ```python
36
+ from ponder_sdk import Client, inputs
37
+
38
+ with Client(base_url="https://staging-api.openpond.ai", api_key=api_key,
39
+ team_id=team_id) as client:
40
+ capabilities = client.training.capabilities()
41
+ # review is an existing reviewed batch and a pinned Model configuration.
42
+ request: inputs.TrainingPreparationRequest = {
43
+ "schemaVersion": "openpond.trainingPreparationRequest.v1",
44
+ "teamId": team_id, "operationId": operation_id, "projectId": project_id,
45
+ "configuration": configuration, "batch": reviewed_batch,
46
+ "name": "Reviewed training", "maximumSpendUsd": approved_spend,
47
+ }
48
+ prepared = client.training.prepare_run(request)
49
+ # Keep the receipt. Start is a separate explicit mutation after review.
50
+ # client.training.start_preparation(prepared["plan"]["id"], {
51
+ # "teamId": team_id, "planHash": prepared["plan"]["contentHash"],
52
+ # "expectedRevision": prepared["revision"],
53
+ # })
54
+ ```
55
+
56
+ Every resource group has matching `AsyncClient` methods and owns the same native
57
+ HTTP pool. Use `async with AsyncClient(...)` and await calls. Close a client when
58
+ finished; cancellation of an async call propagates normally and closes its
59
+ response stream. If cancellation or transport loss occurs during a write, its
60
+ outcome may be unknown: retain the original operation/idempotency key and read the
61
+ existing operation/preparation/job before deciding whether to explicitly replay.
62
+ Writes are never automatically retried. GET reads retry at most3times for bounded
63
+ transport/408/429/selected5xx failures, with250/500ms backoff. Set `read_attempts=1`
64
+ when the caller owns retry policy.
65
+
66
+ `timeout` bounds connect/read/write/pool inactivity and checks elapsed time in the
67
+ streamed body loop. Synchronous calls do not promise an absolute wall-clock
68
+ deadline: header trickling can continue while making progress, and a blocked
69
+ body read can overshoot the elapsed check by one read timeout. Synchronous hard
70
+ workflow cancellation is caller-owned. Async calls additionally enforce one
71
+ `asyncio.wait_for` deadline across connection, headers, body and retries; caller
72
+ cancellation propagates and closes the owned response. This is not a process-kill
73
+ deadline. Async callers can also bound an entire multi-call workflow. Responses are streamed under explicit byte bounds; compression is not
74
+ requested or accepted, and redirects are refused. Structured `PonderError`
75
+ exposes only a safe code/status/outcome_unknown flag, never raw remote messages,
76
+ request bodies, transport URLs or credentials.
77
+
78
+ ## API and authoring boundary
79
+
80
+ `client.training`, `models`, `learning`, `post_training`, `evaluation_runs`,
81
+ `datasets` and `dataset_preparations` cover the shared operation matrix bundled in
82
+ `operation-matrix.json`. Public `inputs` and `models` are generated TypedDict and
83
+ union types, including nested fields, from the TypeScript Zod wire schemas.
84
+ Runtime JSON Schema validation preserves the same default/standard string
85
+ normalization metadata. Additional immutable-reference, request/hash, revision,
86
+ workspace and cursor checks protect the client boundary; server domain admission
87
+ and authorization remain authoritative. Compact training-envelope hashes are independently recomputed. Harness/Learning
88
+ resource seals use a different existing pretty-JSON/localeCompare algorithm;
89
+ Python preserves their authenticated declarations and pinned references without
90
+ claiming independent recomputation or ICU portability. This affects Harness
91
+ source/agent/release, Learning resources, dataset workspace, post-training plan
92
+ and evaluation-manifest seals. Raw Harness file SHA256/size/complete asset closure
93
+ and private-policy visibility are independently checked. Existing sealed resources
94
+ can be submitted/read, while their domain admission remains server-owned. Python
95
+ custom Harness/Reward authoring and a universal Harness hashing bridge are not
96
+ part of this package. Portable resource formats are accepted;
97
+ this SDK does not execute Python-authored custom Rewards or environments.
98
+
99
+ Learning methods accept the existing typed command/read envelopes, including
100
+ explicit workspace `scope`, not a second workflow language. Generic `command`
101
+ provides the current evidence/feedback/review/batch/policy/iteration controls.
102
+ `submit_example` and `submit_feedback` wrap the existing typed submissions.
103
+ See `examples/continual.py` for native API orchestration. Learning resource pages
104
+ retain `nextCursor`; callers pass it as `afterId` in the next read. Training job
105
+ pages use `cursor`, preparations use `afterId`, and evaluation pages use their
106
+ numeric consecutive offset cursor. Never restart pagination from the beginning
107
+ after a failed mutation. All page APIs expose the full retained cursor.
108
+
109
+ The existing estimate client contract has no current hosted route and is not a
110
+ prerequisite for preparation/start. Known unavailable routes raise
111
+ `unsupported_hosted_operation` before dispatch; the matrix records local/hosted
112
+ availability. Fresh GPU catalog and explicit approved spend remain subject to
113
+ server admission.
114
+
115
+ Current executable training is discovered through capabilities: GRPO and
116
+ reward-model jobs in the deployed host's supported model/runtime envelope.
117
+ Recipe schema enums do not establish SFT/DPO/PPO or gradient/session support.
118
+ Candidate decisions do not activate serving. Training start, funding, evaluation
119
+ start/retry, acceptance and serving are separate explicit controls. Ordinary
120
+ hosted `prepare_run` compiles an existing reviewed batch on the server; Python
121
+ never shells out to a Node authoring compiler. Advanced `stage_artifact` and
122
+ `create_job` require already-authored portable artifacts, immutable hashes,
123
+ capabilities and exact approval. Dataset source ingestion/large uploads remain
124
+ subject to the existing public format and API limits.
125
+
126
+ ## Development and release
127
+
128
+ ```sh
129
+ uv sync --project python/openpond-sdk --locked
130
+ pnpm exec tsx python/openpond-sdk/tools/export-wire.ts
131
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_models.py
132
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_models.py --inputs
133
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_clients.py
134
+ uv run --project python/openpond-sdk pytest python/openpond-sdk/tests
135
+ uv build --project python/openpond-sdk --no-sources
136
+ ```
137
+
138
+ The schema asset uses versioned, lossless structural interning. One bounded
139
+ strict decoder expands it before validation or type generation; JSON Schema
140
+ local references, parsing policies and annotations retain their original scope.
141
+ The shared and packaged asset bytes match.
142
+
143
+ The command is a development schema exporter only; installed consumers never
144
+ need it. Shared canonical fixtures include omitted/null, Unicode, integer-key
145
+ ordering and JavaScript number boundaries. The canonical JSON implementation
146
+ matches the existing protocol, including JS array-index enumeration; plain JCS
147
+ object sorting alone would give different hashes. Python integers must be exactly
148
+ representable as a JavaScript binary64 value rather than silently rounded.
149
+
150
+ `tools/prepare_release.py` builds source/wheel distributions and records exact
151
+ hashes without publishing. `tools/check_consumer.py` verifies the exact wheel in
152
+ isolated temporary pip and uv environments. The manual
153
+ `.github/workflows/release-python-sdk.yml` workflow first builds, validates and
154
+ uploads immutable candidate artifacts after successful CI on that source commit.
155
+ It never publishes from the build lane. After reviewing that run's manifest,
156
+ source bindings, wheel, source distribution and consumer receipt, publish the
157
+ same artifacts with their exact source/run/version/manifest binding:
158
+
159
+ ```sh
160
+ # Run from the reviewed source ref; these are operator commands, not yet run.
161
+ gh workflow run release-python-sdk.yml --ref REVIEWED_REF -f mode=build -f version=0.1.0
162
+ gh run download REVIEWED_BUILD_RUN -n ponder-python-candidate -D reviewed-python-candidate
163
+ sha256sum reviewed-python-candidate/manifest.json
164
+ gh workflow run release-python-sdk.yml --ref REVIEWED_REF -f mode=publish -f version=0.1.0 -f candidate_run_id=REVIEWED_BUILD_RUN -f candidate_sha=REVIEWED_40_CHARACTER_COMMIT -f manifest_sha256=REVIEWED_MANIFEST_SHA256
165
+ ```
166
+
167
+ The publish lane requires the protected `pypi-production` environment and
168
+ `PONDER_SDK_PYPI_OWNER_VERIFIED=true`, set only after independent project ownership
169
+ and exact repository/workflow/environment trusted-publisher bootstrap. No token
170
+ or first-publication authority is inferred from the package name or build. It
171
+ downloads the reviewed build without rebuilding, checks all artifact digests,
172
+ reconciles any already-published exact version and uses the pinned official PyPI
173
+ OIDC action. A mismatching existing release refuses; an ambiguous upload requires
174
+ read-only reconciliation of those same digests before retrying. A wheel hash is
175
+ not publisher ownership. Actual hosted qualification
176
+ requires retained API receipts and separately authorized compute; local consumer
177
+ checks do not claim GPU execution, wrong-team deployed denial or live serving.
@@ -0,0 +1,162 @@
1
+ # Ponder Python SDK
2
+
3
+ Native synchronous and asynchronous access to existing OpenPond training,
4
+ evaluation, dataset and continual-learning APIs. Python3.10+; no Node subprocess,
5
+ Desktop application, or uv installation is required to use the installed wheel.
6
+ Distribution `ponder-sdk`, import `ponder_sdk`, candidate version0.1.0. Name and
7
+ publisher ownership must be verified before publication; this source is not a
8
+ claim that a registry release exists.
9
+
10
+ ```sh
11
+ pip install ponder-sdk==0.1.0
12
+ # or: uv add ponder-sdk==0.1.0
13
+ ```
14
+
15
+ Use an existing workspace API credential and explicit API origin. Do not put
16
+ credentials in source or request URLs. The SDK does not perform a second login.
17
+ For the official CLI use the running app's configured OpenPond home as described
18
+ in the repository configuration guide; the SDK accepts the credential explicitly.
19
+
20
+ ```python
21
+ from ponder_sdk import Client, inputs
22
+
23
+ with Client(base_url="https://staging-api.openpond.ai", api_key=api_key,
24
+ team_id=team_id) as client:
25
+ capabilities = client.training.capabilities()
26
+ # review is an existing reviewed batch and a pinned Model configuration.
27
+ request: inputs.TrainingPreparationRequest = {
28
+ "schemaVersion": "openpond.trainingPreparationRequest.v1",
29
+ "teamId": team_id, "operationId": operation_id, "projectId": project_id,
30
+ "configuration": configuration, "batch": reviewed_batch,
31
+ "name": "Reviewed training", "maximumSpendUsd": approved_spend,
32
+ }
33
+ prepared = client.training.prepare_run(request)
34
+ # Keep the receipt. Start is a separate explicit mutation after review.
35
+ # client.training.start_preparation(prepared["plan"]["id"], {
36
+ # "teamId": team_id, "planHash": prepared["plan"]["contentHash"],
37
+ # "expectedRevision": prepared["revision"],
38
+ # })
39
+ ```
40
+
41
+ Every resource group has matching `AsyncClient` methods and owns the same native
42
+ HTTP pool. Use `async with AsyncClient(...)` and await calls. Close a client when
43
+ finished; cancellation of an async call propagates normally and closes its
44
+ response stream. If cancellation or transport loss occurs during a write, its
45
+ outcome may be unknown: retain the original operation/idempotency key and read the
46
+ existing operation/preparation/job before deciding whether to explicitly replay.
47
+ Writes are never automatically retried. GET reads retry at most3times for bounded
48
+ transport/408/429/selected5xx failures, with250/500ms backoff. Set `read_attempts=1`
49
+ when the caller owns retry policy.
50
+
51
+ `timeout` bounds connect/read/write/pool inactivity and checks elapsed time in the
52
+ streamed body loop. Synchronous calls do not promise an absolute wall-clock
53
+ deadline: header trickling can continue while making progress, and a blocked
54
+ body read can overshoot the elapsed check by one read timeout. Synchronous hard
55
+ workflow cancellation is caller-owned. Async calls additionally enforce one
56
+ `asyncio.wait_for` deadline across connection, headers, body and retries; caller
57
+ cancellation propagates and closes the owned response. This is not a process-kill
58
+ deadline. Async callers can also bound an entire multi-call workflow. Responses are streamed under explicit byte bounds; compression is not
59
+ requested or accepted, and redirects are refused. Structured `PonderError`
60
+ exposes only a safe code/status/outcome_unknown flag, never raw remote messages,
61
+ request bodies, transport URLs or credentials.
62
+
63
+ ## API and authoring boundary
64
+
65
+ `client.training`, `models`, `learning`, `post_training`, `evaluation_runs`,
66
+ `datasets` and `dataset_preparations` cover the shared operation matrix bundled in
67
+ `operation-matrix.json`. Public `inputs` and `models` are generated TypedDict and
68
+ union types, including nested fields, from the TypeScript Zod wire schemas.
69
+ Runtime JSON Schema validation preserves the same default/standard string
70
+ normalization metadata. Additional immutable-reference, request/hash, revision,
71
+ workspace and cursor checks protect the client boundary; server domain admission
72
+ and authorization remain authoritative. Compact training-envelope hashes are independently recomputed. Harness/Learning
73
+ resource seals use a different existing pretty-JSON/localeCompare algorithm;
74
+ Python preserves their authenticated declarations and pinned references without
75
+ claiming independent recomputation or ICU portability. This affects Harness
76
+ source/agent/release, Learning resources, dataset workspace, post-training plan
77
+ and evaluation-manifest seals. Raw Harness file SHA256/size/complete asset closure
78
+ and private-policy visibility are independently checked. Existing sealed resources
79
+ can be submitted/read, while their domain admission remains server-owned. Python
80
+ custom Harness/Reward authoring and a universal Harness hashing bridge are not
81
+ part of this package. Portable resource formats are accepted;
82
+ this SDK does not execute Python-authored custom Rewards or environments.
83
+
84
+ Learning methods accept the existing typed command/read envelopes, including
85
+ explicit workspace `scope`, not a second workflow language. Generic `command`
86
+ provides the current evidence/feedback/review/batch/policy/iteration controls.
87
+ `submit_example` and `submit_feedback` wrap the existing typed submissions.
88
+ See `examples/continual.py` for native API orchestration. Learning resource pages
89
+ retain `nextCursor`; callers pass it as `afterId` in the next read. Training job
90
+ pages use `cursor`, preparations use `afterId`, and evaluation pages use their
91
+ numeric consecutive offset cursor. Never restart pagination from the beginning
92
+ after a failed mutation. All page APIs expose the full retained cursor.
93
+
94
+ The existing estimate client contract has no current hosted route and is not a
95
+ prerequisite for preparation/start. Known unavailable routes raise
96
+ `unsupported_hosted_operation` before dispatch; the matrix records local/hosted
97
+ availability. Fresh GPU catalog and explicit approved spend remain subject to
98
+ server admission.
99
+
100
+ Current executable training is discovered through capabilities: GRPO and
101
+ reward-model jobs in the deployed host's supported model/runtime envelope.
102
+ Recipe schema enums do not establish SFT/DPO/PPO or gradient/session support.
103
+ Candidate decisions do not activate serving. Training start, funding, evaluation
104
+ start/retry, acceptance and serving are separate explicit controls. Ordinary
105
+ hosted `prepare_run` compiles an existing reviewed batch on the server; Python
106
+ never shells out to a Node authoring compiler. Advanced `stage_artifact` and
107
+ `create_job` require already-authored portable artifacts, immutable hashes,
108
+ capabilities and exact approval. Dataset source ingestion/large uploads remain
109
+ subject to the existing public format and API limits.
110
+
111
+ ## Development and release
112
+
113
+ ```sh
114
+ uv sync --project python/openpond-sdk --locked
115
+ pnpm exec tsx python/openpond-sdk/tools/export-wire.ts
116
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_models.py
117
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_models.py --inputs
118
+ uv run --project python/openpond-sdk python python/openpond-sdk/tools/generate_clients.py
119
+ uv run --project python/openpond-sdk pytest python/openpond-sdk/tests
120
+ uv build --project python/openpond-sdk --no-sources
121
+ ```
122
+
123
+ The schema asset uses versioned, lossless structural interning. One bounded
124
+ strict decoder expands it before validation or type generation; JSON Schema
125
+ local references, parsing policies and annotations retain their original scope.
126
+ The shared and packaged asset bytes match.
127
+
128
+ The command is a development schema exporter only; installed consumers never
129
+ need it. Shared canonical fixtures include omitted/null, Unicode, integer-key
130
+ ordering and JavaScript number boundaries. The canonical JSON implementation
131
+ matches the existing protocol, including JS array-index enumeration; plain JCS
132
+ object sorting alone would give different hashes. Python integers must be exactly
133
+ representable as a JavaScript binary64 value rather than silently rounded.
134
+
135
+ `tools/prepare_release.py` builds source/wheel distributions and records exact
136
+ hashes without publishing. `tools/check_consumer.py` verifies the exact wheel in
137
+ isolated temporary pip and uv environments. The manual
138
+ `.github/workflows/release-python-sdk.yml` workflow first builds, validates and
139
+ uploads immutable candidate artifacts after successful CI on that source commit.
140
+ It never publishes from the build lane. After reviewing that run's manifest,
141
+ source bindings, wheel, source distribution and consumer receipt, publish the
142
+ same artifacts with their exact source/run/version/manifest binding:
143
+
144
+ ```sh
145
+ # Run from the reviewed source ref; these are operator commands, not yet run.
146
+ gh workflow run release-python-sdk.yml --ref REVIEWED_REF -f mode=build -f version=0.1.0
147
+ gh run download REVIEWED_BUILD_RUN -n ponder-python-candidate -D reviewed-python-candidate
148
+ sha256sum reviewed-python-candidate/manifest.json
149
+ gh workflow run release-python-sdk.yml --ref REVIEWED_REF -f mode=publish -f version=0.1.0 -f candidate_run_id=REVIEWED_BUILD_RUN -f candidate_sha=REVIEWED_40_CHARACTER_COMMIT -f manifest_sha256=REVIEWED_MANIFEST_SHA256
150
+ ```
151
+
152
+ The publish lane requires the protected `pypi-production` environment and
153
+ `PONDER_SDK_PYPI_OWNER_VERIFIED=true`, set only after independent project ownership
154
+ and exact repository/workflow/environment trusted-publisher bootstrap. No token
155
+ or first-publication authority is inferred from the package name or build. It
156
+ downloads the reviewed build without rebuilding, checks all artifact digests,
157
+ reconciles any already-published exact version and uses the pinned official PyPI
158
+ OIDC action. A mismatching existing release refuses; an ambiguous upload requires
159
+ read-only reconciliation of those same digests before retrying. A wheel hash is
160
+ not publisher ownership. Actual hosted qualification
161
+ requires retained API receipts and separately authorized compute; local consumer
162
+ checks do not claim GPU execution, wrong-team deployed denial or live serving.
@@ -0,0 +1,73 @@
1
+ """One explicit existing continual transition or finite retained snapshot.
2
+
3
+ Reservation may trigger paid host dispatch. Never replay an uncertain mutation
4
+ with a new operation ID; use read-only reconcile/status instead.
5
+ """
6
+ import argparse,asyncio,json,os
7
+ from pathlib import Path
8
+ from ponder_sdk import AsyncClient,ProtocolError
9
+ from ponder_sdk.wire import validate
10
+
11
+ async def main():
12
+ parser=argparse.ArgumentParser();parser.add_argument('action',choices=['inspect','command','reserve','reconcile','status','results','cancel','retry']);parser.add_argument('input',type=Path);parser.add_argument('output',type=Path);args=parser.parse_args()
13
+ raw=args.input.read_bytes()
14
+ if len(raw)>16777216:raise ProtocolError('input_too_large')
15
+ value=json.loads(raw)
16
+ async with AsyncClient(base_url=os.environ['OPENPOND_API_URL'],api_key=os.environ['OPENPOND_API_KEY'],team_id=os.environ['OPENPOND_TEAM_ID']) as client:
17
+ scope=client.team_id
18
+ if args.action=='inspect':response=await client.learning.inspect_policy({'action':'inspect_policy','scope':scope,'policy':value})
19
+ elif args.action=='reconcile':
20
+ value=validate('LearningCommandSchema',value,request=True)
21
+ if value.get('action')!='reserve_iteration' or value['trigger']['kind']!='manual':raise ProtocolError('manual_reservation_command_required')
22
+ inspection=await client.learning.inspect_policy({'action':'inspect_policy','scope':scope,'policy':value['policy']})
23
+ if not inspection['chain']:raise ProtocolError('reservation_not_observed')
24
+ cursor=None;seen=set();response=None
25
+ for _ in range(10):
26
+ page=await client.learning.list({'action':'list','scope':scope,'kind':'reservation','parentId':inspection['chain']['id'],'limit':100,**({'afterId':cursor} if cursor else {})})
27
+ reservation=next((r for r in page['items'] if r['policy']==value['policy'] and r['trigger']==value['trigger']),None)
28
+ if reservation:
29
+ iteration=await client.learning.get({'action':'get','scope':scope,'kind':'iteration','id':reservation['iterationId']})
30
+ response={'reservation':reservation,'iteration':iteration};break
31
+ cursor=page['nextCursor']
32
+ if not cursor:break
33
+ if cursor in seen:raise ProtocolError('repeated_cursor')
34
+ seen.add(cursor)
35
+ if response is None:raise ProtocolError('reservation_not_observed_no_replay')
36
+ elif args.action in ('command','reserve'):
37
+ if (args.action=='reserve')!=(value.get('action')=='reserve_iteration'):raise ProtocolError('explicit_reserve_required')
38
+ if args.action=='reserve' and value['trigger']['kind']!='manual':raise ProtocolError('manual_trigger_required')
39
+ operation=await client.learning.command({'scope':scope,'command':value})
40
+ iteration=next((r for r in operation['resources'] if r['schemaVersion']=='openpond.learningIteration.v1'),None)
41
+ response={'operation':operation,**({'iteration':iteration} if iteration else {})}
42
+ else:
43
+ retained=value['iteration']
44
+ iteration=await client.learning.get({'action':'get','scope':scope,'kind':'iteration','id':retained['id']})
45
+ if iteration['policy']!=retained['policy'] or iteration['dispatchId']!=retained['dispatchId']:raise ProtocolError('iteration_binding_changed')
46
+ if args.action in ('cancel','retry'):
47
+ if args.action=='retry':
48
+ dispatch=await client.learning.get({'action':'get','scope':scope,'kind':'dispatch','id':iteration['dispatchId']})
49
+ if dispatch['iterationId']!=iteration['id'] or dispatch['state']!='blocked':raise ProtocolError('dispatch_not_blocked')
50
+ operation=await client.learning.command({'scope':scope,'command':{'action':'cancel_iteration' if args.action=='cancel' else 'retry_iteration_dispatch','operationId':value['operationId'],'iterationId':iteration['id'],'expectedRevision':iteration['revision']}})
51
+ response={'operation':operation,'iteration':next((r for r in operation['resources'] if r['schemaVersion']=='openpond.learningIteration.v1'),iteration)}
52
+ else:
53
+ page=await client.learning.list({'action':'list','scope':scope,'kind':'dispatch','parentId':iteration['id'],'limit':2})
54
+ if page['nextCursor'] or len(page['items'])>1 or any(d['id']!=iteration['dispatchId'] for d in page['items']):raise ProtocolError('ambiguous_dispatch_identity')
55
+ dispatch=page['items'][0] if page['items'] else None
56
+ # Worker commits iteration and dispatch together, but these HTTP
57
+ # reads are separate snapshots. Refresh once and refuse a race.
58
+ iteration=await client.learning.get({'action':'get','scope':scope,'kind':'iteration','id':retained['id']})
59
+ if iteration['policy']!=retained['policy'] or iteration['dispatchId']!=retained['dispatchId']:raise ProtocolError('iteration_binding_changed')
60
+ if dispatch and (dispatch['iterationId']!=iteration['id'] or dispatch['policy']!=iteration['policy'] or dispatch['execution']!=iteration['trainingJob']):raise ProtocolError('snapshot_changed_read_again')
61
+ if dispatch is None and iteration['trainingJob'] is not None:raise ProtocolError('snapshot_changed_read_again')
62
+ job=await client.training.get_job(iteration['trainingJob']['id']) if iteration['trainingJob'] else None
63
+ if job and (job['id']!=iteration['trainingJob']['id'] or job['submissionHash']!=iteration['trainingJob']['contentHash']):raise ProtocolError('training_execution_identity_mismatch')
64
+ if args.action=='results' and (not dispatch or dispatch['state']!='settled' or not dispatch['terminalReceipt']):raise ProtocolError('terminal_cleanup_receipt_not_observed')
65
+ if args.action=='results' and job is None and (iteration['status']!='cancelled' or dispatch['execution'] is not None):raise ProtocolError('terminal_job_not_observed')
66
+ response={'iteration':iteration,'dispatch':dispatch,'job':job}
67
+ if args.action=='results' and job:response['outputs']=await client.training.outputs(job['id'])
68
+ fd=os.open(args.output,os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600)
69
+ with os.fdopen(fd,'w',encoding='utf-8') as file:json.dump(response,file,ensure_ascii=True)
70
+ print('Saved one retained transition/snapshot. Local timeout does not cancel remote work.')
71
+
72
+ # Total client workflow is bounded, including multiple sequential public reads.
73
+ asyncio.run(asyncio.wait_for(main(),timeout=120))
@@ -0,0 +1,50 @@
1
+ """Native reviewed-batch orchestration; each mutation is selected explicitly.
2
+
3
+ OPENPOND_API_URL / OPENPOND_API_KEY / OPENPOND_TEAM_ID are existing credentials,
4
+ not a second login. Never execute this example as a test without approval.
5
+ """
6
+ import argparse,asyncio,json,os
7
+ from datetime import datetime,timezone
8
+ from pathlib import Path
9
+ from ponder_sdk import AsyncClient,ProtocolError
10
+
11
+ async def main():
12
+ parser=argparse.ArgumentParser()
13
+ parser.add_argument('action',choices=['prepare','start','status','results','cancel'])
14
+ parser.add_argument('input',type=Path);parser.add_argument('output',type=Path)
15
+ args=parser.parse_args()
16
+ raw=args.input.read_bytes()
17
+ if len(raw)>1048576:raise ProtocolError('input_too_large')
18
+ value=json.loads(raw)
19
+ async with AsyncClient(base_url=os.environ['OPENPOND_API_URL'],api_key=os.environ['OPENPOND_API_KEY'],team_id=os.environ['OPENPOND_TEAM_ID']) as client:
20
+ if args.action=='prepare':
21
+ capabilities=await client.training.capabilities()
22
+ if 'grpo' not in capabilities['methods']:raise ProtocolError('grpo_not_available')
23
+ response=await client.training.prepare_run(value)
24
+ else:
25
+ retained=await client.training.get_preparation(value['plan']['id'])
26
+ if retained['plan']['contentHash']!=value['plan']['contentHash']:raise ProtocolError('preparation_identity_mismatch')
27
+ if args.action=='start':
28
+ if retained['state']!='prepared':raise ProtocolError('reconcile_existing_preparation')
29
+ # No estimate endpoint is invented. The retained request already
30
+ # binds explicit maximum spend; fresh offerings/server admission apply.
31
+ catalog=await client.training.gpu_catalog()
32
+ if datetime.fromisoformat(catalog['expiresAt'].replace('Z','+00:00'))<=datetime.now(timezone.utc):raise ProtocolError('gpu_catalog_expired')
33
+ catalog_fd=os.open(args.output.with_suffix(args.output.suffix+'.catalog.json'),os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600)
34
+ with os.fdopen(catalog_fd,'w',encoding='utf-8') as file:json.dump(catalog,file)
35
+ response=await client.training.start_preparation(retained['plan']['id'],{'teamId':client.team_id,'planHash':retained['plan']['contentHash'],'expectedRevision':retained['revision']})
36
+ elif args.action=='cancel':
37
+ if retained['jobId']:
38
+ job=await client.training.get_job(retained['jobId'])
39
+ response=await client.training.cancel_job(job['id'],{'expectedVersion':job['version']})
40
+ else:response=await client.training.cancel_preparation(retained['plan']['id'],{'teamId':client.team_id,'planHash':retained['plan']['contentHash'],'expectedRevision':retained['revision']})
41
+ elif args.action=='status':response={'preparation':retained,'job':await client.training.get_job(retained['jobId']) if retained['jobId'] else None}
42
+ else:
43
+ if not retained['jobId']:raise ProtocolError('preparation_not_submitted')
44
+ response=await client.training.outputs(retained['jobId'])
45
+ # Receipts may contain private evidence. Do not print them to a shared log.
46
+ fd=os.open(args.output,os.O_WRONLY|os.O_CREAT|os.O_EXCL,0o600)
47
+ with os.fdopen(fd,'w',encoding='utf-8') as file:json.dump(response,file,ensure_ascii=True)
48
+ print('Saved the retained response. Execution/acceptance remain separate gates.')
49
+
50
+ asyncio.run(asyncio.wait_for(main(),timeout=120))
@@ -0,0 +1,29 @@
1
+ [project]
2
+ name = "ponder-sdk"
3
+ version = "0.1.0"
4
+ description = "Typed native Python access to OpenPond training and learning"
5
+ readme = "README.md"
6
+ license = "MIT"
7
+ requires-python = ">=3.10"
8
+ dependencies = ["httpx>=0.28.1,<1", "jsonschema[format]>=4.23,<5", "rfc8785>=0.1.4,<1", "typing-extensions>=4.12,<5"]
9
+ classifiers = ["Typing :: Typed", "Programming Language :: Python :: 3"]
10
+
11
+ [dependency-groups]
12
+ dev = ["pytest>=8.3,<10", "tomli>=2,<3; python_version < '3.11'"]
13
+
14
+ [build-system]
15
+ requires = ["hatchling==1.32.4"]
16
+ build-backend = "hatchling.build"
17
+
18
+ [tool.hatch.build.targets.wheel]
19
+ packages = ["src/ponder_sdk"]
20
+
21
+ [tool.hatch.build.targets.sdist]
22
+ include = ["src", "examples", "tools", "tests", "README.md", "LICENSE", "pyproject.toml", "uv.lock"]
23
+
24
+ [tool.pytest.ini_options]
25
+ testpaths = ["tests"]
26
+ addopts = "-q"
27
+
28
+ [tool.uv]
29
+ required-version = ">=0.9.11"
@@ -0,0 +1,7 @@
1
+ """Ponder Python SDK. Training execution remains capability-gated by the host."""
2
+ from .client import Client,AsyncClient
3
+ from .errors import PonderError,ProtocolError
4
+ from .wire import canonical_json,canonical_sha256
5
+ from . import models,inputs
6
+ __version__='0.1.0'
7
+ __all__=['Client','AsyncClient','PonderError','ProtocolError','canonical_json','canonical_sha256','models','inputs']
@@ -0,0 +1,94 @@
1
+ {
2
+ "schemaVersion": "openpond.canonicalIdentities.v1",
3
+ "vectors": [
4
+ {
5
+ "value": "😀",
6
+ "canonical": "\"😀\"",
7
+ "sha256": "7a0c50b92434b015545fe93ab723db2d4b2cdd14a441405624a9ce8be29f1d5a"
8
+ },
9
+ {
10
+ "value": "\ud800",
11
+ "canonical": "\"\\ud800\"",
12
+ "sha256": "8c0c59dd0d275aadcd462a5fe12eb352cbdfeaf961eae4f85a4660521df7d2f5"
13
+ },
14
+ {
15
+ "value": {
16
+ "__proto__": {
17
+ "retained": true
18
+ },
19
+ "ordinary": 1
20
+ },
21
+ "canonical": "{\"__proto__\":{\"retained\":true},\"ordinary\":1}",
22
+ "sha256": "8d52a329a7fb2167e4d72deefb9d41ed2c78233596ebff7b240d78eab348c1eb"
23
+ },
24
+ {
25
+ "value": {
26
+ "2": 2,
27
+ "10": 1,
28
+ "4294967294": 4,
29
+ "01": 3,
30
+ "4294967295": 5
31
+ },
32
+ "canonical": "{\"2\":2,\"10\":1,\"4294967294\":4,\"01\":3,\"4294967295\":5}",
33
+ "sha256": "7c26965db131091a44f39acaf6c3942dd756609639f983920dc6bdb0142cd42c"
34
+ },
35
+ {
36
+ "value": "\ud800",
37
+ "canonical": "\"\\ud800\"",
38
+ "sha256": "8c0c59dd0d275aadcd462a5fe12eb352cbdfeaf961eae4f85a4660521df7d2f5"
39
+ },
40
+ {
41
+ "value": null,
42
+ "canonical": "null",
43
+ "sha256": "74234e98afe7498fb5daf1f36ac2d78acc339464f950703b8c019892f982b90b"
44
+ },
45
+ {
46
+ "value": {
47
+ "omitted": "kept",
48
+ "present": null
49
+ },
50
+ "canonical": "{\"omitted\":\"kept\",\"present\":null}",
51
+ "sha256": "d0da19ce46bbcb4461108e6f2c2f0516e3318cd7fd92bdff2c03ed22eee8ac83"
52
+ },
53
+ {
54
+ "value": {
55
+ "unicode": "雪😀é",
56
+ "keys": {
57
+ "😀": 1,
58
+ "": 2
59
+ }
60
+ },
61
+ "canonical": "{\"keys\":{\"😀\":1,\"\":2},\"unicode\":\"雪😀é\"}",
62
+ "sha256": "3423a9dd306cadadef53d0a5f3ed563011be1c5535aa070c1cf9241b036acdbe"
63
+ },
64
+ {
65
+ "value": [
66
+ 0,
67
+ 0,
68
+ 1,
69
+ 0.000001,
70
+ 1e-7,
71
+ 100000000000000000000,
72
+ 1e+21,
73
+ 9007199254740991,
74
+ 1000000000000000100
75
+ ],
76
+ "canonical": "[0,0,1,0.000001,1e-7,100000000000000000000,1e+21,9007199254740991,1000000000000000100]",
77
+ "sha256": "273ae0fdf747be4c44e06422fb5b08eed98820708f932cc3cfc74f749a0978af"
78
+ },
79
+ {
80
+ "value": {
81
+ "nested": [
82
+ true,
83
+ false,
84
+ {
85
+ "b": 2,
86
+ "a": 1
87
+ }
88
+ ]
89
+ },
90
+ "canonical": "{\"nested\":[true,false,{\"a\":1,\"b\":2}]}",
91
+ "sha256": "421f4604e52b696d8eb084190e28030fe39187d8d5adced1fa8fadef2dd9ded0"
92
+ }
93
+ ]
94
+ }