freesolo-flash-dev 1.2.120__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 (901) hide show
  1. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/CHANGELOG.md +5 -0
  2. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/PKG-INFO +9 -9
  3. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/README.md +8 -8
  4. freesolo_flash_dev-1.2.121/docs/serving-contract.md +122 -0
  5. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/eval.py +30 -121
  6. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/deploy.py +11 -219
  7. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/identity.py +8 -13
  8. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/env.py +1 -1
  9. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/models.py +14 -9
  10. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/scaffold/TRAINING.md +15 -15
  11. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/render.py +11 -11
  12. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/tables.py +2 -2
  13. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/http.py +27 -77
  14. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/core/spec.py +1 -1
  15. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/costs.py +4 -0
  16. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/reconciliation.py +105 -35
  17. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/preparation.py +3 -3
  18. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/state.py +15 -1
  19. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/status.py +28 -0
  20. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/results/verified_revisions.py +66 -43
  21. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/attach.py +118 -53
  22. freesolo_flash_dev-1.2.121/flash/runner/supervise/attach_reconcile.py +82 -0
  23. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/deploy.py +67 -207
  24. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/recovery.py +4 -1
  25. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/seed_submission.py +43 -3
  26. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/transitions.py +72 -131
  27. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/schema/__init__.py +21 -33
  28. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/bootstrap.py +7 -14
  29. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/chat_stream.py +1 -1
  30. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/http.py +2 -2
  31. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/manifest.py +27 -52
  32. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/materialize.py +4 -4
  33. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/openai.py +2 -6
  34. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/contract/errors.py +0 -30
  35. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/contract/protocol.py +4 -15
  36. freesolo_flash_dev-1.2.121/flash/serve/contract/provenance.py +182 -0
  37. freesolo_flash_dev-1.2.121/flash/serve/contract/responses.py +46 -0
  38. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/__init__.py +0 -2
  39. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/_serialization.py +1 -11
  40. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/types.py +14 -55
  41. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/adapter_check.py +39 -7
  42. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/deploy.py +108 -187
  43. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/resolve.py +9 -16
  44. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/common/records.py +6 -13
  45. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/probe.py +4 -14
  46. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/openai.py +2 -3
  47. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/transport.py +20 -14
  48. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/asgi/app.py +3 -5
  49. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/billing/charges.py +8 -2
  50. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/ops/reconcile.py +9 -3
  51. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/runs.py +138 -6
  52. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/auth.py +10 -0
  53. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/internal_client.py +12 -1
  54. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/runtime.py +4 -0
  55. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/meta.py +1 -3
  56. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/runs.py +6 -1
  57. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/serving.py +54 -53
  58. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/serving_chat.py +26 -19
  59. freesolo_flash_dev-1.2.121/flash/server/routes/serving_completion.py +249 -0
  60. freesolo_flash_dev-1.2.121/flash/server/routes/serving_revisions.py +177 -0
  61. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/serving_smoke.py +19 -85
  62. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/app/README.md +8 -8
  63. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/app/modal_app.py +9 -9
  64. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/accounting/usage.py +8 -10
  65. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/accounting/usage_outbox.py +4 -11
  66. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/errors.py +0 -3
  67. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/lora_engine.py +58 -52
  68. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/lora_entries.py +9 -7
  69. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/support.py +12 -20
  70. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/adapter_routes.py +51 -37
  71. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/context.py +27 -5
  72. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/headers.py +12 -0
  73. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/inference_routes.py +14 -25
  74. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/router.py +2 -4
  75. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/routing.py +24 -29
  76. freesolo_flash_dev-1.2.121/flash/serving/src/io/provenance.py +50 -0
  77. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/responses.py +2 -2
  78. freesolo_flash_dev-1.2.121/flash/serving/src/io/schemas.py +335 -0
  79. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/streaming.py +9 -13
  80. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/access.py +10 -5
  81. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/lookup.py +15 -15
  82. freesolo_flash_dev-1.2.121/flash/serving/src/store/persisted_columns.py +9 -0
  83. freesolo_flash_dev-1.2.121/flash/serving/src/store/persistence.py +325 -0
  84. freesolo_flash_dev-1.2.121/flash/serving/src/store/registration.py +40 -0
  85. freesolo_flash_dev-1.2.121/flash/serving/src/store/registry.py +159 -0
  86. freesolo_flash_dev-1.2.121/flash/serving/src/store/undeploy.py +200 -0
  87. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/pyproject.toml +2 -2
  88. freesolo_flash_dev-1.2.121/tests/_helpers/chat_provenance.py +16 -0
  89. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/managed_chat.py +4 -5
  90. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/conftest.py +0 -1
  91. freesolo_flash_dev-1.2.121/tests/serving/checkpoint_fixtures.py +71 -0
  92. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/conftest.py +1 -1
  93. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_base_model_serving.py +41 -49
  94. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_chat_auth.py +26 -49
  95. freesolo_flash_dev-1.2.121/tests/serving/test_checkpoint_identity_repairs.py +436 -0
  96. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_checkpoint_model_validation.py +23 -15
  97. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_engine_error_status.py +3 -3
  98. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_immutable_engine.py +54 -66
  99. freesolo_flash_dev-1.2.121/tests/serving/test_immutable_revisions.py +195 -0
  100. freesolo_flash_dev-1.2.121/tests/serving/test_immutable_schemas.py +152 -0
  101. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_mirror_sampling_parity.py +13 -4
  102. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_multimodal.py +86 -123
  103. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_openai_stream_options.py +2 -2
  104. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_per_model_gpu.py +42 -31
  105. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_persistence.py +93 -86
  106. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_pre_first_disconnect.py +14 -11
  107. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_registry.py +60 -79
  108. freesolo_flash_dev-1.2.121/tests/serving/test_registry_coverage.py +27 -0
  109. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_router.py +186 -284
  110. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_router_coverage.py +23 -11
  111. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_router_edge_coverage.py +35 -90
  112. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_schemas_coverage.py +38 -72
  113. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_serve_reasoning_split.py +60 -57
  114. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_serve_structured_outputs.py +103 -40
  115. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_serve_thinking.py +9 -15
  116. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_structured_outputs.py +4 -27
  117. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_usage_outbox.py +16 -17
  118. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_usage_reporter.py +58 -55
  119. freesolo_flash_dev-1.2.121/tests/serving_conformance/test_contract.py +264 -0
  120. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_adapter_shard_completeness.py +2 -2
  121. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_agent_flash_cli_contract.py +2 -2
  122. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cancel_remote.py +290 -1003
  123. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_chat_foundations.py +47 -39
  124. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_commands.py +72 -86
  125. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_commands_coverage.py +11 -11
  126. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_estimate.py +4 -3
  127. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_render_theme.py +22 -8
  128. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_serve_deploy.py +8 -9
  129. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_client.py +135 -200
  130. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_client_server_integration.py +2 -2
  131. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_client_stream_reads.py +10 -10
  132. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_deploy_latency.py +24 -49
  133. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_evaluations.py +87 -595
  134. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_publish.py +17 -4
  135. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_params.py +14 -14
  136. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_health_liveness.py +1 -1
  137. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_jobs.py +24 -17
  138. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lora_rank_preflight.py +1 -1
  139. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_mirror_sampling_parity.py +19 -18
  140. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_resume_safety.py +3 -1
  141. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_prompt_budget.py +3 -3
  142. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_provider_routing.py +122 -5
  143. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_realized_cost.py +45 -0
  144. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_resume_on_retry.py +7 -6
  145. freesolo_flash_dev-1.2.121/tests/test_run_registry_lifecycle.py +379 -0
  146. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_runmgmt.py +497 -4
  147. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve.py +145 -263
  148. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_bootstrap_http.py +22 -25
  149. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_launch.py +1 -1
  150. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_manifest.py +6 -9
  151. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_materialize.py +3 -3
  152. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_chat_transport.py +101 -91
  153. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_control.py +17 -47
  154. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_contract_lock.py +7 -7
  155. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_provisioning_common.py +2 -14
  156. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_provisioning_modal.py +9 -16
  157. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_reasoning_content.py +7 -2
  158. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_resolve_provenance.py +9 -12
  159. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_api.py +544 -2041
  160. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_billing.py +4 -1
  161. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_envs_coverage.py +34 -338
  162. freesolo_flash_dev-1.2.121/tests/test_server_managed_chat_requests.py +91 -0
  163. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_serving_resources.py +2 -2
  164. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_standalone.py +103 -0
  165. freesolo_flash_dev-1.2.121/tests/test_serving_contract.py +388 -0
  166. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_spec_and_validation.py +40 -18
  167. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_teacher_broker.py +0 -2
  168. freesolo_flash_dev-1.2.121/tests/test_verified_revisions.py +106 -0
  169. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_wandb_naming.py +1 -1
  170. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_cross_repo.py +18 -86
  171. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/uv.lock +1 -1
  172. freesolo_flash_dev-1.2.120/docs/serving-contract.md +0 -229
  173. freesolo_flash_dev-1.2.120/flash/serve/contract/provenance.py +0 -168
  174. freesolo_flash_dev-1.2.120/flash/serve/contract/responses.py +0 -107
  175. freesolo_flash_dev-1.2.120/flash/server/routes/serving_completion.py +0 -467
  176. freesolo_flash_dev-1.2.120/flash/server/routes/serving_revisions.py +0 -350
  177. freesolo_flash_dev-1.2.120/flash/serving/src/io/provenance.py +0 -69
  178. freesolo_flash_dev-1.2.120/flash/serving/src/io/schemas.py +0 -482
  179. freesolo_flash_dev-1.2.120/flash/serving/src/store/persisted_columns.py +0 -14
  180. freesolo_flash_dev-1.2.120/flash/serving/src/store/persistence.py +0 -310
  181. freesolo_flash_dev-1.2.120/flash/serving/src/store/registration.py +0 -228
  182. freesolo_flash_dev-1.2.120/flash/serving/src/store/registry.py +0 -176
  183. freesolo_flash_dev-1.2.120/flash/serving/src/store/undeploy.py +0 -277
  184. freesolo_flash_dev-1.2.120/tests/_helpers/chat_provenance.py +0 -28
  185. freesolo_flash_dev-1.2.120/tests/serving/test_immutable_revisions.py +0 -1503
  186. freesolo_flash_dev-1.2.120/tests/serving/test_immutable_schemas.py +0 -147
  187. freesolo_flash_dev-1.2.120/tests/serving/test_registry_coverage.py +0 -65
  188. freesolo_flash_dev-1.2.120/tests/serving_conformance/test_contract.py +0 -786
  189. freesolo_flash_dev-1.2.120/tests/test_deploy_alias_move_warning.py +0 -554
  190. freesolo_flash_dev-1.2.120/tests/test_server_managed_chat_requests.py +0 -864
  191. freesolo_flash_dev-1.2.120/tests/test_server_managed_chat_revisions.py +0 -744
  192. freesolo_flash_dev-1.2.120/tests/test_serving_contract.py +0 -1017
  193. freesolo_flash_dev-1.2.120/tests/test_verified_revisions.py +0 -237
  194. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.dockerignore +0 -0
  195. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.env.example +0 -0
  196. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/CODEOWNERS +0 -0
  197. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  198. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  199. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  200. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  201. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/dependabot.yml +0 -0
  202. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/auto-rebake.yml +0 -0
  203. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/bake-kernel-cache.yml +0 -0
  204. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/ci.yml +0 -0
  205. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/deploy-modal-dev.yml +0 -0
  206. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/deploy-modal.yml +0 -0
  207. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/dev-kernel-cache.yml +0 -0
  208. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/main-source-guard.yml +0 -0
  209. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/notify-tests-repo.yml +0 -0
  210. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  211. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-dev.yml +0 -0
  212. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-image.yml +0 -0
  213. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/publish-serving-image.yml +0 -0
  214. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/publish.yml +0 -0
  215. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/version-parity.yml +0 -0
  216. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.github/workflows/worker-image.yml +0 -0
  217. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/.gitignore +0 -0
  218. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/CODE_OF_CONDUCT.md +0 -0
  219. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/CONTRIBUTING.md +0 -0
  220. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/Dockerfile +0 -0
  221. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/Dockerfile.serve +0 -0
  222. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/Dockerfile.worker +0 -0
  223. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/LICENSE +0 -0
  224. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/NOTICE +0 -0
  225. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/SECURITY.md +0 -0
  226. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/SELF_HOSTING.md +0 -0
  227. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/build/kernel_cache/.gitignore +0 -0
  228. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/build/kernel_cache/.keep +0 -0
  229. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/deploy/infisical/README.md +0 -0
  230. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/deploy/infisical/entrypoint.sh +0 -0
  231. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/Dockerfile.kernelcache +0 -0
  232. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/Dockerfile.kernelcache.relayer +0 -0
  233. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/bake_kernel_cache.py +0 -0
  234. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/bake_pod_entry.py +0 -0
  235. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/extract_cudart_fix.py +0 -0
  236. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/kernel_fingerprint.py +0 -0
  237. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/make_rp_handler.py +0 -0
  238. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/docker/patch_vllm_moe_lora.py +0 -0
  239. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/__init__.py +0 -0
  240. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/__init__.py +0 -0
  241. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/channel.py +0 -0
  242. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/diagnostics.py +0 -0
  243. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/fileio.py +0 -0
  244. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/logging.py +0 -0
  245. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/openai_sse.py +0 -0
  246. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/paths.py +0 -0
  247. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/_internal/version.py +0 -0
  248. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/adapters/__init__.py +0 -0
  249. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/adapters/artifacts.py +0 -0
  250. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/adapters/fused_experts.py +0 -0
  251. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/adapters/lora_rank.py +0 -0
  252. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/adapters/targets.py +0 -0
  253. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/__init__.py +0 -0
  254. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/__main__.py +0 -0
  255. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/__init__.py +0 -0
  256. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/__init__.py +0 -0
  257. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/__init__.py +0 -0
  258. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/imports.py +0 -0
  259. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/list.py +0 -0
  260. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/push.py +0 -0
  261. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/retained.py +0 -0
  262. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/setup.py +0 -0
  263. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  264. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/__init__.py +0 -0
  265. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/episode.py +0 -0
  266. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/eval_args.py +0 -0
  267. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/evaluations.py +0 -0
  268. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/params.py +0 -0
  269. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/test.py +0 -0
  270. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/env/testing/warnings.py +0 -0
  271. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/__init__.py +0 -0
  272. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/account.py +0 -0
  273. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/catalog.py +0 -0
  274. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/log_follow.py +0 -0
  275. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/prompt_budget.py +0 -0
  276. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/runs.py +0 -0
  277. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/traces.py +0 -0
  278. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/train.py +0 -0
  279. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/ops/worker_output.py +0 -0
  280. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/__init__.py +0 -0
  281. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/deploy.py +0 -0
  282. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/status.py +0 -0
  283. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/commands/serving/undeploy.py +0 -0
  284. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/__init__.py +0 -0
  285. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/account.py +0 -0
  286. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/errors.py +0 -0
  287. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/main.py +0 -0
  288. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/serve_parser.py +0 -0
  289. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/traces.py +0 -0
  290. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/parsing/training.py +0 -0
  291. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/scaffold/__init__.py +0 -0
  292. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/__init__.py +0 -0
  293. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/cost.py +0 -0
  294. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/env_panels.py +0 -0
  295. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/heartbeat.py +0 -0
  296. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cli/ui/tty.py +0 -0
  297. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/__init__.py +0 -0
  298. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/config.py +0 -0
  299. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/freesolo_api.py +0 -0
  300. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/runtime_secrets.py +0 -0
  301. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/shapes.py +0 -0
  302. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/specs.py +0 -0
  303. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/client/streaming.py +0 -0
  304. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/__init__.py +0 -0
  305. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/image_descriptors.py +0 -0
  306. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/multimodal.py +0 -0
  307. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/reasoning_normalization.py +0 -0
  308. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/structured_outputs.py +0 -0
  309. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/content/thinking.py +0 -0
  310. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/core/__init__.py +0 -0
  311. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/core/catalog.py +0 -0
  312. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/core/grpo.py +0 -0
  313. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/core/spec_persistence.py +0 -0
  314. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/__init__.py +0 -0
  315. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/analytical.py +0 -0
  316. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/currency.py +0 -0
  317. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/facts.py +0 -0
  318. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/spec.py +0 -0
  319. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/cost/types.py +0 -0
  320. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/__init__.py +0 -0
  321. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/__init__.py +0 -0
  322. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/kv_sizing.py +0 -0
  323. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/model_config_probe.py +0 -0
  324. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/prompt_budget.py +0 -0
  325. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/recipe.py +0 -0
  326. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/steps.py +0 -0
  327. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/plan/vram.py +0 -0
  328. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/__init__.py +0 -0
  329. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/dataset_profile.py +0 -0
  330. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/image_tokens.py +0 -0
  331. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/reasoning_render.py +0 -0
  332. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/sft_image_rows.py +0 -0
  333. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/sft_workload.py +0 -0
  334. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/tokenizer.py +0 -0
  335. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/profiling/workload_profile.py +0 -0
  336. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/result/__init__.py +0 -0
  337. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/result/accounting.py +0 -0
  338. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/result/rollout_samples.py +0 -0
  339. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/support/__init__.py +0 -0
  340. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/support/huggingface.py +0 -0
  341. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/support/verl_checkpoint.py +0 -0
  342. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/support/verl_policy.py +0 -0
  343. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/support/worker_entrypoint.py +0 -0
  344. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/__init__.py +0 -0
  345. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/__main__.py +0 -0
  346. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/__init__.py +0 -0
  347. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/opd.py +0 -0
  348. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/rl.py +0 -0
  349. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/sft.py +0 -0
  350. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/entry/worker.py +0 -0
  351. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/__init__.py +0 -0
  352. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/heartbeat.py +0 -0
  353. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/hf.py +0 -0
  354. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/prefetch.py +0 -0
  355. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/io/wandb_log.py +0 -0
  356. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/__init__.py +0 -0
  357. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/adapter.py +0 -0
  358. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/chatml_mask.py +0 -0
  359. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/decoding.py +0 -0
  360. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/lora.py +0 -0
  361. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/model/packing.py +0 -0
  362. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/__init__.py +0 -0
  363. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/diagnostics.py +0 -0
  364. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/lifecycle.py +0 -0
  365. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/liger.py +0 -0
  366. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/perf/memory.py +0 -0
  367. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/__init__.py +0 -0
  368. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  369. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/rng.py +0 -0
  370. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/runtime/state.py +0 -0
  371. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/__init__.py +0 -0
  372. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/client.py +0 -0
  373. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/encoding.py +0 -0
  374. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  375. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/__init__.py +0 -0
  376. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/__init__.py +0 -0
  377. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/__init__.py +0 -0
  378. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/glue.py +0 -0
  379. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/child/runtime.py +0 -0
  380. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  381. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  382. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  383. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  384. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/__init__.py +0 -0
  385. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/backend_common.py +0 -0
  386. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/opd_train.py +0 -0
  387. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  388. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  389. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/rl_train.py +0 -0
  390. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  391. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  392. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/sft_train.py +0 -0
  393. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  394. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/__init__.py +0 -0
  395. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  396. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  397. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  398. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  399. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  400. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  401. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  402. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  403. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/entry.py +0 -0
  404. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  405. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  406. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  407. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  408. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/child/structured.py +0 -0
  409. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  410. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  411. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  412. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  413. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  414. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  415. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  416. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  417. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  418. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  419. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  420. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  421. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  422. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/__init__.py +0 -0
  423. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  424. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/entry.py +0 -0
  425. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  426. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/patches.py +0 -0
  427. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  428. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  429. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  430. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/config.py +0 -0
  431. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  432. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  433. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  434. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  435. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  436. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  437. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  438. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  439. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/__init__.py +0 -0
  440. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/child/entry.py +0 -0
  441. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  442. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  443. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  444. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/train/sft/setup/config.py +0 -0
  445. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/__init__.py +0 -0
  446. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/capabilities.py +0 -0
  447. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/checkpoints.py +0 -0
  448. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/child_io.py +0 -0
  449. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/diagnostics.py +0 -0
  450. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/parallelism.py +0 -0
  451. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/parent_work.py +0 -0
  452. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/engine/worker/verl/process_census.py +0 -0
  453. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/__init__.py +0 -0
  454. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/__init__.py +0 -0
  455. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/adapter.py +0 -0
  456. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/base.py +0 -0
  457. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/loader.py +0 -0
  458. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/pull.py +0 -0
  459. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/loading/staged.py +0 -0
  460. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/__init__.py +0 -0
  461. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/cache_security.py +0 -0
  462. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/dataset_selection.py +0 -0
  463. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/evaluations.py +0 -0
  464. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/identity.py +0 -0
  465. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/meta/namespace_listing.py +0 -0
  466. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/package/__init__.py +0 -0
  467. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/package/direct_tokens.py +0 -0
  468. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/package/limits.py +0 -0
  469. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/envs/package/unpack.py +0 -0
  470. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/__init__.py +0 -0
  471. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/__init__.py +0 -0
  472. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  473. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  474. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  475. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  476. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  477. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/__init__.py +0 -0
  478. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  479. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/failmark.py +0 -0
  480. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  481. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/instance.py +0 -0
  483. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/poll.py +0 -0
  484. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  485. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/provider.py +0 -0
  486. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  487. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/__init__.py +0 -0
  488. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/auth.py +0 -0
  489. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/deadline.py +0 -0
  490. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/http.py +0 -0
  491. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/_lifecycle/net/worker.py +0 -0
  492. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/__init__.py +0 -0
  493. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/hf.py +0 -0
  494. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/preload_runpod.py +0 -0
  495. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/artifacts/weight_cache.py +0 -0
  496. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/__init__.py +0 -0
  497. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/allocator.py +0 -0
  498. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/base.py +0 -0
  499. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/fit_errors.py +0 -0
  500. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/preflight.py +0 -0
  501. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/realized.py +0 -0
  502. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/registry.py +0 -0
  503. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/core/sharding.py +0 -0
  504. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/__init__.py +0 -0
  505. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/__init__.py +0 -0
  506. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/api.py +0 -0
  507. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/auth.py +0 -0
  508. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/gpus.py +0 -0
  509. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/preflight.py +0 -0
  510. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/client/pricing.py +0 -0
  511. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/execution/__init__.py +0 -0
  512. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/execution/provider.py +0 -0
  513. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/__init__.py +0 -0
  514. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/builders.py +0 -0
  515. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/lambda_/jobs/reap.py +0 -0
  516. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/__init__.py +0 -0
  517. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/__init__.py +0 -0
  518. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/api.py +0 -0
  519. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/auth.py +0 -0
  520. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/cost.py +0 -0
  521. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/gpus.py +0 -0
  522. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/preflight.py +0 -0
  523. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/client/pricing.py +0 -0
  524. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/__init__.py +0 -0
  525. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/job_execution.py +0 -0
  526. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/jobs.py +0 -0
  527. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/polling.py +0 -0
  528. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/provider.py +0 -0
  529. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/execution/resources.py +0 -0
  530. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/serverless/__init__.py +0 -0
  531. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/runpod/serverless/endpoints.py +0 -0
  532. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/__init__.py +0 -0
  533. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/__init__.py +0 -0
  534. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/api.py +0 -0
  535. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/auth.py +0 -0
  536. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/preflight.py +0 -0
  537. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/client/pricing.py +0 -0
  538. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/execution/__init__.py +0 -0
  539. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/execution/provider.py +0 -0
  540. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/jobs/__init__.py +0 -0
  541. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/providers/vast/jobs/builders.py +0 -0
  542. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/py.typed +0 -0
  543. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/__init__.py +0 -0
  544. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/__init__.py +0 -0
  545. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/artifacts.py +0 -0
  546. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/accounting/weight_cache.py +0 -0
  547. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/__init__.py +0 -0
  548. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/attempts.py +0 -0
  549. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/deadlines.py +0 -0
  550. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/reporting.py +0 -0
  551. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/lifecycle/submit.py +0 -0
  552. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/results/__init__.py +0 -0
  553. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/results/checkpoints.py +0 -0
  554. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/__init__.py +0 -0
  555. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/errors.py +0 -0
  556. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/lifecycle.py +0 -0
  557. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runner/supervise/retry_decision.py +0 -0
  558. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/__init__.py +0 -0
  559. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/build.py +0 -0
  560. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/manifest.py +0 -0
  561. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/runtime_capsule/profiles.py +0 -0
  562. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/schema/fields.py +0 -0
  563. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/__init__.py +0 -0
  564. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/__init__.py +0 -0
  565. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/__main__.py +0 -0
  566. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/launch.py +0 -0
  567. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/app/progress.py +0 -0
  568. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/contract/__init__.py +0 -0
  569. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/contract/urls.py +0 -0
  570. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/_canonical.py +0 -0
  571. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/_urls.py +0 -0
  572. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/credentials.py +0 -0
  573. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/control/planning.py +0 -0
  574. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/__init__.py +0 -0
  575. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/export.py +0 -0
  576. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/preflight.py +0 -0
  577. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/profiles.py +0 -0
  578. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/deployment/readiness.py +0 -0
  579. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/__init__.py +0 -0
  580. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/common/__init__.py +0 -0
  581. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/__init__.py +0 -0
  582. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  583. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  584. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  585. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  586. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  587. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  588. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  589. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  590. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  591. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  592. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  593. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  594. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/__init__.py +0 -0
  595. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/runtime_support.py +0 -0
  596. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/streaming.py +0 -0
  597. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/thinking.py +0 -0
  598. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/request/validation.py +0 -0
  599. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/__init__.py +0 -0
  600. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/adapters.py +0 -0
  601. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/engine.py +0 -0
  602. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/errors.py +0 -0
  603. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/multimodal.py +0 -0
  604. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/prompt.py +0 -0
  605. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/sampling.py +0 -0
  606. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/structured_outputs.py +0 -0
  607. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serve/runtime/types.py +0 -0
  608. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/__init__.py +0 -0
  609. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/__main__.py +0 -0
  610. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/asgi/__init__.py +0 -0
  611. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/asgi/cli.py +0 -0
  612. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/billing/__init__.py +0 -0
  613. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/billing/retry.py +0 -0
  614. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/__init__.py +0 -0
  615. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/ops/__init__.py +0 -0
  616. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/ops/repo_cleanup.py +0 -0
  617. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/ops/serving_resources.py +0 -0
  618. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/__init__.py +0 -0
  619. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/checkpoints.py +0 -0
  620. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/environment_registry.py +0 -0
  621. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/envs.py +0 -0
  622. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/registry/projects.py +0 -0
  623. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/__init__.py +0 -0
  624. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/broker.py +0 -0
  625. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/errors.py +0 -0
  626. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/domain/teacher/requests.py +0 -0
  627. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/__init__.py +0 -0
  628. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/db.py +0 -0
  629. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/deps.py +0 -0
  630. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/platform/locks.py +0 -0
  631. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/__init__.py +0 -0
  632. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/envs.py +0 -0
  633. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/server/routes/teacher.py +0 -0
  634. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/__init__.py +0 -0
  635. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/app/__init__.py +0 -0
  636. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/__init__.py +0 -0
  637. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/accounting/__init__.py +0 -0
  638. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/accounting/usage_facts.py +0 -0
  639. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/__init__.py +0 -0
  640. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/boot.py +0 -0
  641. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/generation.py +0 -0
  642. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/model_config.py +0 -0
  643. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/engine/prequant_config.py +0 -0
  644. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/__init__.py +0 -0
  645. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/http/body_limit.py +0 -0
  646. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/__init__.py +0 -0
  647. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/multimodal.py +0 -0
  648. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/openai_request.py +0 -0
  649. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/openai_stream.py +0 -0
  650. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/requests.py +0 -0
  651. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/io/structured_outputs.py +0 -0
  652. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/__init__.py +0 -0
  653. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/settings.py +0 -0
  654. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/serving/src/store/supabase_rest.py +0 -0
  655. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/snapshot/__init__.py +0 -0
  656. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/snapshot/archive.py +0 -0
  657. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/teacher/__init__.py +0 -0
  658. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/teacher/limits.py +0 -0
  659. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/teacher/provider_status.py +0 -0
  660. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/flash/teacher/retry_contract.py +0 -0
  661. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/build_dev_dist.py +0 -0
  662. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/check_file_size.py +0 -0
  663. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/check_function_size.py +0 -0
  664. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/check_rollout_identity_actor.py +0 -0
  665. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/check_source_layout.py +0 -0
  666. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/check_verl_pin_exists.py +0 -0
  667. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/qualify_serving_profile.py +0 -0
  668. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/scripts/scrub_history.sh +0 -0
  669. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/serve_launch.py +0 -0
  670. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/__init__.py +0 -0
  671. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/__init__.py +0 -0
  672. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/chat_transport.py +0 -0
  673. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/profile.py +0 -0
  674. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/runner.py +0 -0
  675. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/server_api_plugin.py +0 -0
  676. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/source_snapshot.py +0 -0
  677. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/specs.py +0 -0
  678. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/teacher.py +0 -0
  679. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/_helpers/vast.py +0 -0
  680. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/capture_image_sft_processor_oracle.py +0 -0
  681. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/capture_qwen38_27b_metadata.py +0 -0
  682. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  683. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  684. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  685. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  686. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  687. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  688. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/__init__.py +0 -0
  689. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/conftest.py +0 -0
  690. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/test_lambda_live.py +0 -0
  691. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/test_runpod_live.py +0 -0
  692. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/test_sft_thinking_render_live.py +0 -0
  693. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/live/test_vast_live.py +0 -0
  694. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_chat_authorizer.py +0 -0
  695. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_fp8_config.py +0 -0
  696. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_modal_deploy_identity.py +0 -0
  697. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_modal_image_paths.py +0 -0
  698. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_model_config.py +0 -0
  699. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_prequant_config.py +0 -0
  700. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_request_body_limit.py +0 -0
  701. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_settings.py +0 -0
  702. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_structured_outputs_coverage.py +0 -0
  703. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving/test_supabase_rest_coverage.py +0 -0
  704. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving_conformance/__init__.py +0 -0
  705. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/serving_conformance/conftest.py +0 -0
  706. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_accounting_coverage.py +0 -0
  707. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_algorithms.py +0 -0
  708. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_allocator.py +0 -0
  709. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_backend_common.py +0 -0
  710. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_backend_jobspec_contract.py +0 -0
  711. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_bake_kernel_cache.py +0 -0
  712. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_base_model_provenance.py +0 -0
  713. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_billing_retry.py +0 -0
  714. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_build_context_contract.py +0 -0
  715. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_capture_qwen38_metadata.py +0 -0
  716. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_catalog_consistency.py +0 -0
  717. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_catalog_only_models.py +0 -0
  718. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_charge_pricing.py +0 -0
  719. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_checkpoint_lifecycle.py +0 -0
  720. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_checkpoints.py +0 -0
  721. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_credential_shadowing.py +0 -0
  722. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_errors.py +0 -0
  723. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_gpus_flag.py +0 -0
  724. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_help.py +0 -0
  725. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_main_coverage.py +0 -0
  726. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_managed.py +0 -0
  727. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_render_coverage.py +0 -0
  728. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_serve_status.py +0 -0
  729. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_serve_undeploy.py +0 -0
  730. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_traces.py +0 -0
  731. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cli_wandb_warning.py +0 -0
  732. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_client_import_purity.py +0 -0
  733. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_config_env_vars.py +0 -0
  734. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_config_overrides.py +0 -0
  735. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_console_upload.py +0 -0
  736. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_controlled_experiment_repairs.py +0 -0
  737. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_analytical.py +0 -0
  738. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_currency.py +0 -0
  739. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_equation.py +0 -0
  740. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_estimate.py +0 -0
  741. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_hardware.py +0 -0
  742. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_cost_models.py +0 -0
  743. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_dataset_profile.py +0 -0
  744. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_dev_channel.py +0 -0
  745. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_disk_gb.py +0 -0
  746. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_endpoint_name.py +0 -0
  747. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_cache_evict.py +0 -0
  748. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_delete.py +0 -0
  749. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_download.py +0 -0
  750. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_download_api.py +0 -0
  751. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_list_api.py +0 -0
  752. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_list_cli.py +0 -0
  753. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_list_hub.py +0 -0
  754. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_no_install.py +0 -0
  755. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_pull.py +0 -0
  756. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_coverage.py +0 -0
  757. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_loader_coverage.py +0 -0
  758. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_pull_managed_control_plane.py +0 -0
  759. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_push.py +0 -0
  760. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_rate_limit_resolve.py +0 -0
  761. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_ref_pinning.py +0 -0
  762. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_env_test.py +0 -0
  763. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_envs_coverage.py +0 -0
  764. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_export.py +0 -0
  765. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_flash_mvp.py +0 -0
  766. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_flash_worker.py +0 -0
  767. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_flashinfer_cache_dirs.py +0 -0
  768. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_freesolo_api_transport.py +0 -0
  769. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_fused_expert_warmstart.py +0 -0
  770. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_github_urlopen_retry.py +0 -0
  771. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_gpu_type_single_field.py +0 -0
  772. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_gpus.py +0 -0
  773. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_checkpoint_durability.py +0 -0
  774. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_process_census.py +0 -0
  775. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_resident_sizing.py +0 -0
  776. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_reward_batching.py +0 -0
  777. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_rollout_contract.py +0 -0
  778. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_grpo_rollout_identity.py +0 -0
  779. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_hf_retry.py +0 -0
  780. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_idle_endpoint_reaper.py +0 -0
  781. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_image_environment_capability.py +0 -0
  782. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_image_incremental_processor.py +0 -0
  783. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_image_sft_markers.py +0 -0
  784. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_image_sft_processor_parity.py +0 -0
  785. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_image_tokens.py +0 -0
  786. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_infisical_secrets.py +0 -0
  787. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_instance_bootstrap_coverage.py +0 -0
  788. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_internal_client.py +0 -0
  789. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_kernel_cache.py +0 -0
  790. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_kernel_fingerprint.py +0 -0
  791. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_kv_util.py +0 -0
  792. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lambda_api_coverage.py +0 -0
  793. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lambda_runner.py +0 -0
  794. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_logging.py +0 -0
  795. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_login_perms.py +0 -0
  796. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lora_rank_coverage.py +0 -0
  797. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lora_rank_nested_rung.py +0 -0
  798. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lora_targeting.py +0 -0
  799. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_lora_targeting_pinned_verl.py +0 -0
  800. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_managed_config_fields.py +0 -0
  801. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_managed_hf_repo.py +0 -0
  802. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_metrics_schema_agent_contract.py +0 -0
  803. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_mig_guard.py +0 -0
  804. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_multi_gpu_gate.py +0 -0
  805. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_multimodal_training.py +0 -0
  806. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_named_reward_metrics.py +0 -0
  807. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_oom_escalate_gpu.py +0 -0
  808. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd.py +0 -0
  809. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_limits.py +0 -0
  810. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  811. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_multiturn_failure_exit.py +0 -0
  812. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_replay_guard.py +0 -0
  813. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_opd_train.py +0 -0
  814. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_orchestrator_flash.py +0 -0
  815. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_packing.py +0 -0
  816. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_packing_coverage.py +0 -0
  817. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_parasail_teacher.py +0 -0
  818. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_persisted_spec_envelope.py +0 -0
  819. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_poll_helpers.py +0 -0
  820. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_preflight.py +0 -0
  821. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_projects.py +0 -0
  822. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_provider_preflight_coverage.py +0 -0
  823. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_provider_teardown_robustness.py +0 -0
  824. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_providers_symmetry.py +0 -0
  825. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_repo_cleanup.py +0 -0
  826. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_resolve_params_b.py +0 -0
  827. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_rl_train.py +0 -0
  828. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_rollout_samples.py +0 -0
  829. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_runpod_api_delete.py +0 -0
  830. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_runpod_key_fingerprint.py +0 -0
  831. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_runpod_key_waterfall.py +0 -0
  832. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_runtime_capsule.py +0 -0
  833. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_packaging.py +0 -0
  834. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_app_progress.py +0 -0
  835. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_docs.py +0 -0
  836. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_sdk.py +0 -0
  837. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  838. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_modal_teardown_identity.py +0 -0
  839. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_profile_qualification.py +0 -0
  840. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_profiles.py +0 -0
  841. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_adapters.py +0 -0
  842. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_engine.py +0 -0
  843. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_package.py +0 -0
  844. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serve_runtime_types.py +0 -0
  845. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_app_coverage.py +0 -0
  846. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_auth_singleflight.py +0 -0
  847. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_checkpoints_coverage.py +0 -0
  848. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_db.py +0 -0
  849. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_server_locks_coverage.py +0 -0
  850. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serving_conformance_gate.py +0 -0
  851. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serving_context_preflight.py +0 -0
  852. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_serving_schema_coverage.py +0 -0
  853. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_chunked_nll.py +0 -0
  854. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_example_selection.py +0 -0
  855. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_gc_off.py +0 -0
  856. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_max_context.py +0 -0
  857. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_step_floor.py +0 -0
  858. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_train.py +0 -0
  859. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_sft_workload.py +0 -0
  860. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_source_attestation_flow.py +0 -0
  861. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_source_layout.py +0 -0
  862. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_source_snapshot.py +0 -0
  863. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_spec_contract_bytes.py +0 -0
  864. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_staged_environment.py +0 -0
  865. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_step_floor.py +0 -0
  866. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_step_metrics.py +0 -0
  867. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_step_timing.py +0 -0
  868. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_structured_outputs.py +0 -0
  869. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_teacher_encoding_contract.py +0 -0
  870. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_terminal_artifacts.py +0 -0
  871. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_thinking_config.py +0 -0
  872. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_train_context_preflight.py +0 -0
  873. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_training_controls.py +0 -0
  874. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_type_comment_prose.py +0 -0
  875. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vast_api.py +0 -0
  876. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vast_api_coverage.py +0 -0
  877. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vast_offers.py +0 -0
  878. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vast_provider_coverage.py +0 -0
  879. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vast_runner.py +0 -0
  880. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_verifiers.py +0 -0
  881. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_verl_checkpoint_export.py +0 -0
  882. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_verl_child_plugins.py +0 -0
  883. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_verl_silence_watchdog.py +0 -0
  884. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_version.py +0 -0
  885. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  886. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vllm_moe_lora_backport.py +0 -0
  887. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_vram_architecture.py +0 -0
  888. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_wandb_link.py +0 -0
  889. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_adapter_download.py +0 -0
  890. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_error_attribution.py +0 -0
  891. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_warmstart_image_adapters.py +0 -0
  892. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_weight_cache.py +0 -0
  893. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_dryrun.py +0 -0
  894. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_hardexit.py +0 -0
  895. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_image.py +0 -0
  896. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_init_heartbeat.py +0 -0
  897. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_stack.py +0 -0
  898. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_worker_thinking.py +0 -0
  899. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_workflow_contracts.py +0 -0
  900. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_workload_profile.py +0 -0
  901. {freesolo_flash_dev-1.2.120 → freesolo_flash_dev-1.2.121}/tests/test_zero2_sharding_gate.py +0 -0
