freesolo-flash-dev 1.2.119__tar.gz → 1.2.121__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 (1083) hide show
  1. freesolo_flash_dev-1.2.121/CHANGELOG.md +220 -0
  2. freesolo_flash_dev-1.2.121/PKG-INFO +352 -0
  3. freesolo_flash_dev-1.2.121/README.md +269 -0
  4. freesolo_flash_dev-1.2.121/SELF_HOSTING.md +492 -0
  5. freesolo_flash_dev-1.2.121/docs/serving-contract.md +122 -0
  6. freesolo_flash_dev-1.2.121/flash/cli/commands/env/testing/eval.py +899 -0
  7. freesolo_flash_dev-1.2.121/flash/cli/commands/ops/deploy.py +695 -0
  8. freesolo_flash_dev-1.2.121/flash/cli/commands/serving/deploy.py +284 -0
  9. freesolo_flash_dev-1.2.121/flash/cli/commands/serving/identity.py +248 -0
  10. freesolo_flash_dev-1.2.121/flash/cli/commands/serving/status.py +89 -0
  11. freesolo_flash_dev-1.2.121/flash/cli/commands/serving/undeploy.py +103 -0
  12. freesolo_flash_dev-1.2.121/flash/cli/parsing/env.py +261 -0
  13. freesolo_flash_dev-1.2.121/flash/cli/parsing/models.py +136 -0
  14. freesolo_flash_dev-1.2.121/flash/cli/parsing/serve_parser.py +203 -0
  15. freesolo_flash_dev-1.2.121/flash/cli/scaffold/TRAINING.md +1815 -0
  16. freesolo_flash_dev-1.2.121/flash/cli/ui/render.py +795 -0
  17. freesolo_flash_dev-1.2.121/flash/cli/ui/tables.py +155 -0
  18. freesolo_flash_dev-1.2.121/flash/client/http.py +866 -0
  19. freesolo_flash_dev-1.2.121/flash/core/catalog.py +559 -0
  20. freesolo_flash_dev-1.2.121/flash/core/spec.py +863 -0
  21. freesolo_flash_dev-1.2.121/flash/runner/accounting/costs.py +411 -0
  22. freesolo_flash_dev-1.2.121/flash/runner/accounting/reconciliation.py +514 -0
  23. freesolo_flash_dev-1.2.121/flash/runner/lifecycle/preparation.py +633 -0
  24. freesolo_flash_dev-1.2.121/flash/runner/lifecycle/state.py +413 -0
  25. freesolo_flash_dev-1.2.121/flash/runner/lifecycle/status.py +466 -0
  26. freesolo_flash_dev-1.2.121/flash/runner/results/verified_revisions.py +192 -0
  27. freesolo_flash_dev-1.2.121/flash/runner/supervise/attach.py +976 -0
  28. freesolo_flash_dev-1.2.121/flash/runner/supervise/attach_reconcile.py +82 -0
  29. freesolo_flash_dev-1.2.121/flash/runner/supervise/deploy.py +679 -0
  30. freesolo_flash_dev-1.2.121/flash/runner/supervise/recovery.py +644 -0
  31. freesolo_flash_dev-1.2.121/flash/runner/supervise/seed_submission.py +935 -0
  32. freesolo_flash_dev-1.2.121/flash/runner/supervise/transitions.py +280 -0
  33. freesolo_flash_dev-1.2.121/flash/schema/__init__.py +913 -0
  34. freesolo_flash_dev-1.2.121/flash/serve/app/__main__.py +102 -0
  35. freesolo_flash_dev-1.2.121/flash/serve/app/bootstrap.py +165 -0
  36. freesolo_flash_dev-1.2.121/flash/serve/app/chat_stream.py +143 -0
  37. freesolo_flash_dev-1.2.121/flash/serve/app/http.py +331 -0
  38. freesolo_flash_dev-1.2.121/flash/serve/app/launch.py +682 -0
  39. freesolo_flash_dev-1.2.121/flash/serve/app/manifest.py +630 -0
  40. freesolo_flash_dev-1.2.121/flash/serve/app/materialize.py +998 -0
  41. freesolo_flash_dev-1.2.121/flash/serve/app/openai.py +269 -0
  42. freesolo_flash_dev-1.2.121/flash/serve/app/progress.py +113 -0
  43. freesolo_flash_dev-1.2.121/flash/serve/contract/errors.py +43 -0
  44. freesolo_flash_dev-1.2.121/flash/serve/contract/protocol.py +70 -0
  45. freesolo_flash_dev-1.2.121/flash/serve/contract/provenance.py +182 -0
  46. freesolo_flash_dev-1.2.121/flash/serve/contract/responses.py +46 -0
  47. freesolo_flash_dev-1.2.121/flash/serve/control/__init__.py +44 -0
  48. freesolo_flash_dev-1.2.121/flash/serve/control/_serialization.py +123 -0
  49. freesolo_flash_dev-1.2.121/flash/serve/control/_urls.py +45 -0
  50. freesolo_flash_dev-1.2.121/flash/serve/control/credentials.py +57 -0
  51. freesolo_flash_dev-1.2.121/flash/serve/control/planning.py +35 -0
  52. freesolo_flash_dev-1.2.121/flash/serve/control/types.py +707 -0
  53. freesolo_flash_dev-1.2.121/flash/serve/deployment/adapter_check.py +211 -0
  54. freesolo_flash_dev-1.2.121/flash/serve/deployment/deploy.py +753 -0
  55. freesolo_flash_dev-1.2.121/flash/serve/deployment/profiles.py +451 -0
  56. freesolo_flash_dev-1.2.121/flash/serve/deployment/resolve.py +392 -0
  57. freesolo_flash_dev-1.2.121/flash/serve/provisioning/common/records.py +556 -0
  58. freesolo_flash_dev-1.2.121/flash/serve/provisioning/modal/execution/lifecycle.py +115 -0
  59. freesolo_flash_dev-1.2.121/flash/serve/provisioning/modal/execution/operations.py +623 -0
  60. freesolo_flash_dev-1.2.121/flash/serve/provisioning/modal/planning/plan.py +304 -0
  61. freesolo_flash_dev-1.2.121/flash/serve/provisioning/modal/readiness_checks/probe.py +125 -0
  62. freesolo_flash_dev-1.2.121/flash/serve/provisioning/modal/readiness_checks/readiness.py +245 -0
  63. freesolo_flash_dev-1.2.121/flash/serve/request/openai.py +352 -0
  64. freesolo_flash_dev-1.2.121/flash/serve/request/transport.py +543 -0
  65. freesolo_flash_dev-1.2.121/flash/server/asgi/app.py +431 -0
  66. freesolo_flash_dev-1.2.121/flash/server/billing/charges.py +134 -0
  67. freesolo_flash_dev-1.2.121/flash/server/domain/ops/reconcile.py +152 -0
  68. freesolo_flash_dev-1.2.121/flash/server/domain/ops/serving_resources.py +50 -0
  69. freesolo_flash_dev-1.2.121/flash/server/domain/registry/runs.py +314 -0
  70. freesolo_flash_dev-1.2.121/flash/server/platform/auth.py +264 -0
  71. freesolo_flash_dev-1.2.121/flash/server/platform/internal_client.py +205 -0
  72. freesolo_flash_dev-1.2.121/flash/server/platform/runtime.py +803 -0
  73. freesolo_flash_dev-1.2.121/flash/server/routes/meta.py +45 -0
  74. freesolo_flash_dev-1.2.121/flash/server/routes/runs.py +558 -0
  75. freesolo_flash_dev-1.2.121/flash/server/routes/serving.py +725 -0
  76. freesolo_flash_dev-1.2.121/flash/server/routes/serving_chat.py +276 -0
  77. freesolo_flash_dev-1.2.121/flash/server/routes/serving_completion.py +249 -0
  78. freesolo_flash_dev-1.2.121/flash/server/routes/serving_revisions.py +177 -0
  79. freesolo_flash_dev-1.2.121/flash/server/routes/serving_smoke.py +606 -0
  80. freesolo_flash_dev-1.2.121/flash/serving/app/README.md +323 -0
  81. freesolo_flash_dev-1.2.121/flash/serving/app/modal_app.py +795 -0
  82. freesolo_flash_dev-1.2.121/flash/serving/src/accounting/usage.py +213 -0
  83. freesolo_flash_dev-1.2.121/flash/serving/src/accounting/usage_outbox.py +979 -0
  84. freesolo_flash_dev-1.2.121/flash/serving/src/engine/errors.py +102 -0
  85. freesolo_flash_dev-1.2.121/flash/serving/src/engine/lora_engine.py +773 -0
  86. freesolo_flash_dev-1.2.121/flash/serving/src/engine/lora_entries.py +52 -0
  87. freesolo_flash_dev-1.2.121/flash/serving/src/engine/support.py +234 -0
  88. freesolo_flash_dev-1.2.121/flash/serving/src/http/adapter_routes.py +280 -0
  89. freesolo_flash_dev-1.2.121/flash/serving/src/http/context.py +249 -0
  90. freesolo_flash_dev-1.2.121/flash/serving/src/http/headers.py +64 -0
  91. freesolo_flash_dev-1.2.121/flash/serving/src/http/inference_routes.py +345 -0
  92. freesolo_flash_dev-1.2.121/flash/serving/src/http/router.py +142 -0
  93. freesolo_flash_dev-1.2.121/flash/serving/src/http/routing.py +140 -0
  94. freesolo_flash_dev-1.2.121/flash/serving/src/io/provenance.py +50 -0
  95. freesolo_flash_dev-1.2.121/flash/serving/src/io/responses.py +263 -0
  96. freesolo_flash_dev-1.2.121/flash/serving/src/io/schemas.py +335 -0
  97. freesolo_flash_dev-1.2.121/flash/serving/src/io/streaming.py +130 -0
  98. freesolo_flash_dev-1.2.121/flash/serving/src/store/access.py +99 -0
  99. freesolo_flash_dev-1.2.121/flash/serving/src/store/lookup.py +118 -0
  100. freesolo_flash_dev-1.2.121/flash/serving/src/store/persisted_columns.py +9 -0
  101. freesolo_flash_dev-1.2.121/flash/serving/src/store/persistence.py +325 -0
  102. freesolo_flash_dev-1.2.121/flash/serving/src/store/registration.py +40 -0
  103. freesolo_flash_dev-1.2.121/flash/serving/src/store/registry.py +159 -0
  104. freesolo_flash_dev-1.2.121/flash/serving/src/store/undeploy.py +200 -0
  105. freesolo_flash_dev-1.2.121/pyproject.toml +325 -0
  106. freesolo_flash_dev-1.2.121/scripts/qualify_serving_profile.py +57 -0
  107. freesolo_flash_dev-1.2.121/tests/_helpers/chat_provenance.py +16 -0
  108. freesolo_flash_dev-1.2.121/tests/_helpers/managed_chat.py +48 -0
  109. freesolo_flash_dev-1.2.121/tests/conftest.py +498 -0
  110. freesolo_flash_dev-1.2.121/tests/serving/checkpoint_fixtures.py +71 -0
  111. freesolo_flash_dev-1.2.121/tests/serving/conftest.py +262 -0
  112. freesolo_flash_dev-1.2.121/tests/serving/test_base_model_serving.py +286 -0
  113. freesolo_flash_dev-1.2.121/tests/serving/test_chat_auth.py +241 -0
  114. freesolo_flash_dev-1.2.121/tests/serving/test_checkpoint_identity_repairs.py +436 -0
  115. freesolo_flash_dev-1.2.121/tests/serving/test_checkpoint_model_validation.py +226 -0
  116. freesolo_flash_dev-1.2.121/tests/serving/test_engine_error_status.py +225 -0
  117. freesolo_flash_dev-1.2.121/tests/serving/test_immutable_engine.py +320 -0
  118. freesolo_flash_dev-1.2.121/tests/serving/test_immutable_revisions.py +195 -0
  119. freesolo_flash_dev-1.2.121/tests/serving/test_immutable_schemas.py +152 -0
  120. freesolo_flash_dev-1.2.121/tests/serving/test_mirror_sampling_parity.py +405 -0
  121. freesolo_flash_dev-1.2.121/tests/serving/test_multimodal.py +1113 -0
  122. freesolo_flash_dev-1.2.121/tests/serving/test_openai_stream_options.py +59 -0
  123. freesolo_flash_dev-1.2.121/tests/serving/test_per_model_gpu.py +829 -0
  124. freesolo_flash_dev-1.2.121/tests/serving/test_persistence.py +275 -0
  125. freesolo_flash_dev-1.2.121/tests/serving/test_pre_first_disconnect.py +478 -0
  126. freesolo_flash_dev-1.2.121/tests/serving/test_registry.py +289 -0
  127. freesolo_flash_dev-1.2.121/tests/serving/test_registry_coverage.py +27 -0
  128. freesolo_flash_dev-1.2.121/tests/serving/test_router.py +1558 -0
  129. freesolo_flash_dev-1.2.121/tests/serving/test_router_coverage.py +306 -0
  130. freesolo_flash_dev-1.2.121/tests/serving/test_router_edge_coverage.py +248 -0
  131. freesolo_flash_dev-1.2.121/tests/serving/test_schemas_coverage.py +154 -0
  132. freesolo_flash_dev-1.2.121/tests/serving/test_serve_reasoning_split.py +279 -0
  133. freesolo_flash_dev-1.2.121/tests/serving/test_serve_structured_outputs.py +873 -0
  134. freesolo_flash_dev-1.2.121/tests/serving/test_serve_thinking.py +147 -0
  135. freesolo_flash_dev-1.2.121/tests/serving/test_structured_outputs.py +374 -0
  136. freesolo_flash_dev-1.2.121/tests/serving/test_usage_outbox.py +1933 -0
  137. freesolo_flash_dev-1.2.121/tests/serving/test_usage_reporter.py +939 -0
  138. freesolo_flash_dev-1.2.121/tests/serving_conformance/test_contract.py +264 -0
  139. freesolo_flash_dev-1.2.121/tests/test_adapter_shard_completeness.py +376 -0
  140. freesolo_flash_dev-1.2.121/tests/test_agent_flash_cli_contract.py +291 -0
  141. freesolo_flash_dev-1.2.121/tests/test_cancel_remote.py +1501 -0
  142. freesolo_flash_dev-1.2.121/tests/test_catalog_consistency.py +241 -0
  143. freesolo_flash_dev-1.2.121/tests/test_chat_foundations.py +379 -0
  144. freesolo_flash_dev-1.2.121/tests/test_cli_commands.py +5437 -0
  145. freesolo_flash_dev-1.2.121/tests/test_cli_commands_coverage.py +581 -0
  146. freesolo_flash_dev-1.2.121/tests/test_cli_estimate.py +1231 -0
  147. freesolo_flash_dev-1.2.121/tests/test_cli_render_theme.py +1789 -0
  148. freesolo_flash_dev-1.2.121/tests/test_cli_serve_deploy.py +926 -0
  149. freesolo_flash_dev-1.2.121/tests/test_cli_serve_status.py +344 -0
  150. freesolo_flash_dev-1.2.121/tests/test_cli_serve_undeploy.py +433 -0
  151. freesolo_flash_dev-1.2.121/tests/test_client.py +1346 -0
  152. freesolo_flash_dev-1.2.121/tests/test_client_server_integration.py +347 -0
  153. freesolo_flash_dev-1.2.121/tests/test_client_stream_reads.py +245 -0
  154. freesolo_flash_dev-1.2.121/tests/test_deploy_latency.py +401 -0
  155. freesolo_flash_dev-1.2.121/tests/test_env_evaluations.py +3829 -0
  156. freesolo_flash_dev-1.2.121/tests/test_env_publish.py +1975 -0
  157. freesolo_flash_dev-1.2.121/tests/test_grpo_params.py +767 -0
  158. freesolo_flash_dev-1.2.121/tests/test_health_liveness.py +49 -0
  159. freesolo_flash_dev-1.2.121/tests/test_jobs.py +7337 -0
  160. freesolo_flash_dev-1.2.121/tests/test_lora_rank_preflight.py +722 -0
  161. freesolo_flash_dev-1.2.121/tests/test_mirror_sampling_parity.py +366 -0
  162. freesolo_flash_dev-1.2.121/tests/test_opd_resume_safety.py +1530 -0
  163. freesolo_flash_dev-1.2.121/tests/test_prompt_budget.py +397 -0
  164. freesolo_flash_dev-1.2.121/tests/test_provider_routing.py +3019 -0
  165. freesolo_flash_dev-1.2.121/tests/test_realized_cost.py +490 -0
  166. freesolo_flash_dev-1.2.121/tests/test_resume_on_retry.py +1542 -0
  167. freesolo_flash_dev-1.2.121/tests/test_run_registry_lifecycle.py +379 -0
  168. freesolo_flash_dev-1.2.121/tests/test_runmgmt.py +3701 -0
  169. freesolo_flash_dev-1.2.121/tests/test_serve.py +1437 -0
  170. freesolo_flash_dev-1.2.121/tests/test_serve_app_bootstrap_http.py +1328 -0
  171. freesolo_flash_dev-1.2.121/tests/test_serve_app_launch.py +1129 -0
  172. freesolo_flash_dev-1.2.121/tests/test_serve_app_manifest.py +347 -0
  173. freesolo_flash_dev-1.2.121/tests/test_serve_app_materialize.py +1088 -0
  174. freesolo_flash_dev-1.2.121/tests/test_serve_app_progress.py +187 -0
  175. freesolo_flash_dev-1.2.121/tests/test_serve_chat_transport.py +810 -0
  176. freesolo_flash_dev-1.2.121/tests/test_serve_control.py +781 -0
  177. freesolo_flash_dev-1.2.121/tests/test_serve_docs.py +69 -0
  178. freesolo_flash_dev-1.2.121/tests/test_serve_modal_contract_lock.py +167 -0
  179. freesolo_flash_dev-1.2.121/tests/test_serve_modal_sdk.py +1096 -0
  180. freesolo_flash_dev-1.2.121/tests/test_serve_profile_qualification.py +77 -0
  181. freesolo_flash_dev-1.2.121/tests/test_serve_profiles.py +403 -0
  182. freesolo_flash_dev-1.2.121/tests/test_serve_provisioning_common.py +392 -0
  183. freesolo_flash_dev-1.2.121/tests/test_serve_provisioning_modal.py +2967 -0
  184. freesolo_flash_dev-1.2.121/tests/test_serve_reasoning_content.py +643 -0
  185. freesolo_flash_dev-1.2.121/tests/test_serve_resolve_provenance.py +495 -0
  186. freesolo_flash_dev-1.2.121/tests/test_server_api.py +8507 -0
  187. freesolo_flash_dev-1.2.121/tests/test_server_billing.py +889 -0
  188. freesolo_flash_dev-1.2.121/tests/test_server_envs_coverage.py +2073 -0
  189. freesolo_flash_dev-1.2.121/tests/test_server_managed_chat_requests.py +91 -0
  190. freesolo_flash_dev-1.2.121/tests/test_server_serving_resources.py +223 -0
  191. freesolo_flash_dev-1.2.121/tests/test_server_standalone.py +1201 -0
  192. freesolo_flash_dev-1.2.121/tests/test_serving_context_preflight.py +46 -0
  193. freesolo_flash_dev-1.2.121/tests/test_serving_contract.py +388 -0
  194. freesolo_flash_dev-1.2.121/tests/test_spec_and_validation.py +2485 -0
  195. freesolo_flash_dev-1.2.121/tests/test_teacher_broker.py +2356 -0
  196. freesolo_flash_dev-1.2.121/tests/test_train_context_preflight.py +135 -0
  197. freesolo_flash_dev-1.2.121/tests/test_verified_revisions.py +106 -0
  198. freesolo_flash_dev-1.2.121/tests/test_wandb_naming.py +167 -0
  199. freesolo_flash_dev-1.2.121/tests/test_warmstart_cross_repo.py +1543 -0
  200. freesolo_flash_dev-1.2.121/uv.lock +5817 -0
  201. freesolo_flash_dev-1.2.119/CHANGELOG.md +0 -205
  202. freesolo_flash_dev-1.2.119/PKG-INFO +0 -346
  203. freesolo_flash_dev-1.2.119/README.md +0 -263
  204. freesolo_flash_dev-1.2.119/SELF_HOSTING.md +0 -499
  205. freesolo_flash_dev-1.2.119/docs/serving-contract.md +0 -216
  206. freesolo_flash_dev-1.2.119/flash/cli/commands/env/testing/eval.py +0 -990
  207. freesolo_flash_dev-1.2.119/flash/cli/commands/ops/deploy.py +0 -903
  208. freesolo_flash_dev-1.2.119/flash/cli/commands/serving/deploy.py +0 -332
  209. freesolo_flash_dev-1.2.119/flash/cli/commands/serving/identity.py +0 -282
  210. freesolo_flash_dev-1.2.119/flash/cli/commands/serving/status.py +0 -102
  211. freesolo_flash_dev-1.2.119/flash/cli/commands/serving/undeploy.py +0 -177
  212. freesolo_flash_dev-1.2.119/flash/cli/parsing/env.py +0 -261
  213. freesolo_flash_dev-1.2.119/flash/cli/parsing/models.py +0 -131
  214. freesolo_flash_dev-1.2.119/flash/cli/parsing/serve_parser.py +0 -220
  215. freesolo_flash_dev-1.2.119/flash/cli/scaffold/TRAINING.md +0 -1815
  216. freesolo_flash_dev-1.2.119/flash/cli/ui/render.py +0 -795
  217. freesolo_flash_dev-1.2.119/flash/cli/ui/tables.py +0 -155
  218. freesolo_flash_dev-1.2.119/flash/client/http.py +0 -916
  219. freesolo_flash_dev-1.2.119/flash/core/catalog.py +0 -537
  220. freesolo_flash_dev-1.2.119/flash/core/spec.py +0 -863
  221. freesolo_flash_dev-1.2.119/flash/runner/accounting/costs.py +0 -407
  222. freesolo_flash_dev-1.2.119/flash/runner/accounting/reconciliation.py +0 -444
  223. freesolo_flash_dev-1.2.119/flash/runner/lifecycle/preparation.py +0 -633
  224. freesolo_flash_dev-1.2.119/flash/runner/lifecycle/state.py +0 -399
  225. freesolo_flash_dev-1.2.119/flash/runner/lifecycle/status.py +0 -438
  226. freesolo_flash_dev-1.2.119/flash/runner/results/verified_revisions.py +0 -169
  227. freesolo_flash_dev-1.2.119/flash/runner/supervise/attach.py +0 -911
  228. freesolo_flash_dev-1.2.119/flash/runner/supervise/deploy.py +0 -819
  229. freesolo_flash_dev-1.2.119/flash/runner/supervise/recovery.py +0 -641
  230. freesolo_flash_dev-1.2.119/flash/runner/supervise/seed_submission.py +0 -895
  231. freesolo_flash_dev-1.2.119/flash/runner/supervise/transitions.py +0 -339
  232. freesolo_flash_dev-1.2.119/flash/schema/__init__.py +0 -925
  233. freesolo_flash_dev-1.2.119/flash/serve/app/__main__.py +0 -102
  234. freesolo_flash_dev-1.2.119/flash/serve/app/bootstrap.py +0 -171
  235. freesolo_flash_dev-1.2.119/flash/serve/app/chat_stream.py +0 -143
  236. freesolo_flash_dev-1.2.119/flash/serve/app/http.py +0 -331
  237. freesolo_flash_dev-1.2.119/flash/serve/app/launch.py +0 -682
  238. freesolo_flash_dev-1.2.119/flash/serve/app/manifest.py +0 -655
  239. freesolo_flash_dev-1.2.119/flash/serve/app/materialize.py +0 -998
  240. freesolo_flash_dev-1.2.119/flash/serve/app/openai.py +0 -273
  241. freesolo_flash_dev-1.2.119/flash/serve/app/progress.py +0 -18
  242. freesolo_flash_dev-1.2.119/flash/serve/contract/errors.py +0 -73
  243. freesolo_flash_dev-1.2.119/flash/serve/contract/protocol.py +0 -81
  244. freesolo_flash_dev-1.2.119/flash/serve/contract/provenance.py +0 -168
  245. freesolo_flash_dev-1.2.119/flash/serve/contract/responses.py +0 -107
  246. freesolo_flash_dev-1.2.119/flash/serve/control/__init__.py +0 -51
  247. freesolo_flash_dev-1.2.119/flash/serve/control/_serialization.py +0 -143
  248. freesolo_flash_dev-1.2.119/flash/serve/control/_urls.py +0 -71
  249. freesolo_flash_dev-1.2.119/flash/serve/control/credentials.py +0 -81
  250. freesolo_flash_dev-1.2.119/flash/serve/control/planning.py +0 -35
  251. freesolo_flash_dev-1.2.119/flash/serve/control/types.py +0 -877
  252. freesolo_flash_dev-1.2.119/flash/serve/deployment/adapter_check.py +0 -179
  253. freesolo_flash_dev-1.2.119/flash/serve/deployment/deploy.py +0 -832
  254. freesolo_flash_dev-1.2.119/flash/serve/deployment/profiles.py +0 -373
  255. freesolo_flash_dev-1.2.119/flash/serve/deployment/resolve.py +0 -399
  256. freesolo_flash_dev-1.2.119/flash/serve/provisioning/common/records.py +0 -572
  257. freesolo_flash_dev-1.2.119/flash/serve/provisioning/modal/execution/lifecycle.py +0 -116
  258. freesolo_flash_dev-1.2.119/flash/serve/provisioning/modal/execution/operations.py +0 -623
  259. freesolo_flash_dev-1.2.119/flash/serve/provisioning/modal/planning/plan.py +0 -304
  260. freesolo_flash_dev-1.2.119/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -135
  261. freesolo_flash_dev-1.2.119/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -245
  262. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/lifecycle.py +0 -83
  263. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/mutations.py +0 -46
  264. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/operations.py +0 -992
  265. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/plan.py +0 -221
  266. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/probe.py +0 -74
  267. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/protocol.py +0 -451
  268. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/readiness.py +0 -683
  269. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/resources.py +0 -316
  270. freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod/transport.py +0 -295
  271. freesolo_flash_dev-1.2.119/flash/serve/request/openai.py +0 -353
  272. freesolo_flash_dev-1.2.119/flash/serve/request/transport.py +0 -537
  273. freesolo_flash_dev-1.2.119/flash/server/asgi/app.py +0 -433
  274. freesolo_flash_dev-1.2.119/flash/server/billing/charges.py +0 -128
  275. freesolo_flash_dev-1.2.119/flash/server/domain/ops/reconcile.py +0 -146
  276. freesolo_flash_dev-1.2.119/flash/server/domain/ops/serving_resources.py +0 -33
  277. freesolo_flash_dev-1.2.119/flash/server/domain/registry/runs.py +0 -182
  278. freesolo_flash_dev-1.2.119/flash/server/platform/auth.py +0 -254
  279. freesolo_flash_dev-1.2.119/flash/server/platform/internal_client.py +0 -194
  280. freesolo_flash_dev-1.2.119/flash/server/platform/runtime.py +0 -799
  281. freesolo_flash_dev-1.2.119/flash/server/routes/meta.py +0 -47
  282. freesolo_flash_dev-1.2.119/flash/server/routes/runs.py +0 -553
  283. freesolo_flash_dev-1.2.119/flash/server/routes/serving.py +0 -724
  284. freesolo_flash_dev-1.2.119/flash/server/routes/serving_chat.py +0 -269
  285. freesolo_flash_dev-1.2.119/flash/server/routes/serving_completion.py +0 -467
  286. freesolo_flash_dev-1.2.119/flash/server/routes/serving_revisions.py +0 -350
  287. freesolo_flash_dev-1.2.119/flash/server/routes/serving_smoke.py +0 -672
  288. freesolo_flash_dev-1.2.119/flash/serving/app/README.md +0 -323
  289. freesolo_flash_dev-1.2.119/flash/serving/app/modal_app.py +0 -795
  290. freesolo_flash_dev-1.2.119/flash/serving/src/accounting/usage.py +0 -215
  291. freesolo_flash_dev-1.2.119/flash/serving/src/accounting/usage_outbox.py +0 -986
  292. freesolo_flash_dev-1.2.119/flash/serving/src/engine/errors.py +0 -105
  293. freesolo_flash_dev-1.2.119/flash/serving/src/engine/lora_engine.py +0 -767
  294. freesolo_flash_dev-1.2.119/flash/serving/src/engine/lora_entries.py +0 -50
  295. freesolo_flash_dev-1.2.119/flash/serving/src/engine/support.py +0 -242
  296. freesolo_flash_dev-1.2.119/flash/serving/src/http/adapter_routes.py +0 -266
  297. freesolo_flash_dev-1.2.119/flash/serving/src/http/context.py +0 -227
  298. freesolo_flash_dev-1.2.119/flash/serving/src/http/headers.py +0 -52
  299. freesolo_flash_dev-1.2.119/flash/serving/src/http/inference_routes.py +0 -356
  300. freesolo_flash_dev-1.2.119/flash/serving/src/http/router.py +0 -144
  301. freesolo_flash_dev-1.2.119/flash/serving/src/http/routing.py +0 -145
  302. freesolo_flash_dev-1.2.119/flash/serving/src/io/provenance.py +0 -69
  303. freesolo_flash_dev-1.2.119/flash/serving/src/io/responses.py +0 -263
  304. freesolo_flash_dev-1.2.119/flash/serving/src/io/schemas.py +0 -482
  305. freesolo_flash_dev-1.2.119/flash/serving/src/io/streaming.py +0 -134
  306. freesolo_flash_dev-1.2.119/flash/serving/src/store/access.py +0 -94
  307. freesolo_flash_dev-1.2.119/flash/serving/src/store/lookup.py +0 -118
  308. freesolo_flash_dev-1.2.119/flash/serving/src/store/persisted_columns.py +0 -14
  309. freesolo_flash_dev-1.2.119/flash/serving/src/store/persistence.py +0 -310
  310. freesolo_flash_dev-1.2.119/flash/serving/src/store/registration.py +0 -228
  311. freesolo_flash_dev-1.2.119/flash/serving/src/store/registry.py +0 -176
  312. freesolo_flash_dev-1.2.119/flash/serving/src/store/undeploy.py +0 -277
  313. freesolo_flash_dev-1.2.119/pyproject.toml +0 -325
  314. freesolo_flash_dev-1.2.119/tests/_helpers/chat_provenance.py +0 -28
  315. freesolo_flash_dev-1.2.119/tests/_helpers/managed_chat.py +0 -49
  316. freesolo_flash_dev-1.2.119/tests/conftest.py +0 -499
  317. freesolo_flash_dev-1.2.119/tests/serving/conftest.py +0 -262
  318. freesolo_flash_dev-1.2.119/tests/serving/test_base_model_serving.py +0 -294
  319. freesolo_flash_dev-1.2.119/tests/serving/test_chat_auth.py +0 -264
  320. freesolo_flash_dev-1.2.119/tests/serving/test_checkpoint_model_validation.py +0 -218
  321. freesolo_flash_dev-1.2.119/tests/serving/test_engine_error_status.py +0 -225
  322. freesolo_flash_dev-1.2.119/tests/serving/test_immutable_engine.py +0 -332
  323. freesolo_flash_dev-1.2.119/tests/serving/test_immutable_revisions.py +0 -1503
  324. freesolo_flash_dev-1.2.119/tests/serving/test_immutable_schemas.py +0 -147
  325. freesolo_flash_dev-1.2.119/tests/serving/test_mirror_sampling_parity.py +0 -396
  326. freesolo_flash_dev-1.2.119/tests/serving/test_multimodal.py +0 -1150
  327. freesolo_flash_dev-1.2.119/tests/serving/test_openai_stream_options.py +0 -59
  328. freesolo_flash_dev-1.2.119/tests/serving/test_per_model_gpu.py +0 -818
  329. freesolo_flash_dev-1.2.119/tests/serving/test_persistence.py +0 -268
  330. freesolo_flash_dev-1.2.119/tests/serving/test_pre_first_disconnect.py +0 -475
  331. freesolo_flash_dev-1.2.119/tests/serving/test_registry.py +0 -308
  332. freesolo_flash_dev-1.2.119/tests/serving/test_registry_coverage.py +0 -65
  333. freesolo_flash_dev-1.2.119/tests/serving/test_router.py +0 -1656
  334. freesolo_flash_dev-1.2.119/tests/serving/test_router_coverage.py +0 -294
  335. freesolo_flash_dev-1.2.119/tests/serving/test_router_edge_coverage.py +0 -303
  336. freesolo_flash_dev-1.2.119/tests/serving/test_schemas_coverage.py +0 -188
  337. freesolo_flash_dev-1.2.119/tests/serving/test_serve_reasoning_split.py +0 -276
  338. freesolo_flash_dev-1.2.119/tests/serving/test_serve_structured_outputs.py +0 -810
  339. freesolo_flash_dev-1.2.119/tests/serving/test_serve_thinking.py +0 -153
  340. freesolo_flash_dev-1.2.119/tests/serving/test_structured_outputs.py +0 -397
  341. freesolo_flash_dev-1.2.119/tests/serving/test_usage_outbox.py +0 -1934
  342. freesolo_flash_dev-1.2.119/tests/serving/test_usage_reporter.py +0 -936
  343. freesolo_flash_dev-1.2.119/tests/serving_conformance/__init__.py +0 -0
  344. freesolo_flash_dev-1.2.119/tests/serving_conformance/test_contract.py +0 -786
  345. freesolo_flash_dev-1.2.119/tests/test_adapter_shard_completeness.py +0 -376
  346. freesolo_flash_dev-1.2.119/tests/test_agent_flash_cli_contract.py +0 -291
  347. freesolo_flash_dev-1.2.119/tests/test_cancel_remote.py +0 -2214
  348. freesolo_flash_dev-1.2.119/tests/test_catalog_consistency.py +0 -217
  349. freesolo_flash_dev-1.2.119/tests/test_chat_foundations.py +0 -371
  350. freesolo_flash_dev-1.2.119/tests/test_cli_commands.py +0 -5451
  351. freesolo_flash_dev-1.2.119/tests/test_cli_commands_coverage.py +0 -581
  352. freesolo_flash_dev-1.2.119/tests/test_cli_estimate.py +0 -1230
  353. freesolo_flash_dev-1.2.119/tests/test_cli_render_theme.py +0 -1775
  354. freesolo_flash_dev-1.2.119/tests/test_cli_serve_deploy.py +0 -1071
  355. freesolo_flash_dev-1.2.119/tests/test_cli_serve_status.py +0 -394
  356. freesolo_flash_dev-1.2.119/tests/test_cli_serve_undeploy.py +0 -521
  357. freesolo_flash_dev-1.2.119/tests/test_client.py +0 -1411
  358. freesolo_flash_dev-1.2.119/tests/test_client_server_integration.py +0 -347
  359. freesolo_flash_dev-1.2.119/tests/test_client_stream_reads.py +0 -245
  360. freesolo_flash_dev-1.2.119/tests/test_deploy_alias_move_warning.py +0 -554
  361. freesolo_flash_dev-1.2.119/tests/test_deploy_latency.py +0 -426
  362. freesolo_flash_dev-1.2.119/tests/test_env_evaluations.py +0 -4337
  363. freesolo_flash_dev-1.2.119/tests/test_env_publish.py +0 -1962
  364. freesolo_flash_dev-1.2.119/tests/test_grpo_params.py +0 -767
  365. freesolo_flash_dev-1.2.119/tests/test_health_liveness.py +0 -49
  366. freesolo_flash_dev-1.2.119/tests/test_jobs.py +0 -7330
  367. freesolo_flash_dev-1.2.119/tests/test_lora_rank_preflight.py +0 -710
  368. freesolo_flash_dev-1.2.119/tests/test_mirror_sampling_parity.py +0 -365
  369. freesolo_flash_dev-1.2.119/tests/test_opd_resume_safety.py +0 -1528
  370. freesolo_flash_dev-1.2.119/tests/test_prompt_budget.py +0 -397
  371. freesolo_flash_dev-1.2.119/tests/test_provider_routing.py +0 -2902
  372. freesolo_flash_dev-1.2.119/tests/test_realized_cost.py +0 -445
  373. freesolo_flash_dev-1.2.119/tests/test_resume_on_retry.py +0 -1541
  374. freesolo_flash_dev-1.2.119/tests/test_runmgmt.py +0 -3208
  375. freesolo_flash_dev-1.2.119/tests/test_serve.py +0 -1555
  376. freesolo_flash_dev-1.2.119/tests/test_serve_app_bootstrap_http.py +0 -1246
  377. freesolo_flash_dev-1.2.119/tests/test_serve_app_launch.py +0 -1113
  378. freesolo_flash_dev-1.2.119/tests/test_serve_app_manifest.py +0 -299
  379. freesolo_flash_dev-1.2.119/tests/test_serve_app_materialize.py +0 -1088
  380. freesolo_flash_dev-1.2.119/tests/test_serve_chat_transport.py +0 -800
  381. freesolo_flash_dev-1.2.119/tests/test_serve_control.py +0 -942
  382. freesolo_flash_dev-1.2.119/tests/test_serve_modal_sdk.py +0 -1047
  383. freesolo_flash_dev-1.2.119/tests/test_serve_profiles.py +0 -359
  384. freesolo_flash_dev-1.2.119/tests/test_serve_provisioning_common.py +0 -404
  385. freesolo_flash_dev-1.2.119/tests/test_serve_provisioning_modal.py +0 -2932
  386. freesolo_flash_dev-1.2.119/tests/test_serve_provisioning_runpod.py +0 -4630
  387. freesolo_flash_dev-1.2.119/tests/test_serve_reasoning_content.py +0 -638
  388. freesolo_flash_dev-1.2.119/tests/test_serve_resolve_provenance.py +0 -498
  389. freesolo_flash_dev-1.2.119/tests/test_server_api.py +0 -10004
  390. freesolo_flash_dev-1.2.119/tests/test_server_billing.py +0 -886
  391. freesolo_flash_dev-1.2.119/tests/test_server_envs_coverage.py +0 -2377
  392. freesolo_flash_dev-1.2.119/tests/test_server_managed_chat_requests.py +0 -864
  393. freesolo_flash_dev-1.2.119/tests/test_server_managed_chat_revisions.py +0 -744
  394. freesolo_flash_dev-1.2.119/tests/test_server_serving_resources.py +0 -215
  395. freesolo_flash_dev-1.2.119/tests/test_server_standalone.py +0 -1098
  396. freesolo_flash_dev-1.2.119/tests/test_serving_context_preflight.py +0 -36
  397. freesolo_flash_dev-1.2.119/tests/test_serving_contract.py +0 -1017
  398. freesolo_flash_dev-1.2.119/tests/test_spec_and_validation.py +0 -2448
  399. freesolo_flash_dev-1.2.119/tests/test_teacher_broker.py +0 -2358
  400. freesolo_flash_dev-1.2.119/tests/test_train_context_preflight.py +0 -118
  401. freesolo_flash_dev-1.2.119/tests/test_verified_revisions.py +0 -237
  402. freesolo_flash_dev-1.2.119/tests/test_wandb_naming.py +0 -167
  403. freesolo_flash_dev-1.2.119/tests/test_warmstart_cross_repo.py +0 -1611
  404. freesolo_flash_dev-1.2.119/uv.lock +0 -5817
  405. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.dockerignore +0 -0
  406. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.env.example +0 -0
  407. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/CODEOWNERS +0 -0
  408. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  409. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  410. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  411. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  412. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/dependabot.yml +0 -0
  413. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/auto-rebake.yml +0 -0
  414. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/bake-kernel-cache.yml +0 -0
  415. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/ci.yml +0 -0
  416. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/deploy-modal-dev.yml +0 -0
  417. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/deploy-modal.yml +0 -0
  418. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/dev-kernel-cache.yml +0 -0
  419. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/main-source-guard.yml +0 -0
  420. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/notify-tests-repo.yml +0 -0
  421. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  422. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-dev.yml +0 -0
  423. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-image.yml +0 -0
  424. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-serving-image.yml +0 -0
  425. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/publish.yml +0 -0
  426. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/version-parity.yml +0 -0
  427. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.github/workflows/worker-image.yml +0 -0
  428. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/.gitignore +0 -0
  429. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/CODE_OF_CONDUCT.md +0 -0
  430. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/CONTRIBUTING.md +0 -0
  431. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/Dockerfile +0 -0
  432. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/Dockerfile.serve +0 -0
  433. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/Dockerfile.worker +0 -0
  434. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/LICENSE +0 -0
  435. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/NOTICE +0 -0
  436. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/SECURITY.md +0 -0
  437. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/build/kernel_cache/.gitignore +0 -0
  438. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/build/kernel_cache/.keep +0 -0
  439. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/deploy/infisical/README.md +0 -0
  440. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/deploy/infisical/entrypoint.sh +0 -0
  441. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/Dockerfile.kernelcache +0 -0
  442. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/Dockerfile.kernelcache.relayer +0 -0
  443. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/bake_kernel_cache.py +0 -0
  444. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/bake_pod_entry.py +0 -0
  445. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/extract_cudart_fix.py +0 -0
  446. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/kernel_fingerprint.py +0 -0
  447. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/make_rp_handler.py +0 -0
  448. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/docker/patch_vllm_moe_lora.py +0 -0
  449. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/__init__.py +0 -0
  450. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/__init__.py +0 -0
  451. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/channel.py +0 -0
  452. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/diagnostics.py +0 -0
  453. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/fileio.py +0 -0
  454. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/logging.py +0 -0
  455. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/openai_sse.py +0 -0
  456. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/paths.py +0 -0
  457. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/_internal/version.py +0 -0
  458. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/adapters/__init__.py +0 -0
  459. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/adapters/artifacts.py +0 -0
  460. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/adapters/fused_experts.py +0 -0
  461. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/adapters/lora_rank.py +0 -0
  462. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/adapters/targets.py +0 -0
  463. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/__init__.py +0 -0
  464. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/__main__.py +0 -0
  465. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/__init__.py +0 -0
  466. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/__init__.py +0 -0
  467. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/__init__.py +0 -0
  468. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/imports.py +0 -0
  469. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/list.py +0 -0
  470. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/push.py +0 -0
  471. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/retained.py +0 -0
  472. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/setup.py +0 -0
  473. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  474. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/__init__.py +0 -0
  475. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/episode.py +0 -0
  476. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/eval_args.py +0 -0
  477. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/evaluations.py +0 -0
  478. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/params.py +0 -0
  479. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/test.py +0 -0
  480. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/warnings.py +0 -0
  481. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/account.py +0 -0
  483. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/catalog.py +0 -0
  484. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/log_follow.py +0 -0
  485. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/prompt_budget.py +0 -0
  486. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/runs.py +0 -0
  487. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/traces.py +0 -0
  488. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/train.py +0 -0
  489. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/worker_output.py +0 -0
  490. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/__init__.py +0 -0
  491. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/__init__.py +0 -0
  492. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/account.py +0 -0
  493. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/errors.py +0 -0
  494. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/main.py +0 -0
  495. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/traces.py +0 -0
  496. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/training.py +0 -0
  497. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/scaffold/__init__.py +0 -0
  498. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/ui/__init__.py +0 -0
  499. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/ui/cost.py +0 -0
  500. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/ui/env_panels.py +0 -0
  501. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/ui/heartbeat.py +0 -0
  502. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cli/ui/tty.py +0 -0
  503. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/__init__.py +0 -0
  504. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/config.py +0 -0
  505. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/freesolo_api.py +0 -0
  506. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/runtime_secrets.py +0 -0
  507. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/shapes.py +0 -0
  508. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/specs.py +0 -0
  509. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/client/streaming.py +0 -0
  510. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/__init__.py +0 -0
  511. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/image_descriptors.py +0 -0
  512. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/multimodal.py +0 -0
  513. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/reasoning_normalization.py +0 -0
  514. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/structured_outputs.py +0 -0
  515. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/content/thinking.py +0 -0
  516. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/core/__init__.py +0 -0
  517. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/core/grpo.py +0 -0
  518. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/core/spec_persistence.py +0 -0
  519. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/__init__.py +0 -0
  520. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/analytical.py +0 -0
  521. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/currency.py +0 -0
  522. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/facts.py +0 -0
  523. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/spec.py +0 -0
  524. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/cost/types.py +0 -0
  525. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/__init__.py +0 -0
  526. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/__init__.py +0 -0
  527. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/kv_sizing.py +0 -0
  528. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/model_config_probe.py +0 -0
  529. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/prompt_budget.py +0 -0
  530. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/recipe.py +0 -0
  531. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/steps.py +0 -0
  532. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/plan/vram.py +0 -0
  533. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/__init__.py +0 -0
  534. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/dataset_profile.py +0 -0
  535. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/image_tokens.py +0 -0
  536. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/reasoning_render.py +0 -0
  537. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/sft_image_rows.py +0 -0
  538. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/sft_workload.py +0 -0
  539. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/tokenizer.py +0 -0
  540. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/workload_profile.py +0 -0
  541. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/result/__init__.py +0 -0
  542. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/result/accounting.py +0 -0
  543. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/result/rollout_samples.py +0 -0
  544. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/support/__init__.py +0 -0
  545. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/support/huggingface.py +0 -0
  546. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/support/verl_checkpoint.py +0 -0
  547. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/support/verl_policy.py +0 -0
  548. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/support/worker_entrypoint.py +0 -0
  549. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/__init__.py +0 -0
  550. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/__main__.py +0 -0
  551. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/__init__.py +0 -0
  552. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/opd.py +0 -0
  553. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/rl.py +0 -0
  554. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/sft.py +0 -0
  555. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/worker.py +0 -0
  556. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/__init__.py +0 -0
  557. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/heartbeat.py +0 -0
  558. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/hf.py +0 -0
  559. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/prefetch.py +0 -0
  560. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/wandb_log.py +0 -0
  561. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/__init__.py +0 -0
  562. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/adapter.py +0 -0
  563. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/chatml_mask.py +0 -0
  564. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/decoding.py +0 -0
  565. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/lora.py +0 -0
  566. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/packing.py +0 -0
  567. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/__init__.py +0 -0
  568. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/diagnostics.py +0 -0
  569. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/lifecycle.py +0 -0
  570. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/liger.py +0 -0
  571. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/memory.py +0 -0
  572. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/__init__.py +0 -0
  573. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  574. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/rng.py +0 -0
  575. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/state.py +0 -0
  576. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/__init__.py +0 -0
  577. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/client.py +0 -0
  578. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/encoding.py +0 -0
  579. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  580. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/__init__.py +0 -0
  581. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/__init__.py +0 -0
  582. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/__init__.py +0 -0
  583. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/glue.py +0 -0
  584. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/runtime.py +0 -0
  585. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  586. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  587. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  588. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  589. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/__init__.py +0 -0
  590. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/backend_common.py +0 -0
  591. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/opd_train.py +0 -0
  592. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  593. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  594. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/rl_train.py +0 -0
  595. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  596. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  597. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/sft_train.py +0 -0
  598. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  599. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/__init__.py +0 -0
  600. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  601. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  602. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  603. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  604. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  605. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  606. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  607. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  608. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/entry.py +0 -0
  609. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  610. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  611. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  612. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  613. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/structured.py +0 -0
  614. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  615. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  616. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  617. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  618. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  619. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  620. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  621. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  622. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  623. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  624. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  625. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  626. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  627. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/__init__.py +0 -0
  628. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  629. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/entry.py +0 -0
  630. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  631. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/patches.py +0 -0
  632. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  633. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  634. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  635. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/config.py +0 -0
  636. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  637. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  638. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  639. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  640. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  641. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  642. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  643. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  644. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/__init__.py +0 -0
  645. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/child/entry.py +0 -0
  646. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  647. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  648. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  649. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/config.py +0 -0
  650. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/__init__.py +0 -0
  651. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/capabilities.py +0 -0
  652. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/checkpoints.py +0 -0
  653. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/child_io.py +0 -0
  654. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/diagnostics.py +0 -0
  655. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/parallelism.py +0 -0
  656. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/parent_work.py +0 -0
  657. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/process_census.py +0 -0
  658. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/__init__.py +0 -0
  659. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/__init__.py +0 -0
  660. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/adapter.py +0 -0
  661. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/base.py +0 -0
  662. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/loader.py +0 -0
  663. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/pull.py +0 -0
  664. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/loading/staged.py +0 -0
  665. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/__init__.py +0 -0
  666. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/cache_security.py +0 -0
  667. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/dataset_selection.py +0 -0
  668. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/evaluations.py +0 -0
  669. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/identity.py +0 -0
  670. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/meta/namespace_listing.py +0 -0
  671. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/package/__init__.py +0 -0
  672. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/package/direct_tokens.py +0 -0
  673. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/package/limits.py +0 -0
  674. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/envs/package/unpack.py +0 -0
  675. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/__init__.py +0 -0
  676. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/__init__.py +0 -0
  677. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  678. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  679. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  680. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  681. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  682. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/__init__.py +0 -0
  683. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  684. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/failmark.py +0 -0
  685. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  686. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  687. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/instance.py +0 -0
  688. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/poll.py +0 -0
  689. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  690. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/provider.py +0 -0
  691. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  692. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/__init__.py +0 -0
  693. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/auth.py +0 -0
  694. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/deadline.py +0 -0
  695. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/http.py +0 -0
  696. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/worker.py +0 -0
  697. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/__init__.py +0 -0
  698. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/hf.py +0 -0
  699. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/preload_runpod.py +0 -0
  700. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/weight_cache.py +0 -0
  701. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/__init__.py +0 -0
  702. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/allocator.py +0 -0
  703. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/base.py +0 -0
  704. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/fit_errors.py +0 -0
  705. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/preflight.py +0 -0
  706. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/realized.py +0 -0
  707. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/registry.py +0 -0
  708. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/core/sharding.py +0 -0
  709. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/__init__.py +0 -0
  710. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/__init__.py +0 -0
  711. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/api.py +0 -0
  712. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/auth.py +0 -0
  713. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/gpus.py +0 -0
  714. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/preflight.py +0 -0
  715. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/pricing.py +0 -0
  716. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/execution/__init__.py +0 -0
  717. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/execution/provider.py +0 -0
  718. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/__init__.py +0 -0
  719. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/builders.py +0 -0
  720. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/reap.py +0 -0
  721. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/__init__.py +0 -0
  722. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/__init__.py +0 -0
  723. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/api.py +0 -0
  724. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/auth.py +0 -0
  725. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/cost.py +0 -0
  726. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/gpus.py +0 -0
  727. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/preflight.py +0 -0
  728. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/pricing.py +0 -0
  729. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/__init__.py +0 -0
  730. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/job_execution.py +0 -0
  731. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/jobs.py +0 -0
  732. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/polling.py +0 -0
  733. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/provider.py +0 -0
  734. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/resources.py +0 -0
  735. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/serverless/__init__.py +0 -0
  736. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/serverless/endpoints.py +0 -0
  737. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/__init__.py +0 -0
  738. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/__init__.py +0 -0
  739. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/api.py +0 -0
  740. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/auth.py +0 -0
  741. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/preflight.py +0 -0
  742. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/pricing.py +0 -0
  743. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/execution/__init__.py +0 -0
  744. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/execution/provider.py +0 -0
  745. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/jobs/__init__.py +0 -0
  746. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/providers/vast/jobs/builders.py +0 -0
  747. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/py.typed +0 -0
  748. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/__init__.py +0 -0
  749. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/__init__.py +0 -0
  750. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/artifacts.py +0 -0
  751. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/weight_cache.py +0 -0
  752. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/__init__.py +0 -0
  753. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/attempts.py +0 -0
  754. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/deadlines.py +0 -0
  755. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/reporting.py +0 -0
  756. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/submit.py +0 -0
  757. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/results/__init__.py +0 -0
  758. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/results/checkpoints.py +0 -0
  759. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/__init__.py +0 -0
  760. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/errors.py +0 -0
  761. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/lifecycle.py +0 -0
  762. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/retry_decision.py +0 -0
  763. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/__init__.py +0 -0
  764. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/build.py +0 -0
  765. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/manifest.py +0 -0
  766. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/profiles.py +0 -0
  767. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/schema/fields.py +0 -0
  768. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/__init__.py +0 -0
  769. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/app/__init__.py +0 -0
  770. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/contract/__init__.py +0 -0
  771. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/contract/urls.py +0 -0
  772. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/control/_canonical.py +0 -0
  773. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/__init__.py +0 -0
  774. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/export.py +0 -0
  775. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/preflight.py +0 -0
  776. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/readiness.py +0 -0
  777. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/__init__.py +0 -0
  778. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/common/__init__.py +0 -0
  779. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/__init__.py +0 -0
  780. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  781. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  782. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  783. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  784. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  785. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  786. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  787. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  788. {freesolo_flash_dev-1.2.119/flash/serve/provisioning/runpod → freesolo_flash_dev-1.2.121/flash/serve/request}/__init__.py +0 -0
  789. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/request/runtime_support.py +0 -0
  790. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/request/streaming.py +0 -0
  791. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/request/thinking.py +0 -0
  792. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/request/validation.py +0 -0
  793. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/__init__.py +0 -0
  794. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/adapters.py +0 -0
  795. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/engine.py +0 -0
  796. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/errors.py +0 -0
  797. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/multimodal.py +0 -0
  798. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/prompt.py +0 -0
  799. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/sampling.py +0 -0
  800. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/structured_outputs.py +0 -0
  801. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/types.py +0 -0
  802. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/__init__.py +0 -0
  803. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/__main__.py +0 -0
  804. {freesolo_flash_dev-1.2.119/flash/serve/request → freesolo_flash_dev-1.2.121/flash/server/asgi}/__init__.py +0 -0
  805. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/asgi/cli.py +0 -0
  806. {freesolo_flash_dev-1.2.119/flash/server/asgi → freesolo_flash_dev-1.2.121/flash/server/billing}/__init__.py +0 -0
  807. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/billing/retry.py +0 -0
  808. {freesolo_flash_dev-1.2.119/flash/server/billing → freesolo_flash_dev-1.2.121/flash/server/domain}/__init__.py +0 -0
  809. {freesolo_flash_dev-1.2.119/flash/server/domain → freesolo_flash_dev-1.2.121/flash/server/domain/ops}/__init__.py +0 -0
  810. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/ops/repo_cleanup.py +0 -0
  811. {freesolo_flash_dev-1.2.119/flash/server/domain/ops → freesolo_flash_dev-1.2.121/flash/server/domain/registry}/__init__.py +0 -0
  812. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/checkpoints.py +0 -0
  813. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/environment_registry.py +0 -0
  814. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/envs.py +0 -0
  815. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/projects.py +0 -0
  816. {freesolo_flash_dev-1.2.119/flash/server/domain/registry → freesolo_flash_dev-1.2.121/flash/server/domain/teacher}/__init__.py +0 -0
  817. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/broker.py +0 -0
  818. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/errors.py +0 -0
  819. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/requests.py +0 -0
  820. {freesolo_flash_dev-1.2.119/flash/server/domain/teacher → freesolo_flash_dev-1.2.121/flash/server/platform}/__init__.py +0 -0
  821. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/platform/db.py +0 -0
  822. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/platform/deps.py +0 -0
  823. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/platform/locks.py +0 -0
  824. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/routes/__init__.py +0 -0
  825. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/routes/envs.py +0 -0
  826. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/server/routes/teacher.py +0 -0
  827. {freesolo_flash_dev-1.2.119/flash/server/platform → freesolo_flash_dev-1.2.121/flash/serving}/__init__.py +0 -0
  828. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/app/__init__.py +0 -0
  829. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/__init__.py +0 -0
  830. {freesolo_flash_dev-1.2.119/flash/serving → freesolo_flash_dev-1.2.121/flash/serving/src/accounting}/__init__.py +0 -0
  831. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/accounting/usage_facts.py +0 -0
  832. {freesolo_flash_dev-1.2.119/flash/serving/src/accounting → freesolo_flash_dev-1.2.121/flash/serving/src/engine}/__init__.py +0 -0
  833. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/boot.py +0 -0
  834. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/generation.py +0 -0
  835. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/model_config.py +0 -0
  836. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/prequant_config.py +0 -0
  837. {freesolo_flash_dev-1.2.119/flash/serving/src/engine → freesolo_flash_dev-1.2.121/flash/serving/src/http}/__init__.py +0 -0
  838. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/body_limit.py +0 -0
  839. {freesolo_flash_dev-1.2.119/flash/serving/src/http → freesolo_flash_dev-1.2.121/flash/serving/src/io}/__init__.py +0 -0
  840. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/multimodal.py +0 -0
  841. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/openai_request.py +0 -0
  842. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/openai_stream.py +0 -0
  843. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/requests.py +0 -0
  844. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/structured_outputs.py +0 -0
  845. {freesolo_flash_dev-1.2.119/flash/serving/src/io → freesolo_flash_dev-1.2.121/flash/serving/src/store}/__init__.py +0 -0
  846. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/settings.py +0 -0
  847. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/supabase_rest.py +0 -0
  848. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/snapshot/__init__.py +0 -0
  849. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/snapshot/archive.py +0 -0
  850. {freesolo_flash_dev-1.2.119/flash/serving/src/store → freesolo_flash_dev-1.2.121/flash/teacher}/__init__.py +0 -0
  851. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/teacher/limits.py +0 -0
  852. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/teacher/provider_status.py +0 -0
  853. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/flash/teacher/retry_contract.py +0 -0
  854. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/build_dev_dist.py +0 -0
  855. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/check_file_size.py +0 -0
  856. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/check_function_size.py +0 -0
  857. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/check_rollout_identity_actor.py +0 -0
  858. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/check_source_layout.py +0 -0
  859. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/check_verl_pin_exists.py +0 -0
  860. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/scripts/scrub_history.sh +0 -0
  861. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/serve_launch.py +0 -0
  862. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/__init__.py +0 -0
  863. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/__init__.py +0 -0
  864. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/chat_transport.py +0 -0
  865. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/profile.py +0 -0
  866. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/runner.py +0 -0
  867. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/server_api_plugin.py +0 -0
  868. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/source_snapshot.py +0 -0
  869. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/specs.py +0 -0
  870. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/teacher.py +0 -0
  871. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/_helpers/vast.py +0 -0
  872. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/capture_image_sft_processor_oracle.py +0 -0
  873. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/capture_qwen38_27b_metadata.py +0 -0
  874. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  875. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  876. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  877. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  878. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  879. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  880. {freesolo_flash_dev-1.2.119/flash/teacher → freesolo_flash_dev-1.2.121/tests/live}/__init__.py +0 -0
  881. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/live/conftest.py +0 -0
  882. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/live/test_lambda_live.py +0 -0
  883. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/live/test_runpod_live.py +0 -0
  884. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/live/test_sft_thinking_render_live.py +0 -0
  885. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/live/test_vast_live.py +0 -0
  886. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_chat_authorizer.py +0 -0
  887. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_fp8_config.py +0 -0
  888. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_modal_deploy_identity.py +0 -0
  889. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_modal_image_paths.py +0 -0
  890. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_model_config.py +0 -0
  891. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_prequant_config.py +0 -0
  892. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_request_body_limit.py +0 -0
  893. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_settings.py +0 -0
  894. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_structured_outputs_coverage.py +0 -0
  895. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving/test_supabase_rest_coverage.py +0 -0
  896. {freesolo_flash_dev-1.2.119/tests/live → freesolo_flash_dev-1.2.121/tests/serving_conformance}/__init__.py +0 -0
  897. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/serving_conformance/conftest.py +0 -0
  898. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_accounting_coverage.py +0 -0
  899. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_algorithms.py +0 -0
  900. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_allocator.py +0 -0
  901. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_backend_common.py +0 -0
  902. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_backend_jobspec_contract.py +0 -0
  903. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_bake_kernel_cache.py +0 -0
  904. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_base_model_provenance.py +0 -0
  905. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_billing_retry.py +0 -0
  906. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_build_context_contract.py +0 -0
  907. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_capture_qwen38_metadata.py +0 -0
  908. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_catalog_only_models.py +0 -0
  909. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_charge_pricing.py +0 -0
  910. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_checkpoint_lifecycle.py +0 -0
  911. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_checkpoints.py +0 -0
  912. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_credential_shadowing.py +0 -0
  913. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_errors.py +0 -0
  914. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_gpus_flag.py +0 -0
  915. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_help.py +0 -0
  916. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_main_coverage.py +0 -0
  917. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_managed.py +0 -0
  918. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_render_coverage.py +0 -0
  919. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_traces.py +0 -0
  920. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cli_wandb_warning.py +0 -0
  921. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_client_import_purity.py +0 -0
  922. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_config_env_vars.py +0 -0
  923. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_config_overrides.py +0 -0
  924. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_console_upload.py +0 -0
  925. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_controlled_experiment_repairs.py +0 -0
  926. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_analytical.py +0 -0
  927. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_currency.py +0 -0
  928. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_equation.py +0 -0
  929. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_estimate.py +0 -0
  930. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_hardware.py +0 -0
  931. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_cost_models.py +0 -0
  932. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_dataset_profile.py +0 -0
  933. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_dev_channel.py +0 -0
  934. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_disk_gb.py +0 -0
  935. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_endpoint_name.py +0 -0
  936. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_cache_evict.py +0 -0
  937. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_delete.py +0 -0
  938. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_download.py +0 -0
  939. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_download_api.py +0 -0
  940. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_list_api.py +0 -0
  941. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_list_cli.py +0 -0
  942. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_list_hub.py +0 -0
  943. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_no_install.py +0 -0
  944. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_pull.py +0 -0
  945. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_coverage.py +0 -0
  946. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_loader_coverage.py +0 -0
  947. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_managed_control_plane.py +0 -0
  948. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_push.py +0 -0
  949. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_rate_limit_resolve.py +0 -0
  950. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_ref_pinning.py +0 -0
  951. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_env_test.py +0 -0
  952. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_envs_coverage.py +0 -0
  953. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_export.py +0 -0
  954. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_flash_mvp.py +0 -0
  955. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_flash_worker.py +0 -0
  956. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_flashinfer_cache_dirs.py +0 -0
  957. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_freesolo_api_transport.py +0 -0
  958. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_fused_expert_warmstart.py +0 -0
  959. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_github_urlopen_retry.py +0 -0
  960. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_gpu_type_single_field.py +0 -0
  961. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_gpus.py +0 -0
  962. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_checkpoint_durability.py +0 -0
  963. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_process_census.py +0 -0
  964. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_resident_sizing.py +0 -0
  965. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_reward_batching.py +0 -0
  966. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_rollout_contract.py +0 -0
  967. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_grpo_rollout_identity.py +0 -0
  968. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_hf_retry.py +0 -0
  969. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_idle_endpoint_reaper.py +0 -0
  970. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_image_environment_capability.py +0 -0
  971. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_image_incremental_processor.py +0 -0
  972. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_image_sft_markers.py +0 -0
  973. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_image_sft_processor_parity.py +0 -0
  974. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_image_tokens.py +0 -0
  975. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_infisical_secrets.py +0 -0
  976. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_instance_bootstrap_coverage.py +0 -0
  977. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_internal_client.py +0 -0
  978. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_kernel_cache.py +0 -0
  979. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_kernel_fingerprint.py +0 -0
  980. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_kv_util.py +0 -0
  981. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lambda_api_coverage.py +0 -0
  982. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lambda_runner.py +0 -0
  983. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_logging.py +0 -0
  984. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_login_perms.py +0 -0
  985. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lora_rank_coverage.py +0 -0
  986. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lora_rank_nested_rung.py +0 -0
  987. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lora_targeting.py +0 -0
  988. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_lora_targeting_pinned_verl.py +0 -0
  989. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_managed_config_fields.py +0 -0
  990. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_managed_hf_repo.py +0 -0
  991. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_metrics_schema_agent_contract.py +0 -0
  992. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_mig_guard.py +0 -0
  993. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_multi_gpu_gate.py +0 -0
  994. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_multimodal_training.py +0 -0
  995. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_named_reward_metrics.py +0 -0
  996. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_oom_escalate_gpu.py +0 -0
  997. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd.py +0 -0
  998. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd_limits.py +0 -0
  999. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  1000. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd_multiturn_failure_exit.py +0 -0
  1001. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd_replay_guard.py +0 -0
  1002. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_opd_train.py +0 -0
  1003. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_orchestrator_flash.py +0 -0
  1004. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_packing.py +0 -0
  1005. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_packing_coverage.py +0 -0
  1006. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_parasail_teacher.py +0 -0
  1007. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_persisted_spec_envelope.py +0 -0
  1008. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_poll_helpers.py +0 -0
  1009. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_preflight.py +0 -0
  1010. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_projects.py +0 -0
  1011. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_provider_preflight_coverage.py +0 -0
  1012. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_provider_teardown_robustness.py +0 -0
  1013. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_providers_symmetry.py +0 -0
  1014. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_repo_cleanup.py +0 -0
  1015. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_resolve_params_b.py +0 -0
  1016. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_rl_train.py +0 -0
  1017. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_rollout_samples.py +0 -0
  1018. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_runpod_api_delete.py +0 -0
  1019. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_runpod_key_fingerprint.py +0 -0
  1020. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_runpod_key_waterfall.py +0 -0
  1021. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_runtime_capsule.py +0 -0
  1022. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_packaging.py +0 -0
  1023. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  1024. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_teardown_identity.py +0 -0
  1025. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_adapters.py +0 -0
  1026. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_engine.py +0 -0
  1027. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_package.py +0 -0
  1028. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_types.py +0 -0
  1029. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_server_app_coverage.py +0 -0
  1030. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_server_auth_singleflight.py +0 -0
  1031. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_server_checkpoints_coverage.py +0 -0
  1032. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_server_db.py +0 -0
  1033. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_server_locks_coverage.py +0 -0
  1034. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serving_conformance_gate.py +0 -0
  1035. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_serving_schema_coverage.py +0 -0
  1036. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_chunked_nll.py +0 -0
  1037. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_example_selection.py +0 -0
  1038. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_gc_off.py +0 -0
  1039. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_max_context.py +0 -0
  1040. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_step_floor.py +0 -0
  1041. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_train.py +0 -0
  1042. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_sft_workload.py +0 -0
  1043. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_source_attestation_flow.py +0 -0
  1044. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_source_layout.py +0 -0
  1045. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_source_snapshot.py +0 -0
  1046. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_spec_contract_bytes.py +0 -0
  1047. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_staged_environment.py +0 -0
  1048. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_step_floor.py +0 -0
  1049. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_step_metrics.py +0 -0
  1050. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_step_timing.py +0 -0
  1051. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_structured_outputs.py +0 -0
  1052. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_teacher_encoding_contract.py +0 -0
  1053. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_terminal_artifacts.py +0 -0
  1054. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_thinking_config.py +0 -0
  1055. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_training_controls.py +0 -0
  1056. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_type_comment_prose.py +0 -0
  1057. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vast_api.py +0 -0
  1058. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vast_api_coverage.py +0 -0
  1059. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vast_offers.py +0 -0
  1060. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vast_provider_coverage.py +0 -0
  1061. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vast_runner.py +0 -0
  1062. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_verifiers.py +0 -0
  1063. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_verl_checkpoint_export.py +0 -0
  1064. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_verl_child_plugins.py +0 -0
  1065. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_verl_silence_watchdog.py +0 -0
  1066. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_version.py +0 -0
  1067. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1068. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vllm_moe_lora_backport.py +0 -0
  1069. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_vram_architecture.py +0 -0
  1070. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_wandb_link.py +0 -0
  1071. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_adapter_download.py +0 -0
  1072. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_error_attribution.py +0 -0
  1073. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_image_adapters.py +0 -0
  1074. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_weight_cache.py +0 -0
  1075. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_dryrun.py +0 -0
  1076. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_hardexit.py +0 -0
  1077. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_image.py +0 -0
  1078. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_init_heartbeat.py +0 -0
  1079. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_stack.py +0 -0
  1080. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_worker_thinking.py +0 -0
  1081. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_workflow_contracts.py +0 -0
  1082. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_workload_profile.py +0 -0
  1083. {freesolo_flash_dev-1.2.119 → freesolo_flash_dev-1.2.121}/tests/test_zero2_sharding_gate.py +0 -0