@@ -25,6 +25,11 @@ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
25
25
 
26
26
  ### Changed
27
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.
28
33
  - Active training now exposes exactly `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
29
34
  `Qwen/Qwen3.6-35B-A3B`. Hosted serving remains active for 9B and 35B-A3B; hosted Qwen3.8 27B
30
35
  remains inactive. Qwen3.8 uses the immutable BF16 revision
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.2.120
3
+ Version: 1.2.121
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI
5
5
  Project-URL: Homepage, https://github.com/freesolo-co/flash
6
6
  Project-URL: Repository, https://github.com/freesolo-co/flash
@@ -174,8 +174,8 @@ lora_rank = 32 # lora_alpha defaults to 2 x lora_rank; set it to ov
174
174
  ```bash
175
175
  flash train run.toml # submit, prints a run id
176
176
  flash runs status RUN_ID # follow it
177
- flash models deploy RUN_ID # serve the trained adapter
178
- flash models chat RUN_ID -m "hello" # talk to 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
179
  ```
180
180
 
181
181
  Run management lives under `flash runs` (`list`, `status`, `log`, `cancel`, `checkpoint`)
@@ -184,12 +184,12 @@ and serving under `flash models` (`deploy`, `chat`, `deployments`, `undeploy`, `
184
184
  lists GPU classes with estimated $/hr.
185
185
 
186
186
  Intermediate RL checkpoints are deployable: list them with `flash runs checkpoint RUN_ID`,
187
- then pass `RUN_ID/step-N` as the adapter id. To copy a finished adapter into your own
187
+ then pass `RUN_ID/step-N` as the checkpoint id. To copy a finished adapter into your own
188
188
  HuggingFace repo:
189
189
 
190
190
  ```bash
191
191
  export HF_TOKEN=hf_...
192
- flash models export --adapter-id RUN_ID --repository your-org/your-repo
192
+ flash models export --adapter-id RUN_ID/final --repository your-org/your-repo
193
193
  ```
194
194
 
195
195
  There are no built-in task environments — the environment you push defines the task.
@@ -197,7 +197,7 @@ Single-turn and bounded multi-turn environments are supported.
197
197
 
198
198
  ### Calling a deployed adapter from your own app
199
199
 
200
- Deploy once with `flash models deploy RUN_ID`, then POST chat requests with your API key:
200
+ Deploy once with `flash models deploy RUN_ID/final`, then POST chat requests with your API key:
201
201
 
202
202
  ```bash
203
203
  export RUN_ID=flash-1782194170-ce1cfcff
@@ -206,12 +206,12 @@ export FREESOLO_API_KEY=fslo_...
206
206
  curl -X POST "https://flash.freesolo.co/v1/runs/$RUN_ID/chat" \
207
207
  -H "Authorization: Bearer $FREESOLO_API_KEY" \
208
208
  -H "Content-Type: application/json" \
209
- -d '{"messages": [{"role": "user", "content": "hello"}], "max_tokens": 256}'
209
+ -d "{\"checkpoint_id\": \"$RUN_ID/final\", \"messages\": [{\"role\": \"user\", \"content\": \"hello\"}], \"max_tokens\": 256}"
210
210
  ```