@@ -0,0 +1,220 @@
1
+ # Changelog
2
+
3
+ Notable changes to `freesolo-flash`. The dev-channel package `freesolo-flash-dev` ships in
4
+ lockstep at the same version.
5
+
6
+ Releases happen by merging a version bump from `dev` into `main`, which publishes to PyPI
7
+ (`.github/workflows/publish.yml`). Versions are `MAJOR.MINOR.PATCH`.
8
+
9
+ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
10
+ `git log` for anything before that.
11
+
12
+ ## Unreleased
13
+
14
+ ### Added
15
+
16
+ - OpenAI chat serving now preserves mirror sampling controls across packaged, hosted, and managed
17
+ entry points: up to four indexed choices, signed seeds, frequency and presence penalties, and
18
+ OpenAI token logprobs. Buffered and raw SSE responses retain independent choice terminals and
19
+ aggregate request usage; the decoded text-only stream remains single-choice.
20
+ - A `flash-cli` console script, the same entry point as `flash` under a name nothing else
21
+ claims. The `server` and `dev` extras install `runpod-flash`, which declares its own `flash`
22
+ script; whichever distribution is installed last wins, so on a control-plane host
23
+ `pip install 'freesolo-flash[server]'` could leave `flash` running RunPod's CLI, which exits 0
24
+ and does nothing. `flash` is unchanged and remains correct on a base (client-only) install.
25
+
26
+ ### Changed
27
+
28
+ - Run-backed adapters now use only explicit permanent checkpoint identities, `<run_id>/final` and
29
+ `<run_id>/step-N`. Bare run aliases, composite source-revision identities, activation, implicit
30
+ checkpoint fallback, and public artifact provenance have been removed across hosted, managed, and
31
+ customer-owned serving. Checkpoint bindings are write-once, exact undeploy preserves siblings,
32
+ and customer-owned manifests use schema v2.
33
+ - Active training now exposes exactly `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
34
+ `Qwen/Qwen3.6-35B-A3B`. Hosted serving remains active for 9B and 35B-A3B; hosted Qwen3.8 27B
35
+ remains inactive. Qwen3.8 uses the immutable BF16 revision
36
+ `1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0` and official native block-FP8 serving revision
37
+ `017b9c7af6b5689d5dd426a76e0bc077eb5ca20a`, with the logical base and tokenizer provenance kept
38
+ distinct from the served checkpoint. The Qwen3.5 0.8B, 2B, and 4B tiers and
39
+ `Qwen/Qwen3.6-27B` cannot activate, while historical status, accepted billing retry,
40
+ cancellation, cleanup, hosted revocation, and exact identity-based undeploy remain available.
41
+ Qwen3.6 27B adapters are not compatible with Qwen3.8.
42
+ - Customer-owned serving is now Modal-only and requires explicit `--provider modal`. Modal remains
43
+ live-qualified for all three active models. The 27B and 35B-A3B qualifications stay bound to the
44
+ exact certified serving image digest. Each deployment still serves one exact base model. The 27B
45
+ engine keeps its `H100!` placement and distinct served checkpoint and tokenizer provenance. The
46
+ 35B-A3B engine keeps its H200, BF16, FP8 KV, 32K context, eight-sequence, 4096 batched-token, and
47
+ six rank-64 LoRA-slot contract. Customer-serving RunPod commands, profiles, identities, and
48
+ lifecycle code are removed without a compatibility or teardown shim. Managed RunPod training,
49
+ serverless workers, dependencies, provider routing, artifacts, and caching are unchanged.
50
+ - `[train] init_from_adapter` now works for every source/target algorithm pair. SFT was rejected as
51
+ a warm-start target, so an adapter could be continued only by GRPO or OPD; that restriction
52
+ described the retired trl SFT backend, and the verl backend that replaced it loads a warm-start
53
+ adapter exactly like the other two. All nine combinations of `sft`, `grpo`, and `opd` are
54
+ supported, including same-algorithm continuation. A warm-started SFT run also inherits its
55
+ source's base-model pin instead of resolving its own, so it stays deployable and no longer breaks
56
+ when the base model's hub tip moves.
57
+ - Managed attempts now pin, verify, and report one immutable Flash source archive across retries and recovery.
58
+ - Multi-turn GRPO now clones each sibling rollout from the task state that produced its prepared
59
+ prompt. Environments that record randomized episode choices on the task during `start_episode`
60
+ are stepped and scored against the same episode the model saw, without sharing mutable state
61
+ between sibling rollouts.
62
+ - A RunPod attempt's stall window is now measured from evidence timestamps rather than from when
63
+ the control plane happened to look at it. The window was seeded from the moment polling started
64
+ and was reset again by the first status read, and a heartbeat was credited at the time it was
65
+ read rather than the time it was written. Every one of those is a wall-clock reading, so each
66
+ reattach handed a worker that was already wedged a complete fresh setup window, and a supervisor
67
+ that reattached repeatedly could keep a dead worker on a paid GPU until the run's wall deadline.
68
+ The window is now anchored to the persisted launch, a heartbeat is credited at its own timestamp
69
+ clamped to that launch, and only a genuine status transition counts as progress. Instance
70
+ polling (Vast/Lambda) already worked this way; this brings RunPod onto the same rule. A job that
71
+ is still queued is unaffected: the capacity wait keeps its own exemption, so a worker granted
72
+ late still gets its full cold-start budget.
73
+ - An attempt's terminal artifacts (its strict marker plus `metrics.json`) are now interpreted by
74
+ one shared protocol instead of being decoded separately by live instance polling and by each
75
+ recovery path. The two decoders disagreed about identical bytes. A marker that could not be tied
76
+ to the attempt was a terminal failure to the live poller but indistinguishable from "no marker
77
+ yet" to recovery, so the same corrupt artifact produced a different story depending on which
78
+ layer happened to observe it; recovery now names it rather than logging silence. Neither path
79
+ ever adopted such a marker as completed work, and neither does now. Recovery also computed a
80
+ fresh observation window for the marker and then another for `metrics.json`, so the real ceiling
81
+ was their sum and moved with however long the first read took; both reads now share one window,
82
+ which makes the bound the cutoff rather than the sum.
83
+ - CI runs the offline test suite on both supported interpreters (3.11 and 3.12) rather than
84
+ 3.11 alone, and sets `HF_HUB_OFFLINE` / `TRANSFORMERS_OFFLINE` so a test that reaches the
85
+ network fails deterministically instead of depending on runner connectivity.
86
+ - Every GitHub Action is pinned to a commit SHA rather than a mutable tag.
87
+ - `mypy` runs in CI as an advisory (non-blocking) job.
88
+
89
+ ### Fixed
90
+
91
+ - Qwen3.6 FP8 MoE serving now preserves unquantized activations for LoRA A while keeping the base
92
+ MoE path quantized, backporting the exact vLLM PR #42120 behavior into the pinned 0.23.0 image.
93
+ - GRPO publication now validates complete finite optimizer-step actor gradient norms instead of
94
+ masked advantage-bound spread, so valid truncated groups are not falsely rejected and deployable
95
+ checkpoints remain withheld until terminal evidence validation succeeds.
96
+ - Completed verl children now finish each captured W&B run before the W&B service shuts down,
97
+ avoiding teardown tracebacks, and `flash env setup` now gives every starter config explicit W&B
98
+ project and folder-derived run metadata.
99
+
100
+ - An ordered `[gpu] type` list is now priced over every class it declares acceptable, not just the
101
+ first. Allocation cost-ranks the whole set, so quoting the head alone priced a shape the run may
102
+ never be given — an authored `["B200", "H100"]` quoted roughly 3x the H100 the allocator would
103
+ really rent, and the submit-time affordability check runs on that estimate, so a run the
104
+ organization could afford could be refused before allocation ever got to choose. A single
105
+ authored class is still a hard pin, and a no-fit rejection now names every acceptable class
106
+ rather than whichever happened to be written first.
107
+
108
+ - A provider preference that exhausts every configured provider no longer falls back to quoting
109
+ hardware this plane cannot rent. The final fallback dropped the restriction and ranked the
110
+ registered RunPod pool regardless of credentials, so a vast-only plane could quote a B200: the
111
+ estimate passed affordability and the run was recorded, only for live allocation to fail. The
112
+ quote now raises against the eligible set, which names the real constraint.
113
+
114
+ - A GitHub token that is invalid, expired, or missing a scope now fails during preparation instead
115
+ of after a GPU is rented. Non-rate-limit 401 and 403 responses were left as untyped errors, which
116
+ the submit-time preflight treats as a transient blip worth deferring, so the run proceeded
117
+ through affordability and allocation and hit the same permanent credential error on the worker.
118
+ They are now classified permanent, like 404 and 422. The rate-limit 403 is still transient.
119
+
120
+ - A slow heartbeat upload no longer stalls every other heartbeat behind it. The throttle clock only
121
+ advances once a commit lands, so during a slow HuggingFace commit other callers still saw an
122
+ upload as due and blocked on the upload lock for up to its acquire timeout — 30s, or 120s on a
123
+ critical stage — which stalled the liveness daemon and delayed leaving the wrapped stage by the
124
+ same window. A throttled heartbeat now skips while a commit is in flight, since that commit
125
+ already carries the stage's state. Terminal, error, initial, and forced step commits still queue
126
+ and land: they carry state no later heartbeat would repair.
127
+
128
+ - A GRPO or OPD run whose rollout actor exited hard no longer wedges on a paid GPU until the
129
+ wall-time limit. The actor's `os._exit` bypassed verl's own prompt handler, so the prompt
130
+ stayed `running` forever and verl's unbounded replay poll waited on it at ~0% utilization. The
131
+ child now writes durable failure evidence, marks the prompt failed, cleans up, and only then
132
+ exits, and replay sampling fails the step on an explicit failure tag or a positively dead
133
+ actor instead of returning a survivor-only batch that would silently train on fewer rollouts
134
+ than were collected. A child that reaches the fit loop and then stops producing distinct
135
+ output, while the parent has no teacher or environment work in flight, is torn down with a
136
+ named cause rather than running silently to the limit; repeated identical lines count as
137
+ silence, and authoritative OOM, host-RAM, and infrastructure evidence still classifies the
138
+ exit first.
139
+ - `flash models deploy` now warns before it moves the shared `<run-id>` model id onto a
140
+ different checkpoint. Every checkpoint of a run is served under that one id, so deploying
141
+ `<run-id>/step-50` while `step-100` was live silently changed what `<run-id>` served for
142
+ everyone using it — which made "deploy a second checkpoint to compare" a destructive
143
+ operation on the first, and read as a serving regression rather than the deploy that caused
144
+ it. The warning names both checkpoints and points at `flash models chat <run-id>/step-N`,
145
+ which addresses a checkpoint directly and does not depend on where the id points. It is
146
+ advisory: the deploy still proceeds, the pre-deploy read is abandoned outright once it exceeds
147
+ a few seconds so no shape of slow plane can hold a deploy behind it, and a control plane that
148
+ cannot answer (or answers with a checkpoint step this client cannot read) does not fail the
149
+ command. A deployment whose activation outcome was never settled still warns, but without
150
+ naming a checkpoint: that record's step describes the incoming attempt rather than what the id
151
+ currently serves, and the authoritative target is server-side only, so the warning says the
152
+ live checkpoint cannot be determined and points at `flash models deployments`.
153
+
154
+ - A response deadline did not actually bound a response that arrived slowly. The deadline is
155
+ checked between reads, but each read asked for a fixed number of bytes and blocked until all of
156
+ them arrived, so a peer trickling a short body kept one read inside the socket timeout
157
+ indefinitely and the check never ran: a 2s deadline took 12s on a 42-byte body, and 61s when
158
+ the socket timeout was the client default. Reading whatever has already arrived lets the check
159
+ run, which bounds every stall shape. This affected `flash env list`, whose deadline exists to
160
+ stop a slow environment hub hanging the command, as well as the new pre-deploy read.
161
+
162
+ - A response deadline could still be overrun by a read that began near its end. The socket timeout
163
+ is installed once, when the request opens, and time spent connecting and waiting for headers is
164
+ charged to the deadline but not to that timeout, so a peer that delayed its headers and then
165
+ stalled mid-body held the call open past the deadline: 3.5s against a 2s budget. Each read now
166
+ re-caps the socket to the remaining budget, so the two bounds agree instead of stacking. On a
167
+ body still arriving this surfaces as a timeout rather than the "stalled" message; both bound the
168
+ call, and which one wins is a race not worth depending on.
169
+
170
+ - Commands printed for the operator to run (the resume/cancel hand-off after `flash train`,
171
+ usage strings, `next:` hints) now name the executable actually invoked rather than always
172
+ `flash`. On a host where `runpod-flash` owns the `flash` script, the printed
173
+ `flash runs cancel <run-id>` exited 0 without cancelling, leaving a run billing while the
174
+ operator believed they had stopped it. Reached through the `python -m flash.cli` escape hatch,
175
+ the printed command now names the interpreter that is actually running, rather than a bare
176
+ `python` that is absent on a python3-only host and may resolve to a different environment
177
+ inside a virtualenv.
178
+
179
+ - `flash env setup` scaffolded hosted-only environment instructions on every plane. A
180
+ self-hosted plane cannot publish to Freesolo's managed environment hub, so the generated
181
+ configs left `[environment] id` empty (which fails validation) beside a `flash env push`
182
+ command that could not work. Against a self-hosted plane the scaffold now emits the
183
+ `github:owner/repo@ref:path` id form, which such a plane resolves directly. Output against
184
+ the managed plane is unchanged.
185
+
186
+ - `flash-server` reported missing operator configuration as an unhandled ASGI startup
187
+ exception, so the actionable message arrived under ~20 frames of starlette/contextlib. The
188
+ refusing half of the preflight now runs before uvicorn starts, and `flash-server` prints
189
+ `error: ...` and exits 3 (uvicorn's `STARTUP_FAILURE`, which this path already used, so
190
+ supervision keying on it is unaffected). The advisory warnings still come from the lifespan
191
+ alone, so a booted plane logs them once.
192
+ - `flash env test` blamed the reward function for a gold answer that scored zero, when the
193
+ gold completion is equally likely to be at fault: with no `sft_completion` hook the replayed
194
+ answer is the dataset row's raw `output`, so a dataset whose `output` is a bare value fails a
195
+ grader that (correctly) requires a wrapper. The warning now names both candidates and prints
196
+ the exact text it scored, verbatim rather than through the whitespace-collapsing, 200-character
197
+ preview that hid the formatting faults it exists to reveal. The scaffolded `environment.py`
198
+ documents that `output` is also the gold assistant turn SFT trains on, and that per-row scorer
199
+ state belongs in `metadata`.
200
+ - `flash env test` labelled the replayed dataset turns as the text that scored zero, but a
201
+ multi-turn environment whose `step_episode` returns a `final_response_text` has that override
202
+ replace the episode's response before scoring, so the diagnostic named text the grader never
203
+ saw. It now reports what the scorer actually received, captured at the scoring call.
204
+ - An environment that overrode its answer to the empty string had `flash env test` report the
205
+ replayed turns instead: the captured text was tested for truth, so a graded `""` was
206
+ indistinguishable from an episode that never reached the scorer. The override propagates on
207
+ `is not None`, so `""` really is what the grader saw -- and an empty answer explains a zero
208
+ reward on its own, making it the reading a reader most needs named rather than hidden.
209
+ - A crashed scorer went unreported on an `echo` episode -- a row with no gold answer to replay,
210
+ which is also the case that leaves the GRPO gate with nothing to count. `flash env test` could
211
+ exit `overall: PASS` with every reward coming from a scorer that never ran. The scorer's error is
212
+ now surfaced for any policy.
213
+ - A scorer that crashed behind the SDK's guard reached `flash env test` as a bare `0.000000`,
214
+ indistinguishable from a judged-wrong answer, because the adapter kept only
215
+ `RewardResult.score`. The new `FreesoloEnvironment.reward_with_error` returns the reward and the
216
+ discarded error from a single scoring call, so a missing runtime dependency names itself without
217
+ re-scoring the episode -- which would bill a paid judge twice and, for a non-deterministic
218
+ scorer, could report an error that did not produce the printed reward.
219
+ - Two tests resolved Hugging Face model metadata over the network and passed only on a
220
+ connected runner. They now stub the resolver like their siblings already did.
@@ -0,0 +1,352 @@
1
+ Metadata-Version: 2.5
2
+ Name: freesolo-flash-dev
3
+ Version: 1.2.121
4
+ Summary: Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI
5
+ Project-URL: Homepage, https://github.com/freesolo-co/flash
6
+ Project-URL: Repository, https://github.com/freesolo-co/flash
7
+ Author: Freesolo
8
+ License-Expression: Apache-2.0
9
+ License-File: LICENSE
10
+ License-File: NOTICE
11
+ Keywords: fine-tuning,freesolo,grpo,llm,lora,rl,sft
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Requires-Python: <3.13,>=3.11
19
+ Provides-Extra: dev
20
+ Requires-Dist: datasets>=2.19; extra == 'dev'
21
+ Requires-Dist: fastapi<1,>=0.136; extra == 'dev'
22
+ Requires-Dist: freesolo>=0.4.2; extra == 'dev'
23
+ Requires-Dist: httpx>=0.27; extra == 'dev'
24
+ Requires-Dist: huggingface-hub>=1.2.0; extra == 'dev'
25
+ Requires-Dist: jsonschema>=4.23; extra == 'dev'
26
+ Requires-Dist: mypy>=1.13.0; extra == 'dev'
27
+ Requires-Dist: packaging<27,>=24; extra == 'dev'
28
+ Requires-Dist: pillow>=11; extra == 'dev'
29
+ Requires-Dist: pytest>=9.0.3; extra == 'dev'
30
+ Requires-Dist: referencing>=0.28.4; extra == 'dev'
31
+ Requires-Dist: regex>=2024.11.6; extra == 'dev'
32
+ Requires-Dist: ruff<0.17,>=0.6; extra == 'dev'
33
+ Requires-Dist: runpod-flash<2,>=1.19; extra == 'dev'
34
+ Requires-Dist: tiktoken>=0.12; extra == 'dev'
35
+ Requires-Dist: tokenizers>=0.22; extra == 'dev'
36
+ Requires-Dist: transformers<5.13,>=5.8; extra == 'dev'
37
+ Requires-Dist: uvicorn<1,>=0.52; extra == 'dev'
38
+ Provides-Extra: gpu
39
+ Requires-Dist: accelerate>=1.4; extra == 'gpu'
40
+ Requires-Dist: bitsandbytes>=0.49; extra == 'gpu'
41
+ Requires-Dist: datasets>=2.19; extra == 'gpu'
42
+ Requires-Dist: freesolo>=0.4.2; extra == 'gpu'
43
+ Requires-Dist: huggingface-hub>=1.2.0; extra == 'gpu'
44
+ Requires-Dist: peft>=0.19; extra == 'gpu'
45
+ Requires-Dist: tiktoken>=0.12; extra == 'gpu'
46
+ Requires-Dist: tokenizers>=0.22; extra == 'gpu'
47
+ Requires-Dist: torch==2.10.0; extra == 'gpu'
48
+ Requires-Dist: transformers<5.13,>=5.8; extra == 'gpu'
49
+ Requires-Dist: uv>=0.5; extra == 'gpu'
50
+ Requires-Dist: vllm==0.19.1; extra == 'gpu'
51
+ Provides-Extra: serve-runtime
52
+ Requires-Dist: fastapi<0.137,>=0.136; extra == 'serve-runtime'
53
+ Requires-Dist: huggingface-hub>=1.2.0; extra == 'serve-runtime'
54
+ Requires-Dist: pillow>=11.0.0; extra == 'serve-runtime'
55
+ Requires-Dist: safetensors<1,>=0.8; extra == 'serve-runtime'
56
+ Requires-Dist: transformers<5.13,>=5.8; extra == 'serve-runtime'
57
+ Requires-Dist: uvicorn<1,>=0.52; extra == 'serve-runtime'
58
+ Requires-Dist: vllm==0.23.0; extra == 'serve-runtime'
59
+ Provides-Extra: server
60
+ Requires-Dist: datasets>=2.19; extra == 'server'
61
+ Requires-Dist: fastapi<1,>=0.136; extra == 'server'
62
+ Requires-Dist: freesolo>=0.4.2; extra == 'server'
63
+ Requires-Dist: httpx>=0.27; extra == 'server'
64
+ Requires-Dist: huggingface-hub>=1.2.0; extra == 'server'
65
+ Requires-Dist: jsonschema>=4.23; extra == 'server'
66
+ Requires-Dist: modal==1.5.4; extra == 'server'
67
+ Requires-Dist: pillow>=11; extra == 'server'
68
+ Requires-Dist: referencing>=0.28.4; extra == 'server'
69
+ Requires-Dist: regex>=2024.11.6; extra == 'server'
70
+ Requires-Dist: runpod-flash<2,>=1.19; extra == 'server'
71
+ Requires-Dist: transformers<5.13,>=5.8; extra == 'server'
72
+ Requires-Dist: uvicorn<1,>=0.52; extra == 'server'
73
+ Provides-Extra: serving
74
+ Requires-Dist: fastapi<1,>=0.136; extra == 'serving'
75
+ Requires-Dist: httpx>=0.27.0; extra == 'serving'
76
+ Requires-Dist: modal==1.5.4; extra == 'serving'
77
+ Requires-Dist: orjson>=3.10.0; extra == 'serving'
78
+ Requires-Dist: pillow>=11; extra == 'serving'
79
+ Requires-Dist: pydantic-settings>=2.6.0; extra == 'serving'
80
+ Requires-Dist: pydantic>=2.7.0; extra == 'serving'
81
+ Requires-Dist: python-dotenv>=1.0.0; extra == 'serving'
82
+ Description-Content-Type: text/markdown
83
+
84
+ # Flash
85
+
86
+ LoRA post-training for open-weight models: SFT, GRPO, and on-policy distillation. You
87
+ describe a run in a TOML file, Flash allocates a GPU, trains, streams checkpoints, and
88
+ serves the resulting adapter.
89
+
90
+ ```bash
91
+ pip install freesolo-flash
92
+ export FREESOLO_API_KEY=fslo_...
93
+ flash login
94
+ flash train run.toml
95
+ ```
96
+
97
+ The allocator picks the cheapest validated GPU class that fits the run, then supervises it
98
+ server-side: stall watchdog, bounded auto-retry resuming from the last streamed checkpoint,
99
+ and endpoint GC.
100
+
101
+ ## What this repository is
102
+
103
+ Flash is the **client and control plane** for Freesolo's hosted post-training service:
104
+
105
+ | Path | What it is |
106
+ | ------------------ | ----------------------------------------------------------------- |
107
+ | `flash/cli/` | the `flash` CLI — no declared runtime dependencies\* |
108
+ | `flash/server/` | the FastAPI control plane — run submission, auth, project scoping |
109
+ | `flash/engine/` | the GPU worker and training recipes — verl + colocated vLLM |
110
+ | `flash/providers/` | the GPU substrate — pricing, allocation, submit/poll |
111
+ | `flash/envs/` | environment loading |
112
+
113
+ \* `pip install freesolo-flash` pulls nothing. Commands that run an environment **locally** —
114
+ `flash env test` and `flash env eval` — do need the `freesolo` SDK, which they import at the
115
+ point of use; install it with `pip install freesolo`.
116
+
117
+ Two components stay Freesolo-operated and are **not** in this repository:
118
+
119
+ | Component | Where it lives | Self-hosted equivalent |
120
+ | ------------------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
121
+ | Multi-tenant identity | `api.freesolo.co`; verifies keys and owns projects/orgs | `FLASH_STANDALONE=1` runs single-tenant on your own key |
122
+ | Hosted Multi-LoRA serving | `serve.freesolo.co`, deployed from `flash/serving/`; `flash/serve/` owns the client and shared runtime | `flash serve deploy` provisions serving in your own Modal account |
123
+
124
+ So there are three ways to use Flash: against the **hosted service**, **self-hosted** against
125
+ your own GPU accounts, or as **training and provider code to read and modify**. The training
126
+ path is self-hostable end to end — see **[SELF_HOSTING.md](SELF_HOSTING.md)**.
127
+
128
+ ## Using the hosted service
129
+
130
+ The active training catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
131
+ `Qwen/Qwen3.6-35B-A3B`. Hosted serving is active for 9B and 35B-A3B; hosted Qwen3.8 27B remains
132
+ inactive. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8. Customer-owned
133
+ Modal supports all three active models; 27B and 35B-A3B are bound to the certified serving image
134
+ digest. Customer-owned `flash serve` requires explicit `--provider modal`. Customer-serving RunPod
135
+ commands and deployment identities are unsupported, with no migration or teardown shim. Managed
136
+ RunPod training remains supported and unchanged.
137
+
138
+ `flash login` is not interactive. Export `FREESOLO_API_KEY` first so the key does not appear in process listings:
139
+
140
+ ```bash
141
+ pip install freesolo-flash
142
+ export FREESOLO_API_KEY=fslo_...
143
+ flash login # validates the key, stores it in ~/.flash/config.json
144
+ flash whoami # confirm the identity behind it
145
+ ```
146
+
147
+ Every run names an environment, which supplies the task data and the reward or SFT target.
148
+ Environments are published under a project, which scopes them to an organization:
149
+
150
+ ```bash
151
+ flash projects create my-project # returns a project uuid
152
+ flash projects list # look up existing uuids
153
+ flash env setup # scaffold environment.py + dataset/train.jsonl
154
+ flash env push --project PROJECT_UUID --name my-env . # returns an environment id
155
+ ```
156
+
157
+ Every training TOML carries a required top-level `project`, validated against the
158
+ authenticated organization before Flash allocates anything:
159
+
160
+ ```toml
161
+ project = "your-project-uuid"
162
+ model = "Qwen/Qwen3.5-9B"
163
+ algorithm = "sft"
164
+
165
+ [environment]
166
+ id = "your-org/your-project/my-env"
167
+
168
+ [train]
169
+ epochs = 1
170
+ max_examples = 1000
171
+ lora_rank = 32 # lora_alpha defaults to 2 x lora_rank; set it to override
172
+ ```
173
+
174
+ ```bash
175
+ flash train run.toml # submit, prints a run id
176
+ flash runs status RUN_ID # follow it
177
+ flash models deploy RUN_ID/final # serve the final checkpoint
178
+ flash models chat RUN_ID/final -m "hello" # talk to it
179
+ ```
180
+
181
+ Run management lives under `flash runs` (`list`, `status`, `log`, `cancel`, `checkpoint`)
182
+ and serving under `flash models` (`deploy`, `chat`, `deployments`, `undeploy`, `export`).
183
+ `flash models` lists supported base models — six curated Qwen checkpoints — and `flash gpus`
184
+ lists GPU classes with estimated $/hr.
185
+
186
+ Intermediate RL checkpoints are deployable: list them with `flash runs checkpoint RUN_ID`,
187
+ then pass `RUN_ID/step-N` as the checkpoint id. To copy a finished adapter into your own
188
+ HuggingFace repo:
189
+
190
+ ```bash
191
+ export HF_TOKEN=hf_...
192
+ flash models export --adapter-id RUN_ID/final --repository your-org/your-repo
193
+ ```
194
+
195
+ There are no built-in task environments — the environment you push defines the task.
196
+ Single-turn and bounded multi-turn environments are supported.
197
+
198
+ ### Calling a deployed adapter from your own app
199
+
200
+ Deploy once with `flash models deploy RUN_ID/final`, then POST chat requests with your API key:
201
+
202
+ ```bash
203
+ export RUN_ID=flash-1782194170-ce1cfcff
204
+ export FREESOLO_API_KEY=fslo_...
205
+
206
+ curl -X POST "https://flash.freesolo.co/v1/runs/$RUN_ID/chat" \
207
+ -H "Authorization: Bearer $FREESOLO_API_KEY" \
208
+ -H "Content-Type: application/json" \
209
+ -d "{\"checkpoint_id\": \"$RUN_ID/final\", \"messages\": [{\"role\": \"user\", \"content\": \"hello\"}], \"max_tokens\": 256}"
210
+ ```
211
+
212
+ The response uses the OpenAI chat-completions shape; read `choices[0].message.content`. The
213
+ checkpoint id is the permanent serving identity. If that checkpoint is not deployed yet, the
214
+ endpoint returns `409` with a hint to deploy first. Prefer this control-plane endpoint over calling the serving backend
215
+ directly: it enforces run ownership and forwards per-run serving options such as
216
+ thinking-mode parity.
217
+
218
+ ### Workload estimates (SFT)
219
+
220
+ `flash train`, `--dry-run`, and `--cost` read the pinned environment's packaged dataset
221
+ without importing `environment.py`. `dataset/train.jsonl` is the canonical default;
222
+ `dataset/train.json` also works, and `[environment.params] split` or `dataset_path` can
223
+ select another packaged file.
224
+
225
+ The estimate tokenizes raw `input`/`output` fields plus the statically readable training
226
+ contract. Environment-added prompts, few-shot examples, tool schemas, filters, and
227
+ transformations are **not** executed, so real training can retain fewer rows, truncate more
228
+ often, and cost more than the estimate. If no readable dataset exists, cost, dry-run, and
229
+ submit all fail before GPU allocation rather than billing a profiling run.
230
+
231
+ ## Working on the code
232
+
233
+ The test suite is CPU-only and offline by default. No GPU, no network, no credentials:
234
+
235
+ ```bash
236
+ uv sync --extra server --dev
237
+ uv run ruff check .
238
+ uv run ruff format --check .
239
+ uv run pytest -q
240
+ ```
241
+
242
+ CI (`.github/workflows/ci.yml`) runs those on both supported interpreters (3.11 and 3.12),
243
+ plus two size gates and a serial pass for timing-sensitive tests:
244
+
245
+ ```bash
246
+ uv run python scripts/check_file_size.py # no module in flash/ over 1000 lines
247
+ uv run python scripts/check_function_size.py # no function in flash/ over 150 lines
248
+ uv run pytest -q -m wallclock # asserts on real elapsed time; runs alone
249
+ ```
250
+
251
+ `mypy` also runs in CI but is **advisory** — it reports existing type errors without failing
252
+ the build. Formatting is gated, so run `uv run ruff format .` before you push.
253
+
254
+ > **The `flash` command can belong to something else.** The `server` and `dev` extras install
255
+ > `runpod-flash`, which declares its own `flash` console script; whichever installs last wins,
256
+ > and RunPod's exits 0 while doing nothing. Use **`flash-cli`** — the same entry point under a
257
+ > name nothing else claims — or `python -m flash.cli` from a checkout. A base
258
+ > `pip install freesolo-flash` is unaffected.
259
+
260
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the branching model — in short, **pull requests go
261
+ into `dev`**.
262
+
263
+ ### Layout
264
+
265
+ - `flash/core/catalog.py` — curated model catalog (Qwen3.5, Qwen3.8 dense, and Qwen3.6 MoE), VRAM
266
+ sizing, and each model's `thinking` capability
267
+ - `flash/schema/`, `flash/core/spec.py` — TOML to `JobSpec`
268
+ - `flash/runner/` — server-side run supervisor (durable job handle, retries, cost guard)
269
+ - `flash/providers/` — GPU substrate behind the `base.Provider` protocol, with `allocator.py`
270
+ picking the cheapest fitting class
271
+ - `flash/engine/` — the on-GPU worker (verl + colocated vLLM rollouts) and the shared recipe.
272
+ SFT targets and RL rewards route through the active environment, so task-specific grading
273
+ lives with the example, not in the engine
274
+ - `flash/envs/` — environment registry and the Freesolo SDK adapter
275
+ - `flash/serve/` — serving client, shared runtime, and customer-owned provider deployment
276
+ - `flash/serving/` — the hosted multi-LoRA Modal app behind `serve.freesolo.co`
277
+ - `flash/server/` — the FastAPI control plane (run via the separate `flash-server` command)
278
+ - `tests/` — pytest suite, CPU-only and offline
279
+
280
+ Within `flash/engine/worker/`, trainers live under `train/`, split by algorithm (`sft/`,
281
+ `rl/`, `opd/`) over a shared `core/`. Each carries a `child/` holding stdlib-only modules
282
+ **copied** into the verl subprocess rather than imported — flash and verl pin incompatible
283
+ torch/vllm versions, so neither can import the other.
284
+
285
+ ## Self-hosting
286
+
287
+ Run your own control plane against your own GPU accounts, with no Freesolo backend involved.
288
+ **[SELF_HOSTING.md](SELF_HOSTING.md) is the full guide**; the short version:
289
+
290
+ ```bash
291
+ pip install 'freesolo-flash[server]' # the base install is client-only
292
+
293
+ export FLASH_STANDALONE=1
294
+ export FREESOLO_INTERNAL_KEY=$(openssl rand -hex 32)
295
+ export HF_TOKEN=hf_...
296
+ export FLASH_HF_NAMESPACE=your-hf-username # a namespace your HF_TOKEN can write to
297
+ export RUNPOD_API_KEY=... # or LAMBDA_API_KEY, or VAST_API_KEY
298
+
299
+ flash-server --host 0.0.0.0 --port 8080
300
+ ```
301
+
302
+ You need **one** of RunPod, Lambda, or Vast. Providers whose key is unset are never
303
+ considered, and the allocator only proposes classes it can actually provision. Startup fails
304
+ only when all three are missing.
305
+
306
+ `FLASH_STANDALONE=1` stops the plane calling out for project, environment, and billing
307
+ validation, and trusts `FREESOLO_INTERNAL_KEY` as a single-tenant operator credential.
308
+ External bearer tokens are rejected rather than accepted unverified. A standalone plane is
309
+ **single-tenant** — whoever holds that key can spend your GPU budget, so keep it off
310
+ untrusted networks. See [the security model](SELF_HOSTING.md#the-security-model).
311
+
312
+ `flash serve deploy` provisions serving in your own Modal account and requires explicit
313
+ `--provider modal`. Each deployment owns one exact base model and its compatible adapters; another
314
+ base model requires another deployment. Customer-serving RunPod identities are unsupported.
315
+ It implements the same contract `flash/serve/` speaks; [docs/serving-contract.md](docs/serving-contract.md)
316
+ documents it if you would rather write your own.
317
+
318
+ The GPU worker image is public and published under an explicit CUDA tag, not `latest`:
319
+
320
+ ```bash
321
+ docker pull ghcr.io/freesolo-co/flash-worker:cu128
322
+ ```
323
+
324
+ ## Release channels
325
+
326
+ Two channels are published to PyPI from the _same source_, distinguished by one line in
327
+ `flash/_internal/channel.py`:
328
+
329
+ | Channel | PyPI package | CLI | Default plane | Published on |
330
+ | ------- | -------------------- | ----------- | ----------------------- | -------------------------------------- |
331
+ | prod | `freesolo-flash` | `flash` | `flash.freesolo.co` | a version bump merged to `main` |
332
+ | dev | `freesolo-flash-dev` | `flash-dev` | `flash-dev.freesolo.co` | a push to `dev` with an unused version |
333
+
334
+ Each environment holds exactly **one** channel: both packages ship the same import package
335
+ with one baked `CHANNEL` line, so installing both makes the later install win for _both_
336
+ CLIs. For side-by-side prod and staging, use a virtualenv per channel (or `pipx`).
337
+
338
+ Within a commit, `[project].version` and `[tool.flash-dev].version` must match (CI enforces
339
+ this), so cutting a release bumps both. The **published** channels still differ, because dev
340
+ publishes on merge to `dev` while prod publishes only once `dev` is promoted to `main`.
341
+
342
+ Either CLI honours an explicit `FLASH_API_URL` or `login --api-url`; the channel only sets
343
+ the default.
344
+
345
+ ## Contributing
346
+
347
+ See [CONTRIBUTING.md](CONTRIBUTING.md). Security issues: [SECURITY.md](SECURITY.md) — do not
348
+ open a public issue.
349
+
350
+ ## License
351
+
352
+ Apache-2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).