211
211
 
212
212
  The response uses the OpenAI chat-completions shape; read `choices[0].message.content`. The
213
- run id is the adapter id. If the run is not deployed yet, the endpoint returns `409` with a
214
- hint to deploy first. Prefer this control-plane endpoint over calling the serving backend
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
215
  directly: it enforces run ownership and forwards per-run serving options such as
216
216
  thinking-mode parity.
217
217
 
@@ -91,8 +91,8 @@ lora_rank = 32 # lora_alpha defaults to 2 x lora_rank; set it to ov
91
91
  ```bash
92
92
  flash train run.toml # submit, prints a run id
93
93
  flash runs status RUN_ID # follow it
94
- flash models deploy RUN_ID # serve the trained adapter
95
- flash models chat RUN_ID -m "hello" # talk to it
94
+ flash models deploy RUN_ID/final # serve the final checkpoint
95
+ flash models chat RUN_ID/final -m "hello" # talk to it
96
96
  ```
97
97
 
98
98
  Run management lives under `flash runs` (`list`, `status`, `log`, `cancel`, `checkpoint`)
@@ -101,12 +101,12 @@ and serving under `flash models` (`deploy`, `chat`, `deployments`, `undeploy`, `
101
101
  lists GPU classes with estimated $/hr.
102
102
 
103
103
  Intermediate RL checkpoints are deployable: list them with `flash runs checkpoint RUN_ID`,
104
- then pass `RUN_ID/step-N` as the adapter id. To copy a finished adapter into your own
104
+ then pass `RUN_ID/step-N` as the checkpoint id. To copy a finished adapter into your own
105
105
  HuggingFace repo:
106
106
 
107
107
  ```bash
108
108
  export HF_TOKEN=hf_...
109
- flash models export --adapter-id RUN_ID --repository your-org/your-repo
109
+ flash models export --adapter-id RUN_ID/final --repository your-org/your-repo
110
110
  ```
111
111
 
112
112
  There are no built-in task environments — the environment you push defines the task.
@@ -114,7 +114,7 @@ Single-turn and bounded multi-turn environments are supported.
114
114
 
115
115
  ### Calling a deployed adapter from your own app
116
116
 
117
- Deploy once with `flash models deploy RUN_ID`, then POST chat requests with your API key:
117
+ Deploy once with `flash models deploy RUN_ID/final`, then POST chat requests with your API key:
118
118
 
119
119
  ```bash
120
120
  export RUN_ID=flash-1782194170-ce1cfcff
@@ -123,12 +123,12 @@ export FREESOLO_API_KEY=fslo_...
123
123
  curl -X POST "https://flash.freesolo.co/v1/runs/$RUN_ID/chat" \
124
124
  -H "Authorization: Bearer $FREESOLO_API_KEY" \
125
125
  -H "Content-Type: application/json" \
126
- -d '{"messages": [{"role": "user", "content": "hello"}], "max_tokens": 256}'
126
+ -d "{\"checkpoint_id\": \"$RUN_ID/final\", \"messages\": [{\"role\": \"user\", \"content\": \"hello\"}], \"max_tokens\": 256}"
127
127
  ```
128
128
 
129
129
  The response uses the OpenAI chat-completions shape; read `choices[0].message.content`. The
130
- run id is the adapter id. If the run is not deployed yet, the endpoint returns `409` with a
131
- hint to deploy first. Prefer this control-plane endpoint over calling the serving backend
130
+ checkpoint id is the permanent serving identity. If that checkpoint is not deployed yet, the
131
+ endpoint returns `409` with a hint to deploy first. Prefer this control-plane endpoint over calling the serving backend
132
132
  directly: it enforces run ownership and forwards per-run serving options such as
133
133
  thinking-mode parity.
134
134
 
@@ -0,0 +1,122 @@
1
+ # The Flash serving contract
2
+
3
+ `flash models deploy`, `chat`, `evaluate`, and `undeploy` use an HTTP serving backend and one public
4
+ identity for every run-backed adapter. `flash/serve/` owns the client, shared runtime, and
5
+ customer-owned provider deployment. Freesolo's hosted backend (`flash/serving/`) is another
6
+ implementation of this contract. A deployment serves one exact base model and its compatible LoRA
7
+ adapters. A different base model requires a separate deployment. Use
8
+ `flash serve deploy --provider modal` to provision one in your own Modal account.
9
+
10
+ Customer-owned Modal is live-qualified for `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
11
+ `Qwen/Qwen3.6-35B-A3B`. The 27B and 35B-A3B qualifications are bound to the exact certified serving
12
+ image digest; another digest remains available for offline planning but cannot allocate Modal.
13
+ Hosted Qwen3.8 27B remains inactive. Its customer-owned engine runs on `H100!` and serves the pinned
14
+ `Qwen/Qwen3.8-27B-FP8` checkpoint while preserving `Qwen/Qwen3.8-27B` as the distinct logical base
15
+ and tokenizer provenance. The 35B-A3B engine serves BF16 weights on one H200 with FP8 KV cache, a
16
+ 32K context, eight sequences, a 4096 batched-token cap, and six rank-64 LoRA slots.
17
+
18
+ Customer-owned `flash serve` is Modal-only and requires the explicit provider argument. Historical
19
+ customer-serving RunPod deployment identities are unsupported, with no migration, status, undeploy,
20
+ or teardown shim. Managed RunPod training remains supported and unchanged. Retired Qwen3.6 27B is
21
+ never translated into Qwen3.8 27B.
22
+
23
+ Run-backed adapters use only:
24
+
25
+ - `<run_id>/final`
26
+ - `<run_id>/step-N`
27
+
28
+ The grammar is exact. Bare run ids, omitted checkpoints, padded steps, whitespace, extra path segments, and old composite identities are rejected. A run id is grouping and authorization metadata only.
29
+
30
+ ## Permanent checkpoint binding
31
+
32
+ `POST /adapters` registers one exact checkpoint:
33
+
34
+ ```json
35
+ {
36
+ "adapter_id": "run-abc/step-10",
37
+ "checkpoint": "run-abc/step-10",
38
+ "run_id": "run-abc",
39
+ "checkpoint_step": 10,
40
+ "repo_id": "acme/artifacts",
41
+ "repo_type": "dataset",
42
+ "subfolder": "sft/run-abc/adapter",
43
+ "artifact_revision": "<private-40-hex-source-commit>",
44
+ "artifact_digest": "<private-64-hex-content-digest>",
45
+ "artifact_fingerprint": "<private-64-hex-binding-fingerprint>",
46
+ "base_model": "Qwen/Qwen3.5-9B",
47
+ "lora_rank": 16,
48
+ "org_id": "org-id",
49
+ "thinking": false,
50
+ "structured_outputs": null
51
+ }
52
+ ```
53
+
54
+ The registration schema is closed. Lifecycle fields are server-owned. The first registration binds the org-scoped checkpoint to its private source location, content identity, base model, LoRA shape, and serving defaults. An identical retry is idempotent. Any changed immutable fact returns `409`, and undeploy never frees the identity for reuse.
55
+
56
+ Private artifact revision, digest, repository, and subfolder exist only for deterministic retrieval and cache integrity. They are not model identities and do not appear in public chat provenance, evaluation identities, analytics, or billing payloads.
57
+
58
+ ## Authentication and health
59
+
60
+ Customer-owned deployments use `Authorization: Bearer <FLASH_SERVING_KEY>`. Freesolo-hosted serving uses `X-Freesolo-Internal-Key` for internal control operations and Freesolo API-key authorization for caller traffic. Credentials are compared without exposing them and are removed from cross-origin redirects.
61
+
62
+ `GET /healthz` does not load a model. Dynamic hosted serving advertises permanent checkpoint identity support. Customer-owned deployments receive an immutable manifest at boot and expose no dynamic registration surface.
63
+
64
+ ## Readiness and routing
65
+
66
+ Registration returns `200` or `202`. `GET /adapters/{checkpoint_id}` reports lifecycle for that exact binding. A checkpoint becomes routable only after its exact adapter load succeeds and the generation-fenced durable row is promoted to `ready`.
67
+
68
+ Routing is direct. `POST /v1/chat/completions` requires the exact checkpoint id as `model`. There is no alias lookup, activation operation, current checkpoint, implicit final, first checkpoint, or sole-checkpoint fallback. Tenant authorization is checked against the checkpoint binding's owning organization before dispatch.
69
+
70
+ The packaged, hosted, and managed OpenAI entry points retain the shared strict sampling grammar:
71
+
72
+ - `n` is an exact integer from 1 through 4, and `n > 1` requires `temperature > 0`.
73
+ - `seed` is null or a signed 64-bit integer, excluding `-1`.
74
+ - frequency and presence penalties are finite values from -2 through 2.
75
+ - `logprobs` is a strict boolean and `top_logprobs` is an integer from 0 through 20.
76
+ - thinking-enabled adapters reject logprobs.
77
+
78
+ ## Public provenance
79
+
80
+ Successful run-backed responses identify only the permanent checkpoint:
81
+
82
+ ```json
83
+ {
84
+ "freesolo": {
85
+ "checkpoint_id": "run-abc/step-10"
86
+ }
87
+ }
88
+ ```
89
+
90
+ Hosted responses also send `X-Freesolo-Checkpoint`. Customer-owned responses expose `checkpoint_id` in `flash_provenance`. Stream and buffered responses must attest to the same checkpoint. Private source commits and digests are never returned.
91
+
92
+ ## Undeploy and cleanup
93
+
94
+ `DELETE /adapters/{checkpoint_id}` disables exactly one checkpoint:
95
+
96
+ ```json
97
+ {
98
+ "ok": true,
99
+ "checkpoint_id": "run-abc/step-10",
100
+ "run_id": "run-abc",
101
+ "disabled_checkpoints": ["run-abc/step-10"]
102
+ }
103
+ ```
104
+
105
+ Sibling checkpoints remain independently ready and callable. Run-wide cleanup is a separately named internal administrative operation that first enumerates the run's exact checkpoint bindings.
106
+
107
+ ## Customer-owned deployments
108
+
109
+ Manifest schema v2 keys adapters by checkpoint id. It keeps the private source commit, exact file table, and aggregate digest for hydration and cache verification, but publishes only checkpoint identities through `/v1/models` and chat provenance. Manifest and deployment identity v1 are rejected rather than translated.
110
+
111
+ Modal deployments retain their existing provider topology, lifecycle fencing, direct authenticated HTTPS endpoint, capacity validation, and teardown behavior.
112
+
113
+ ## Cross-repository schema dependency
114
+
115
+ Flash expects the coordinated Freesolo migration to provide:
116
+
117
+ - `flash.hosted_lora_adapters` with explicit checkpoint and private binding columns;
118
+ - `public.bind_hosted_checkpoint(...)` for atomic insert-or-identical-read semantics;
119
+ - lifecycle-only mutable updates protected by immutable-field database enforcement;
120
+ - accounting RPCs accepting `checkpoint_id` and private `artifact_fingerprint` without legacy identity fields.
121
+
122
+ The old and new binaries are not compatible. Deploy them only through the documented maintenance-window cutover.
@@ -202,12 +202,7 @@ def _score_case(
202
202
  )
203
203
 
204
204
 
205
- # the server's own names for a record that is serving traffic versus one still coming up
206
- # (flash/server/routes/serving.py). a busy record's `adapter_revision` is the INCOMING revision.
207
205
  _READY_DEPLOYMENT_STATES = frozenset({"ready", "deployed"})
208
- # a busy redeploy may still serve its predecessor, which the public listing hides.
209
- # `/v1/deployments` excludes only `undeployed`/`dry_run`, so only `ready` and `busy`
210
- # may answer; other returned states fail closed (flash/cli/commands/__init__.py).
211
206
  _BUSY_DEPLOYMENT_STATES = frozenset({"queued", "smoke_testing", "reconciling"})
212
207
 
213
208
 
@@ -328,10 +323,6 @@ def _generate_concurrently(
328
323
  pending.put((index, prompt))
329
324
  outstanding = pending.qsize()
330
325
  if outstanding:
331
- # warm the step-selector capability once before workers start. only successful
332
- # `/v1/health` checks are cached, so cold workers would multiply a transient or
333
- # unsupported failure. failures propagate here; only `RUN/step-N` triggers the check.
334
- client.warm_chat_step_selector(target)
335
326
  finished: queue.SimpleQueue = queue.SimpleQueue()
336
327
  aborted = threading.Event()
337
328
  abort_lock = threading.Lock()
@@ -555,114 +546,37 @@ def _print_report(report: EvalSuiteReport) -> None:
555
546
 
556
547
 
557
548
  def _resolve_evaluation_target(
558
- args, client, parsed, parse_adapter_revision, api_error, client_error
559
- ) -> tuple[str, int | None]:
560
- """Resolve the deployed evaluation target phase."""
561
- evaluation_target = args.target
562
- if parsed is None:
563
- return evaluation_target, None
549
+ args, client, parsed, api_error, client_error
550
+ ) -> tuple[str, object, int | None]:
551
+ """require the exact requested checkpoint to have verified ready authority."""
564
552
 
565
- run_id, want_step = parsed
553
+ run_id, _ = parsed
566
554
  try:
567
- deployment = _live_deployment(client, run_id)
555
+ run = client.get_run(run_id)
568
556
  except (api_error, client_error) as exc:
569
557
  if getattr(args, "debug", False):
570
558
  raise
571
- _err(f"env eval failed: could not resolve deployed revision for {run_id}: {exc}")
572
- return evaluation_target, _err("overall: FAIL")
573
- if deployment is None:
574
- _err(f"env eval failed: run {args.target} is not deployed")
575
- return evaluation_target, _err("overall: FAIL")
576
- deployment_state = deployment.get("state")
577
- servable_states = _READY_DEPLOYMENT_STATES | _BUSY_DEPLOYMENT_STATES
578
- if want_step is not None:
579
- # pinned steps resolve through the verified ledger, not the deployment record
580
- # (`flash/server/routes/serving.py`). allow `failed`, which preserves that ledger;
581
- # revocation-failed and undeploy paths invalidate it in `flash/runner/supervise/deploy.py`.
582
- servable_states = servable_states | {"failed"}
583
- if deployment_state not in servable_states:
584
- # having a record is not having a servable one: the listing keeps terminal states like
585
- # `failed` and `revocation_failed`, and the chat route has no ready predecessor to fall
586
- # back to for them, so every case 409s. that spends a whole suite of generation failures
587
- # to learn what one target error says now. a step that genuinely is not in the ledger
588
- # still gets one 409 naming the deployed steps, not a suite of them.
589
- _err(
590
- f"env eval failed: run {args.target} deployment is {deployment_state or 'unknown'}"
591
- f"; run `{CLI_NAME} models deploy {run_id}` first"
592
- )
593
- return evaluation_target, _err("overall: FAIL")
594
- # a busy record names the rollout target, not the hidden predecessor still serving.
595
- # leave the user's target unpinned so the chat route can resolve private rollback state or
596
- # return the correct 409 when nothing serves.
597
- resolved = None
598
- if deployment_state in _READY_DEPLOYMENT_STATES:
599
- candidate = deployment.get("adapter_revision")
600
- resolved = parse_adapter_revision(candidate) if isinstance(candidate, str) else None
601
- if resolved is None or resolved[0] != run_id:
602
- _err(
603
- f"env eval failed: deployment for {run_id} has no valid immutable adapter revision"
604
- )
605
- return evaluation_target, _err("overall: FAIL")
606
- # `RUN/step-N` is not immutable: multiple revisions may share a step. pin only when the
607
- # live deployment is that step; otherwise the server-only verified ledger may still resolve
608
- # an older step, and the chat route must decide ambiguity.
609
- if resolved is not None and (want_step is None or resolved[1] == want_step):
610
- evaluation_target = candidate.strip()
611
- print(f"resolved evaluation target {args.target} to {evaluation_target}")
612
- elif args.upload and want_step is not None:
613
- # uploaded reports must name immutable weights. the CLI cannot resolve an ambiguous
614
- # `RUN/step-N`: the verified ledger is server-only and chat does not echo the revision.
615
- # refuse before generation; bare aliases remain valid because they mean the currently
616
- # serving revision, including a busy predecessor.
617
- _err(
618
- f"env eval failed: cannot upload results for {args.target}: the immutable "
619
- "revision that will answer it is not knowable here. re-run with the full "
620
- f"revision from `{CLI_NAME} models deployments`, or pass --no-upload"
621
- )
622
- return evaluation_target, _err("overall: FAIL")
623
- return evaluation_target, None
624
-
625
-
626
- def _load_evaluation_run_spec(
627
- args, client, revision, parsed, api_error, client_error
628
- ) -> tuple[object, int | None]:
629
- """Load the target run specification phase."""
630
- # one run lookup supplies its training environment, reasoning mode, and owning project.
631
- # these are target-run properties, not fallbacks, and reading once avoids one lookup per case.
632
- spec = None
633
- target_run_id = (revision or parsed or (None,))[0]
634
- if not target_run_id:
635
- return spec, None
636
- try:
637
- spec = client.get_run(target_run_id).get("spec")
638
- except client_error as exc:
639
- # `ApiError` subclasses `ClientError`, so one handler must preserve retryable 5xx/429.
640
- # both arms abort because the run's environment is required; they differ only in
641
- # whether retrying can help.
642
- if getattr(args, "debug", False):
643
- raise
644
- answered_definitively = (
645
- isinstance(exc, api_error) and exc.status < 500 and exc.status != 429
646
- )
647
- if answered_definitively:
648
- _err(
649
- f"env eval failed: could not read the target run {target_run_id}: {exc}. "
650
- "its published environment is what supplies the suites to score."
651
- )
652
- else:
653
- _err(
654
- f"env eval failed: could not reach the control plane for {target_run_id}: "
655
- f"{exc}. retry once it is reachable."
656
- )
657
- return spec, _err("overall: FAIL")
559
+ _err(f"env eval failed: could not resolve verified checkpoints for {run_id}: {exc}")
560
+ return args.target, None, _err("overall: FAIL")
658
561
  except Exception as exc:
659
- # anything else is not a transport fault, so it is not retryable either. broad, so an
660
- # unexpected client shape cannot crash a command the user asked for.
661
562
  if getattr(args, "debug", False):
662
563
  raise
663
- _err(f"env eval failed: could not read the target run {target_run_id}: {exc}")
664
- return spec, _err("overall: FAIL")
665
- return spec, None
564
+ _err(f"env eval failed: could not resolve verified checkpoints for {run_id}: {exc}")
565
+ return args.target, None, _err("overall: FAIL")
566
+ verified = run.get("verified_checkpoints") if isinstance(run, dict) else None
567
+ if not isinstance(verified, list) or any(not isinstance(item, str) for item in verified):
568
+ _err(f"env eval failed: control plane returned invalid checkpoint authority for {run_id}")
569
+ return args.target, None, _err("overall: FAIL")
570
+ if args.target not in verified:
571
+ _err(f"env eval failed: checkpoint {args.target} has not passed deployment verification")
572
+ return args.target, None, _err("overall: FAIL")
573
+ return args.target, run, None
574
+
575
+
576
+ def _load_evaluation_run_spec(run: object) -> object:
577
+ """load the target run specification from the verified authority record."""
578
+
579
+ return run.get("spec") if isinstance(run, dict) else None
666
580
 
667
581
 
668
582
  def _resolve_evaluation_project(args, project_id, spec, client_error) -> tuple[str, int | None]:
@@ -892,17 +806,16 @@ def cmd_env_eval(args) -> int:
892
806
  load_freesolo_environment,
893
807
  )
894
808
  from flash.envs.loading.pull import pull_environment_package_from_archive
895
- from flash.schema import parse_adapter_revision, parse_checkpoint_ref
809
+ from flash.schema import parse_checkpoint_ref
896
810
 
897
811
  if args.project and not args.upload:
898
812
  return _err("--project cannot be combined with --no-upload")
899
813
 
900
- revision = parse_adapter_revision(args.target)
901
- parsed = parse_checkpoint_ref(args.target) if revision is None else None
902
- if revision is None and parsed is None:
814
+ parsed = parse_checkpoint_ref(args.target)
815
+ if parsed is None:
903
816
  return _err(
904
817
  f"invalid evaluation target {args.target!r} "
905
- "(expected a bare <run_id>, <run_id>/step-N, or full immutable adapter revision)"
818
+ "(expected <run_id>/final or <run_id>/step-N)"
906
819
  )
907
820
 
908
821
  # an explicitly named project is fully settled before anything else happens, including before a
@@ -925,17 +838,13 @@ def cmd_env_eval(args) -> int:
925
838
  return _err("overall: FAIL")
926
839
 
927
840
  client = client_from_config()
928
- evaluation_target, exit_code = _resolve_evaluation_target(
929
- args, client, parsed, parse_adapter_revision, ApiError, ClientError
841
+ evaluation_target, run, exit_code = _resolve_evaluation_target(
842
+ args, client, parsed, ApiError, ClientError
930
843
  )
931
844
  if exit_code is not None:
932
845
  return exit_code
933
846
 
934
- spec, exit_code = _load_evaluation_run_spec(
935
- args, client, revision, parsed, ApiError, ClientError
936
- )
937
- if exit_code is not None:
938
- return exit_code
847
+ spec = _load_evaluation_run_spec(run)
939
848
 
940
849
  # graders must see what training graded, so the run's own `thinking` decides whether the
941
850
  # reasoning is stripped first (see `_scored_response`).