freesolo-flash-dev 1.2.118__tar.gz → 1.2.120__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 (891) hide show
  1. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/deploy-modal-dev.yml +2 -1
  2. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/deploy-modal.yml +3 -2
  3. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/publish-serving-image.yml +3 -2
  4. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/CHANGELOG.md +16 -4
  5. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/Dockerfile.serve +5 -1
  6. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/PKG-INFO +16 -10
  7. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/README.md +15 -9
  8. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/SELF_HOSTING.md +25 -32
  9. freesolo_flash_dev-1.2.120/docker/patch_vllm_moe_lora.py +682 -0
  10. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docs/serving-contract.md +17 -4
  11. freesolo_flash_dev-1.2.120/flash/cli/commands/serving/deploy.py +284 -0
  12. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/serving/identity.py +28 -57
  13. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/serving/status.py +16 -29
  14. freesolo_flash_dev-1.2.120/flash/cli/commands/serving/undeploy.py +103 -0
  15. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/serve_parser.py +10 -27
  16. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/core/catalog.py +24 -2
  17. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/__main__.py +3 -3
  18. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/bootstrap.py +4 -3
  19. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/launch.py +2 -2
  20. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/materialize.py +3 -3
  21. freesolo_flash_dev-1.2.120/flash/serve/app/progress.py +113 -0
  22. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/__init__.py +1 -6
  23. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/_serialization.py +10 -20
  24. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/_urls.py +0 -26
  25. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/credentials.py +1 -25
  26. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/planning.py +1 -1
  27. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/types.py +18 -147
  28. {freesolo_flash_dev-1.2.118/flash/serve/contract → freesolo_flash_dev-1.2.120/flash/serve/deployment}/profiles.py +217 -139
  29. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/resolve.py +1 -1
  30. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/common/records.py +7 -16
  31. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/execution/lifecycle.py +2 -3
  32. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/execution/operations.py +2 -2
  33. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/planning/plan.py +1 -1
  34. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/readiness_checks/readiness.py +3 -3
  35. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/ops/serving_resources.py +20 -3
  36. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/app/modal_app.py +19 -8
  37. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/pyproject.toml +2 -2
  38. freesolo_flash_dev-1.2.120/scripts/qualify_serving_profile.py +57 -0
  39. freesolo_flash_dev-1.2.120/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  40. freesolo_flash_dev-1.2.120/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  41. freesolo_flash_dev-1.2.120/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  42. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_modal_image_paths.py +37 -0
  43. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_catalog_consistency.py +27 -3
  44. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_serve_deploy.py +278 -422
  45. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_serve_status.py +39 -89
  46. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_serve_undeploy.py +64 -152
  47. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_client_import_purity.py +35 -0
  48. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lora_rank_preflight.py +24 -12
  49. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_app_bootstrap_http.py +86 -1
  50. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_app_launch.py +17 -1
  51. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_app_manifest.py +52 -1
  52. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_app_packaging.py +7 -1
  53. freesolo_flash_dev-1.2.120/tests/test_serve_app_progress.py +187 -0
  54. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_control.py +196 -327
  55. freesolo_flash_dev-1.2.120/tests/test_serve_docs.py +69 -0
  56. freesolo_flash_dev-1.2.120/tests/test_serve_modal_contract_lock.py +167 -0
  57. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_modal_sdk.py +49 -0
  58. freesolo_flash_dev-1.2.120/tests/test_serve_profile_qualification.py +77 -0
  59. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_profiles.py +150 -106
  60. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_provisioning_common.py +2 -2
  61. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_provisioning_modal.py +43 -1
  62. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_runtime_package.py +30 -1
  63. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_serving_resources.py +48 -40
  64. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serving_context_preflight.py +13 -3
  65. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_spec_and_validation.py +19 -4
  66. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_train_context_preflight.py +23 -6
  67. freesolo_flash_dev-1.2.120/tests/test_vllm_moe_lora_backport.py +348 -0
  68. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/uv.lock +1 -1
  69. freesolo_flash_dev-1.2.118/flash/cli/commands/serving/deploy.py +0 -332
  70. freesolo_flash_dev-1.2.118/flash/cli/commands/serving/undeploy.py +0 -177
  71. freesolo_flash_dev-1.2.118/flash/serve/app/progress.py +0 -18
  72. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/lifecycle.py +0 -83
  73. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/mutations.py +0 -46
  74. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/operations.py +0 -992
  75. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/plan.py +0 -221
  76. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/probe.py +0 -74
  77. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/protocol.py +0 -451
  78. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/readiness.py +0 -683
  79. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/resources.py +0 -316
  80. freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod/transport.py +0 -295
  81. freesolo_flash_dev-1.2.118/tests/serving_conformance/__init__.py +0 -0
  82. freesolo_flash_dev-1.2.118/tests/test_serve_provisioning_runpod.py +0 -4630
  83. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.dockerignore +0 -0
  84. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.env.example +0 -0
  85. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/CODEOWNERS +0 -0
  86. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  87. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  88. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  89. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  90. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/dependabot.yml +0 -0
  91. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/auto-rebake.yml +0 -0
  92. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/bake-kernel-cache.yml +0 -0
  93. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/ci.yml +0 -0
  94. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/dev-kernel-cache.yml +0 -0
  95. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/main-source-guard.yml +0 -0
  96. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/notify-tests-repo.yml +0 -0
  97. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  98. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/publish-dev.yml +0 -0
  99. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/publish-image.yml +0 -0
  100. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/publish.yml +0 -0
  101. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/version-parity.yml +0 -0
  102. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.github/workflows/worker-image.yml +0 -0
  103. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/.gitignore +0 -0
  104. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/CODE_OF_CONDUCT.md +0 -0
  105. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/CONTRIBUTING.md +0 -0
  106. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/Dockerfile +0 -0
  107. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/Dockerfile.worker +0 -0
  108. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/LICENSE +0 -0
  109. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/NOTICE +0 -0
  110. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/SECURITY.md +0 -0
  111. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/build/kernel_cache/.gitignore +0 -0
  112. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/build/kernel_cache/.keep +0 -0
  113. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/deploy/infisical/README.md +0 -0
  114. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/deploy/infisical/entrypoint.sh +0 -0
  115. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/Dockerfile.kernelcache +0 -0
  116. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/Dockerfile.kernelcache.relayer +0 -0
  117. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/bake_kernel_cache.py +0 -0
  118. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/bake_pod_entry.py +0 -0
  119. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/extract_cudart_fix.py +0 -0
  120. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/kernel_fingerprint.py +0 -0
  121. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/docker/make_rp_handler.py +0 -0
  122. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/__init__.py +0 -0
  123. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/__init__.py +0 -0
  124. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/channel.py +0 -0
  125. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/diagnostics.py +0 -0
  126. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/fileio.py +0 -0
  127. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/logging.py +0 -0
  128. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/openai_sse.py +0 -0
  129. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/paths.py +0 -0
  130. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/_internal/version.py +0 -0
  131. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/adapters/__init__.py +0 -0
  132. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/adapters/artifacts.py +0 -0
  133. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/adapters/fused_experts.py +0 -0
  134. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/adapters/lora_rank.py +0 -0
  135. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/adapters/targets.py +0 -0
  136. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/__init__.py +0 -0
  137. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/__main__.py +0 -0
  138. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/__init__.py +0 -0
  139. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/__init__.py +0 -0
  140. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/__init__.py +0 -0
  141. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/imports.py +0 -0
  142. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/list.py +0 -0
  143. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/push.py +0 -0
  144. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/retained.py +0 -0
  145. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/setup.py +0 -0
  146. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  147. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/__init__.py +0 -0
  148. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/episode.py +0 -0
  149. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/eval.py +0 -0
  150. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/eval_args.py +0 -0
  151. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/evaluations.py +0 -0
  152. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/params.py +0 -0
  153. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/test.py +0 -0
  154. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/env/testing/warnings.py +0 -0
  155. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/__init__.py +0 -0
  156. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/account.py +0 -0
  157. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/catalog.py +0 -0
  158. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/deploy.py +0 -0
  159. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/log_follow.py +0 -0
  160. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/prompt_budget.py +0 -0
  161. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/runs.py +0 -0
  162. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/traces.py +0 -0
  163. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/train.py +0 -0
  164. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/ops/worker_output.py +0 -0
  165. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/commands/serving/__init__.py +0 -0
  166. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/__init__.py +0 -0
  167. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/account.py +0 -0
  168. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/env.py +0 -0
  169. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/errors.py +0 -0
  170. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/main.py +0 -0
  171. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/models.py +0 -0
  172. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/traces.py +0 -0
  173. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/parsing/training.py +0 -0
  174. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/scaffold/TRAINING.md +0 -0
  175. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/scaffold/__init__.py +0 -0
  176. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/__init__.py +0 -0
  177. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/cost.py +0 -0
  178. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/env_panels.py +0 -0
  179. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/heartbeat.py +0 -0
  180. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/render.py +0 -0
  181. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/tables.py +0 -0
  182. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cli/ui/tty.py +0 -0
  183. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/__init__.py +0 -0
  184. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/config.py +0 -0
  185. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/freesolo_api.py +0 -0
  186. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/http.py +0 -0
  187. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/runtime_secrets.py +0 -0
  188. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/shapes.py +0 -0
  189. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/specs.py +0 -0
  190. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/client/streaming.py +0 -0
  191. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/__init__.py +0 -0
  192. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/image_descriptors.py +0 -0
  193. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/multimodal.py +0 -0
  194. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/reasoning_normalization.py +0 -0
  195. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/structured_outputs.py +0 -0
  196. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/content/thinking.py +0 -0
  197. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/core/__init__.py +0 -0
  198. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/core/grpo.py +0 -0
  199. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/core/spec.py +0 -0
  200. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/core/spec_persistence.py +0 -0
  201. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/__init__.py +0 -0
  202. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/analytical.py +0 -0
  203. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/currency.py +0 -0
  204. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/facts.py +0 -0
  205. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/spec.py +0 -0
  206. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/cost/types.py +0 -0
  207. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/__init__.py +0 -0
  208. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/__init__.py +0 -0
  209. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/kv_sizing.py +0 -0
  210. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/model_config_probe.py +0 -0
  211. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/prompt_budget.py +0 -0
  212. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/recipe.py +0 -0
  213. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/steps.py +0 -0
  214. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/plan/vram.py +0 -0
  215. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/__init__.py +0 -0
  216. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/dataset_profile.py +0 -0
  217. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/image_tokens.py +0 -0
  218. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/reasoning_render.py +0 -0
  219. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/sft_image_rows.py +0 -0
  220. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/sft_workload.py +0 -0
  221. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/tokenizer.py +0 -0
  222. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/profiling/workload_profile.py +0 -0
  223. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/result/__init__.py +0 -0
  224. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/result/accounting.py +0 -0
  225. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/result/rollout_samples.py +0 -0
  226. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/support/__init__.py +0 -0
  227. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/support/huggingface.py +0 -0
  228. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/support/verl_checkpoint.py +0 -0
  229. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/support/verl_policy.py +0 -0
  230. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/support/worker_entrypoint.py +0 -0
  231. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/__init__.py +0 -0
  232. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/__main__.py +0 -0
  233. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/entry/__init__.py +0 -0
  234. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/entry/opd.py +0 -0
  235. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/entry/rl.py +0 -0
  236. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/entry/sft.py +0 -0
  237. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/entry/worker.py +0 -0
  238. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/io/__init__.py +0 -0
  239. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/io/heartbeat.py +0 -0
  240. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/io/hf.py +0 -0
  241. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/io/prefetch.py +0 -0
  242. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/io/wandb_log.py +0 -0
  243. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/__init__.py +0 -0
  244. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/adapter.py +0 -0
  245. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/chatml_mask.py +0 -0
  246. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/decoding.py +0 -0
  247. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/lora.py +0 -0
  248. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/model/packing.py +0 -0
  249. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/perf/__init__.py +0 -0
  250. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/perf/diagnostics.py +0 -0
  251. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/perf/lifecycle.py +0 -0
  252. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/perf/liger.py +0 -0
  253. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/perf/memory.py +0 -0
  254. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/runtime/__init__.py +0 -0
  255. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  256. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/runtime/rng.py +0 -0
  257. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/runtime/state.py +0 -0
  258. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/teacher/__init__.py +0 -0
  259. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/teacher/client.py +0 -0
  260. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/teacher/encoding.py +0 -0
  261. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  262. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/__init__.py +0 -0
  263. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/__init__.py +0 -0
  264. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/child/__init__.py +0 -0
  265. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/child/glue.py +0 -0
  266. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/child/runtime.py +0 -0
  267. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  268. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  269. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  270. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  271. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/__init__.py +0 -0
  272. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/backend_common.py +0 -0
  273. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/opd_train.py +0 -0
  274. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  275. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  276. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/rl_train.py +0 -0
  277. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  278. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  279. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/sft_train.py +0 -0
  280. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  281. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/__init__.py +0 -0
  282. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  283. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  284. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  285. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  286. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  287. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  288. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  289. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  290. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/entry.py +0 -0
  291. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  292. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  293. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  294. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  295. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/child/structured.py +0 -0
  296. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  297. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  298. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  299. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  300. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  301. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  302. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  303. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  304. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  305. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  306. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  307. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  308. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  309. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/__init__.py +0 -0
  310. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  311. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/child/entry.py +0 -0
  312. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  313. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/child/patches.py +0 -0
  314. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  315. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  316. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  317. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/launch/config.py +0 -0
  318. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  319. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  320. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  321. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  322. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  323. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  324. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  325. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  326. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/__init__.py +0 -0
  327. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/child/entry.py +0 -0
  328. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  329. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  330. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  331. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/train/sft/setup/config.py +0 -0
  332. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/__init__.py +0 -0
  333. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/capabilities.py +0 -0
  334. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/checkpoints.py +0 -0
  335. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/child_io.py +0 -0
  336. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/diagnostics.py +0 -0
  337. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/parallelism.py +0 -0
  338. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/parent_work.py +0 -0
  339. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/engine/worker/verl/process_census.py +0 -0
  340. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/__init__.py +0 -0
  341. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/__init__.py +0 -0
  342. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/adapter.py +0 -0
  343. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/base.py +0 -0
  344. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/loader.py +0 -0
  345. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/pull.py +0 -0
  346. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/loading/staged.py +0 -0
  347. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/__init__.py +0 -0
  348. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/cache_security.py +0 -0
  349. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/dataset_selection.py +0 -0
  350. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/evaluations.py +0 -0
  351. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/identity.py +0 -0
  352. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/meta/namespace_listing.py +0 -0
  353. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/package/__init__.py +0 -0
  354. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/package/direct_tokens.py +0 -0
  355. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/package/limits.py +0 -0
  356. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/envs/package/unpack.py +0 -0
  357. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/__init__.py +0 -0
  358. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/__init__.py +0 -0
  359. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  360. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  361. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  362. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  363. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  364. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/host/__init__.py +0 -0
  365. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  366. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/host/failmark.py +0 -0
  367. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  368. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  369. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/instance.py +0 -0
  370. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/poll.py +0 -0
  371. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  372. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/provider.py +0 -0
  373. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  374. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/net/__init__.py +0 -0
  375. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/net/auth.py +0 -0
  376. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/net/deadline.py +0 -0
  377. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/net/http.py +0 -0
  378. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/_lifecycle/net/worker.py +0 -0
  379. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/artifacts/__init__.py +0 -0
  380. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/artifacts/hf.py +0 -0
  381. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/artifacts/preload_runpod.py +0 -0
  382. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/artifacts/weight_cache.py +0 -0
  383. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/__init__.py +0 -0
  384. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/allocator.py +0 -0
  385. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/base.py +0 -0
  386. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/fit_errors.py +0 -0
  387. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/preflight.py +0 -0
  388. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/realized.py +0 -0
  389. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/registry.py +0 -0
  390. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/core/sharding.py +0 -0
  391. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/__init__.py +0 -0
  392. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/__init__.py +0 -0
  393. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/api.py +0 -0
  394. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/auth.py +0 -0
  395. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/gpus.py +0 -0
  396. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/preflight.py +0 -0
  397. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/client/pricing.py +0 -0
  398. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/execution/__init__.py +0 -0
  399. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/execution/provider.py +0 -0
  400. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/jobs/__init__.py +0 -0
  401. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/jobs/builders.py +0 -0
  402. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/lambda_/jobs/reap.py +0 -0
  403. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/__init__.py +0 -0
  404. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/__init__.py +0 -0
  405. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/api.py +0 -0
  406. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/auth.py +0 -0
  407. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/cost.py +0 -0
  408. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/gpus.py +0 -0
  409. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/preflight.py +0 -0
  410. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/client/pricing.py +0 -0
  411. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/__init__.py +0 -0
  412. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/job_execution.py +0 -0
  413. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/jobs.py +0 -0
  414. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/polling.py +0 -0
  415. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/provider.py +0 -0
  416. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/execution/resources.py +0 -0
  417. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/serverless/__init__.py +0 -0
  418. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/runpod/serverless/endpoints.py +0 -0
  419. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/__init__.py +0 -0
  420. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/client/__init__.py +0 -0
  421. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/client/api.py +0 -0
  422. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/client/auth.py +0 -0
  423. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/client/preflight.py +0 -0
  424. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/client/pricing.py +0 -0
  425. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/execution/__init__.py +0 -0
  426. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/execution/provider.py +0 -0
  427. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/jobs/__init__.py +0 -0
  428. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/providers/vast/jobs/builders.py +0 -0
  429. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/py.typed +0 -0
  430. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/__init__.py +0 -0
  431. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/accounting/__init__.py +0 -0
  432. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/accounting/artifacts.py +0 -0
  433. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/accounting/costs.py +0 -0
  434. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/accounting/reconciliation.py +0 -0
  435. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/accounting/weight_cache.py +0 -0
  436. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/__init__.py +0 -0
  437. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/attempts.py +0 -0
  438. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/deadlines.py +0 -0
  439. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/preparation.py +0 -0
  440. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/reporting.py +0 -0
  441. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/state.py +0 -0
  442. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/status.py +0 -0
  443. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/lifecycle/submit.py +0 -0
  444. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/results/__init__.py +0 -0
  445. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/results/checkpoints.py +0 -0
  446. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/results/verified_revisions.py +0 -0
  447. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/__init__.py +0 -0
  448. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/attach.py +0 -0
  449. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/deploy.py +0 -0
  450. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/errors.py +0 -0
  451. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/lifecycle.py +0 -0
  452. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/recovery.py +0 -0
  453. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/retry_decision.py +0 -0
  454. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/seed_submission.py +0 -0
  455. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runner/supervise/transitions.py +0 -0
  456. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runtime_capsule/__init__.py +0 -0
  457. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runtime_capsule/build.py +0 -0
  458. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runtime_capsule/manifest.py +0 -0
  459. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/runtime_capsule/profiles.py +0 -0
  460. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/schema/__init__.py +0 -0
  461. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/schema/fields.py +0 -0
  462. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/__init__.py +0 -0
  463. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/__init__.py +0 -0
  464. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/chat_stream.py +0 -0
  465. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/http.py +0 -0
  466. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/manifest.py +0 -0
  467. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/app/openai.py +0 -0
  468. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/__init__.py +0 -0
  469. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/errors.py +0 -0
  470. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/protocol.py +0 -0
  471. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/provenance.py +0 -0
  472. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/responses.py +0 -0
  473. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/contract/urls.py +0 -0
  474. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/control/_canonical.py +0 -0
  475. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/__init__.py +0 -0
  476. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/adapter_check.py +0 -0
  477. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/deploy.py +0 -0
  478. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/export.py +0 -0
  479. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/preflight.py +0 -0
  480. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/deployment/readiness.py +0 -0
  481. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/common/__init__.py +0 -0
  483. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/__init__.py +0 -0
  484. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  485. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  486. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  487. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  488. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  489. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  490. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  491. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  492. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  493. {freesolo_flash_dev-1.2.118/flash/serve/provisioning/runpod → freesolo_flash_dev-1.2.120/flash/serve/request}/__init__.py +0 -0
  494. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/openai.py +0 -0
  495. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/runtime_support.py +0 -0
  496. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/streaming.py +0 -0
  497. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/thinking.py +0 -0
  498. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/transport.py +0 -0
  499. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/request/validation.py +0 -0
  500. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/__init__.py +0 -0
  501. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/adapters.py +0 -0
  502. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/engine.py +0 -0
  503. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/errors.py +0 -0
  504. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/multimodal.py +0 -0
  505. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/prompt.py +0 -0
  506. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/sampling.py +0 -0
  507. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/structured_outputs.py +0 -0
  508. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serve/runtime/types.py +0 -0
  509. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/__init__.py +0 -0
  510. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/__main__.py +0 -0
  511. {freesolo_flash_dev-1.2.118/flash/serve/request → freesolo_flash_dev-1.2.120/flash/server/asgi}/__init__.py +0 -0
  512. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/asgi/app.py +0 -0
  513. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/asgi/cli.py +0 -0
  514. {freesolo_flash_dev-1.2.118/flash/server/asgi → freesolo_flash_dev-1.2.120/flash/server/billing}/__init__.py +0 -0
  515. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/billing/charges.py +0 -0
  516. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/billing/retry.py +0 -0
  517. {freesolo_flash_dev-1.2.118/flash/server/billing → freesolo_flash_dev-1.2.120/flash/server/domain}/__init__.py +0 -0
  518. {freesolo_flash_dev-1.2.118/flash/server/domain → freesolo_flash_dev-1.2.120/flash/server/domain/ops}/__init__.py +0 -0
  519. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/ops/reconcile.py +0 -0
  520. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/ops/repo_cleanup.py +0 -0
  521. {freesolo_flash_dev-1.2.118/flash/server/domain/ops → freesolo_flash_dev-1.2.120/flash/server/domain/registry}/__init__.py +0 -0
  522. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/registry/checkpoints.py +0 -0
  523. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/registry/environment_registry.py +0 -0
  524. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/registry/envs.py +0 -0
  525. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/registry/projects.py +0 -0
  526. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/registry/runs.py +0 -0
  527. {freesolo_flash_dev-1.2.118/flash/server/domain/registry → freesolo_flash_dev-1.2.120/flash/server/domain/teacher}/__init__.py +0 -0
  528. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/teacher/broker.py +0 -0
  529. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/teacher/errors.py +0 -0
  530. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/domain/teacher/requests.py +0 -0
  531. {freesolo_flash_dev-1.2.118/flash/server/domain/teacher → freesolo_flash_dev-1.2.120/flash/server/platform}/__init__.py +0 -0
  532. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/auth.py +0 -0
  533. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/db.py +0 -0
  534. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/deps.py +0 -0
  535. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/internal_client.py +0 -0
  536. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/locks.py +0 -0
  537. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/platform/runtime.py +0 -0
  538. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/__init__.py +0 -0
  539. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/envs.py +0 -0
  540. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/meta.py +0 -0
  541. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/runs.py +0 -0
  542. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/serving.py +0 -0
  543. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/serving_chat.py +0 -0
  544. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/serving_completion.py +0 -0
  545. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/serving_revisions.py +0 -0
  546. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/serving_smoke.py +0 -0
  547. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/server/routes/teacher.py +0 -0
  548. {freesolo_flash_dev-1.2.118/flash/server/platform → freesolo_flash_dev-1.2.120/flash/serving}/__init__.py +0 -0
  549. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/app/README.md +0 -0
  550. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/app/__init__.py +0 -0
  551. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/__init__.py +0 -0
  552. {freesolo_flash_dev-1.2.118/flash/serving → freesolo_flash_dev-1.2.120/flash/serving/src/accounting}/__init__.py +0 -0
  553. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/accounting/usage.py +0 -0
  554. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/accounting/usage_facts.py +0 -0
  555. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/accounting/usage_outbox.py +0 -0
  556. {freesolo_flash_dev-1.2.118/flash/serving/src/accounting → freesolo_flash_dev-1.2.120/flash/serving/src/engine}/__init__.py +0 -0
  557. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/boot.py +0 -0
  558. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/errors.py +0 -0
  559. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/generation.py +0 -0
  560. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/lora_engine.py +0 -0
  561. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/lora_entries.py +0 -0
  562. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/model_config.py +0 -0
  563. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/prequant_config.py +0 -0
  564. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/engine/support.py +0 -0
  565. {freesolo_flash_dev-1.2.118/flash/serving/src/engine → freesolo_flash_dev-1.2.120/flash/serving/src/http}/__init__.py +0 -0
  566. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/adapter_routes.py +0 -0
  567. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/body_limit.py +0 -0
  568. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/context.py +0 -0
  569. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/headers.py +0 -0
  570. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/inference_routes.py +0 -0
  571. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/router.py +0 -0
  572. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/http/routing.py +0 -0
  573. {freesolo_flash_dev-1.2.118/flash/serving/src/http → freesolo_flash_dev-1.2.120/flash/serving/src/io}/__init__.py +0 -0
  574. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/multimodal.py +0 -0
  575. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/openai_request.py +0 -0
  576. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/openai_stream.py +0 -0
  577. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/provenance.py +0 -0
  578. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/requests.py +0 -0
  579. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/responses.py +0 -0
  580. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/schemas.py +0 -0
  581. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/streaming.py +0 -0
  582. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/io/structured_outputs.py +0 -0
  583. {freesolo_flash_dev-1.2.118/flash/serving/src/io → freesolo_flash_dev-1.2.120/flash/serving/src/store}/__init__.py +0 -0
  584. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/access.py +0 -0
  585. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/lookup.py +0 -0
  586. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/persisted_columns.py +0 -0
  587. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/persistence.py +0 -0
  588. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/registration.py +0 -0
  589. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/registry.py +0 -0
  590. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/settings.py +0 -0
  591. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/supabase_rest.py +0 -0
  592. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/serving/src/store/undeploy.py +0 -0
  593. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/snapshot/__init__.py +0 -0
  594. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/snapshot/archive.py +0 -0
  595. {freesolo_flash_dev-1.2.118/flash/serving/src/store → freesolo_flash_dev-1.2.120/flash/teacher}/__init__.py +0 -0
  596. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/teacher/limits.py +0 -0
  597. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/teacher/provider_status.py +0 -0
  598. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/flash/teacher/retry_contract.py +0 -0
  599. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/build_dev_dist.py +0 -0
  600. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/check_file_size.py +0 -0
  601. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/check_function_size.py +0 -0
  602. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/check_rollout_identity_actor.py +0 -0
  603. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/check_source_layout.py +0 -0
  604. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/check_verl_pin_exists.py +0 -0
  605. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/scripts/scrub_history.sh +0 -0
  606. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/serve_launch.py +0 -0
  607. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/__init__.py +0 -0
  608. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/__init__.py +0 -0
  609. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/chat_provenance.py +0 -0
  610. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/chat_transport.py +0 -0
  611. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/managed_chat.py +0 -0
  612. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/profile.py +0 -0
  613. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/runner.py +0 -0
  614. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/server_api_plugin.py +0 -0
  615. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/source_snapshot.py +0 -0
  616. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/specs.py +0 -0
  617. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/teacher.py +0 -0
  618. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/_helpers/vast.py +0 -0
  619. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/capture_image_sft_processor_oracle.py +0 -0
  620. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/capture_qwen38_27b_metadata.py +0 -0
  621. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/conftest.py +0 -0
  622. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  623. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  624. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  625. {freesolo_flash_dev-1.2.118/flash/teacher → freesolo_flash_dev-1.2.120/tests/live}/__init__.py +0 -0
  626. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/live/conftest.py +0 -0
  627. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/live/test_lambda_live.py +0 -0
  628. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/live/test_runpod_live.py +0 -0
  629. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/live/test_sft_thinking_render_live.py +0 -0
  630. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/live/test_vast_live.py +0 -0
  631. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/conftest.py +0 -0
  632. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_base_model_serving.py +0 -0
  633. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_chat_auth.py +0 -0
  634. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_chat_authorizer.py +0 -0
  635. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_checkpoint_model_validation.py +0 -0
  636. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_engine_error_status.py +0 -0
  637. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_fp8_config.py +0 -0
  638. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_immutable_engine.py +0 -0
  639. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_immutable_revisions.py +0 -0
  640. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_immutable_schemas.py +0 -0
  641. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_mirror_sampling_parity.py +0 -0
  642. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_modal_deploy_identity.py +0 -0
  643. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_model_config.py +0 -0
  644. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_multimodal.py +0 -0
  645. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_openai_stream_options.py +0 -0
  646. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_per_model_gpu.py +0 -0
  647. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_persistence.py +0 -0
  648. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_pre_first_disconnect.py +0 -0
  649. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_prequant_config.py +0 -0
  650. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_registry.py +0 -0
  651. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_registry_coverage.py +0 -0
  652. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_request_body_limit.py +0 -0
  653. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_router.py +0 -0
  654. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_router_coverage.py +0 -0
  655. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_router_edge_coverage.py +0 -0
  656. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_schemas_coverage.py +0 -0
  657. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_serve_reasoning_split.py +0 -0
  658. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_serve_structured_outputs.py +0 -0
  659. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_serve_thinking.py +0 -0
  660. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_settings.py +0 -0
  661. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_structured_outputs.py +0 -0
  662. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_structured_outputs_coverage.py +0 -0
  663. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_supabase_rest_coverage.py +0 -0
  664. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_usage_outbox.py +0 -0
  665. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving/test_usage_reporter.py +0 -0
  666. {freesolo_flash_dev-1.2.118/tests/live → freesolo_flash_dev-1.2.120/tests/serving_conformance}/__init__.py +0 -0
  667. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving_conformance/conftest.py +0 -0
  668. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/serving_conformance/test_contract.py +0 -0
  669. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_accounting_coverage.py +0 -0
  670. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_adapter_shard_completeness.py +0 -0
  671. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_agent_flash_cli_contract.py +0 -0
  672. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_algorithms.py +0 -0
  673. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_allocator.py +0 -0
  674. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_backend_common.py +0 -0
  675. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_backend_jobspec_contract.py +0 -0
  676. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_bake_kernel_cache.py +0 -0
  677. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_base_model_provenance.py +0 -0
  678. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_billing_retry.py +0 -0
  679. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_build_context_contract.py +0 -0
  680. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cancel_remote.py +0 -0
  681. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_capture_qwen38_metadata.py +0 -0
  682. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_catalog_only_models.py +0 -0
  683. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_charge_pricing.py +0 -0
  684. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_chat_foundations.py +0 -0
  685. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_checkpoint_lifecycle.py +0 -0
  686. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_checkpoints.py +0 -0
  687. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_commands.py +0 -0
  688. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_commands_coverage.py +0 -0
  689. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_credential_shadowing.py +0 -0
  690. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_errors.py +0 -0
  691. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_estimate.py +0 -0
  692. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_gpus_flag.py +0 -0
  693. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_help.py +0 -0
  694. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_main_coverage.py +0 -0
  695. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_managed.py +0 -0
  696. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_render_coverage.py +0 -0
  697. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_render_theme.py +0 -0
  698. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_traces.py +0 -0
  699. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cli_wandb_warning.py +0 -0
  700. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_client.py +0 -0
  701. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_client_server_integration.py +0 -0
  702. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_client_stream_reads.py +0 -0
  703. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_config_env_vars.py +0 -0
  704. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_config_overrides.py +0 -0
  705. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_console_upload.py +0 -0
  706. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_controlled_experiment_repairs.py +0 -0
  707. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_analytical.py +0 -0
  708. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_currency.py +0 -0
  709. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_equation.py +0 -0
  710. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_estimate.py +0 -0
  711. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_hardware.py +0 -0
  712. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_cost_models.py +0 -0
  713. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_dataset_profile.py +0 -0
  714. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_deploy_alias_move_warning.py +0 -0
  715. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_deploy_latency.py +0 -0
  716. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_dev_channel.py +0 -0
  717. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_disk_gb.py +0 -0
  718. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_endpoint_name.py +0 -0
  719. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_cache_evict.py +0 -0
  720. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_delete.py +0 -0
  721. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_download.py +0 -0
  722. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_download_api.py +0 -0
  723. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_evaluations.py +0 -0
  724. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_list_api.py +0 -0
  725. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_list_cli.py +0 -0
  726. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_list_hub.py +0 -0
  727. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_no_install.py +0 -0
  728. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_publish.py +0 -0
  729. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_pull.py +0 -0
  730. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_pull_coverage.py +0 -0
  731. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_pull_loader_coverage.py +0 -0
  732. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_pull_managed_control_plane.py +0 -0
  733. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_push.py +0 -0
  734. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_rate_limit_resolve.py +0 -0
  735. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_ref_pinning.py +0 -0
  736. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_env_test.py +0 -0
  737. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_envs_coverage.py +0 -0
  738. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_export.py +0 -0
  739. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_flash_mvp.py +0 -0
  740. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_flash_worker.py +0 -0
  741. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_flashinfer_cache_dirs.py +0 -0
  742. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_freesolo_api_transport.py +0 -0
  743. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_fused_expert_warmstart.py +0 -0
  744. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_github_urlopen_retry.py +0 -0
  745. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_gpu_type_single_field.py +0 -0
  746. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_gpus.py +0 -0
  747. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_checkpoint_durability.py +0 -0
  748. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_params.py +0 -0
  749. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_process_census.py +0 -0
  750. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_resident_sizing.py +0 -0
  751. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_reward_batching.py +0 -0
  752. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_rollout_contract.py +0 -0
  753. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_grpo_rollout_identity.py +0 -0
  754. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_health_liveness.py +0 -0
  755. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_hf_retry.py +0 -0
  756. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_idle_endpoint_reaper.py +0 -0
  757. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_image_environment_capability.py +0 -0
  758. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_image_incremental_processor.py +0 -0
  759. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_image_sft_markers.py +0 -0
  760. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_image_sft_processor_parity.py +0 -0
  761. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_image_tokens.py +0 -0
  762. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_infisical_secrets.py +0 -0
  763. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_instance_bootstrap_coverage.py +0 -0
  764. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_internal_client.py +0 -0
  765. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_jobs.py +0 -0
  766. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_kernel_cache.py +0 -0
  767. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_kernel_fingerprint.py +0 -0
  768. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_kv_util.py +0 -0
  769. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lambda_api_coverage.py +0 -0
  770. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lambda_runner.py +0 -0
  771. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_logging.py +0 -0
  772. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_login_perms.py +0 -0
  773. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lora_rank_coverage.py +0 -0
  774. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lora_rank_nested_rung.py +0 -0
  775. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lora_targeting.py +0 -0
  776. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_lora_targeting_pinned_verl.py +0 -0
  777. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_managed_config_fields.py +0 -0
  778. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_managed_hf_repo.py +0 -0
  779. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_metrics_schema_agent_contract.py +0 -0
  780. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_mig_guard.py +0 -0
  781. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_mirror_sampling_parity.py +0 -0
  782. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_multi_gpu_gate.py +0 -0
  783. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_multimodal_training.py +0 -0
  784. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_named_reward_metrics.py +0 -0
  785. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_oom_escalate_gpu.py +0 -0
  786. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd.py +0 -0
  787. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_limits.py +0 -0
  788. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  789. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_multiturn_failure_exit.py +0 -0
  790. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_replay_guard.py +0 -0
  791. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_resume_safety.py +0 -0
  792. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_opd_train.py +0 -0
  793. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_orchestrator_flash.py +0 -0
  794. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_packing.py +0 -0
  795. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_packing_coverage.py +0 -0
  796. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_parasail_teacher.py +0 -0
  797. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_persisted_spec_envelope.py +0 -0
  798. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_poll_helpers.py +0 -0
  799. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_preflight.py +0 -0
  800. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_projects.py +0 -0
  801. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_prompt_budget.py +0 -0
  802. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_provider_preflight_coverage.py +0 -0
  803. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_provider_routing.py +0 -0
  804. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_provider_teardown_robustness.py +0 -0
  805. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_providers_symmetry.py +0 -0
  806. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_realized_cost.py +0 -0
  807. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_repo_cleanup.py +0 -0
  808. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_resolve_params_b.py +0 -0
  809. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_resume_on_retry.py +0 -0
  810. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_rl_train.py +0 -0
  811. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_rollout_samples.py +0 -0
  812. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_runmgmt.py +0 -0
  813. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_runpod_api_delete.py +0 -0
  814. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_runpod_key_fingerprint.py +0 -0
  815. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_runpod_key_waterfall.py +0 -0
  816. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_runtime_capsule.py +0 -0
  817. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve.py +0 -0
  818. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_app_materialize.py +0 -0
  819. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_chat_transport.py +0 -0
  820. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  821. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_modal_teardown_identity.py +0 -0
  822. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_reasoning_content.py +0 -0
  823. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_resolve_provenance.py +0 -0
  824. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_runtime_adapters.py +0 -0
  825. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_runtime_engine.py +0 -0
  826. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serve_runtime_types.py +0 -0
  827. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_api.py +0 -0
  828. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_app_coverage.py +0 -0
  829. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_auth_singleflight.py +0 -0
  830. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_billing.py +0 -0
  831. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_checkpoints_coverage.py +0 -0
  832. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_db.py +0 -0
  833. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_envs_coverage.py +0 -0
  834. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_locks_coverage.py +0 -0
  835. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_managed_chat_requests.py +0 -0
  836. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_managed_chat_revisions.py +0 -0
  837. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_server_standalone.py +0 -0
  838. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serving_conformance_gate.py +0 -0
  839. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serving_contract.py +0 -0
  840. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_serving_schema_coverage.py +0 -0
  841. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_chunked_nll.py +0 -0
  842. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_example_selection.py +0 -0
  843. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_gc_off.py +0 -0
  844. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_max_context.py +0 -0
  845. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_step_floor.py +0 -0
  846. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_train.py +0 -0
  847. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_sft_workload.py +0 -0
  848. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_source_attestation_flow.py +0 -0
  849. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_source_layout.py +0 -0
  850. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_source_snapshot.py +0 -0
  851. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_spec_contract_bytes.py +0 -0
  852. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_staged_environment.py +0 -0
  853. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_step_floor.py +0 -0
  854. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_step_metrics.py +0 -0
  855. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_step_timing.py +0 -0
  856. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_structured_outputs.py +0 -0
  857. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_teacher_broker.py +0 -0
  858. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_teacher_encoding_contract.py +0 -0
  859. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_terminal_artifacts.py +0 -0
  860. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_thinking_config.py +0 -0
  861. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_training_controls.py +0 -0
  862. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_type_comment_prose.py +0 -0
  863. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vast_api.py +0 -0
  864. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vast_api_coverage.py +0 -0
  865. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vast_offers.py +0 -0
  866. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vast_provider_coverage.py +0 -0
  867. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vast_runner.py +0 -0
  868. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_verified_revisions.py +0 -0
  869. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_verifiers.py +0 -0
  870. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_verl_checkpoint_export.py +0 -0
  871. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_verl_child_plugins.py +0 -0
  872. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_verl_silence_watchdog.py +0 -0
  873. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_version.py +0 -0
  874. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  875. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_vram_architecture.py +0 -0
  876. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_wandb_link.py +0 -0
  877. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_wandb_naming.py +0 -0
  878. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_warmstart_adapter_download.py +0 -0
  879. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_warmstart_cross_repo.py +0 -0
  880. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_warmstart_error_attribution.py +0 -0
  881. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_warmstart_image_adapters.py +0 -0
  882. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_weight_cache.py +0 -0
  883. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_dryrun.py +0 -0
  884. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_hardexit.py +0 -0
  885. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_image.py +0 -0
  886. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_init_heartbeat.py +0 -0
  887. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_stack.py +0 -0
  888. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_worker_thinking.py +0 -0
  889. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_workflow_contracts.py +0 -0
  890. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_workload_profile.py +0 -0
  891. {freesolo_flash_dev-1.2.118 → freesolo_flash_dev-1.2.120}/tests/test_zero2_sharding_gate.py +0 -0
@@ -86,7 +86,8 @@ jobs:
86
86
  deploy=true
87
87
  elif ! changed="$(git diff --name-only "$last_deployed_sha" "$CURRENT_SHA" 2>/dev/null)"; then
88
88
  deploy=true
89
- elif grep -qE '^(flash/|pyproject\.toml$|uv\.lock$|\.github/workflows/deploy-modal-dev\.yml$)' <<<"$changed"; then
89
+ # the build-time vllm repair lives outside flash/, so name its exact image input path.
90
+ elif grep -qE '^(flash/|docker/patch_vllm_moe_lora\.py$|pyproject\.toml$|uv\.lock$|\.github/workflows/deploy-modal-dev\.yml$)' <<<"$changed"; then
90
91
  deploy=true
91
92
  fi
92
93
  echo "deploy=$deploy" >> "$GITHUB_OUTPUT"
@@ -118,8 +118,9 @@ jobs:
118
118
  # any `flash/` change, not just `flash/serving/`: the image ships the whole package via
119
119
  # `add_local_python_source("flash")`, so a change anywhere under flash/ can alter what runs
120
120
  # in the container. narrowing this to flash/serving/ would let the deployed app drift from
121
- # the merged source. pyproject/uv.lock gate the image's dependency bounds.
122
- elif grep -qE "^(flash/|pyproject\.toml$|uv\.lock$|\.github/workflows/deploy-modal\.yml$)" <<< "$changed"; then
121
+ # the merged source. pyproject/uv.lock gate dependency bounds, and the build-time vllm
122
+ # repair lives outside flash/, so its exact path must trigger a rebuild too.
123
+ elif grep -qE "^(flash/|docker/patch_vllm_moe_lora\.py$|pyproject\.toml$|uv\.lock$|\.github/workflows/deploy-modal\.yml$)" <<< "$changed"; then
123
124
  deploy=true
124
125
  fi
125
126
  echo "deploy=$deploy" >> "$GITHUB_OUTPUT"
@@ -85,7 +85,8 @@ jobs:
85
85
  # while the tags keep pointing at the old one. that is the whole COPY set -- `flash`, the
86
86
  # lockfile, the launcher, and the files copied alongside them -- plus `.dockerignore`, which
87
87
  # decides what the build context contains at all, and this workflow file, so a change to the
88
- # build here republishes rather than leaving the old image serving under the same tags.
88
+ # build here republishes rather than leaving the old image serving under the same tags. the
89
+ # build-time vllm repair lives outside flash/, so its exact path is an explicit image input.
89
90
  - name: Decide whether to publish
90
91
  id: gate
91
92
  working-directory: .
@@ -127,7 +128,7 @@ jobs:
127
128
  publish=true
128
129
  elif ! changed="$(git diff --name-only "$last_published_sha" "$CURRENT_SHA" 2>/dev/null)"; then
129
130
  publish=true
130
- elif grep -qE "^(flash/|Dockerfile\.serve$|\.dockerignore$|serve_launch\.py$|pyproject\.toml$|uv\.lock$|README\.md$|LICENSE$|NOTICE$|\.github/workflows/publish-serving-image\.yml$)" <<< "$changed"; then
131
+ elif grep -qE "^(flash/|docker/patch_vllm_moe_lora\.py$|Dockerfile\.serve$|\.dockerignore$|serve_launch\.py$|pyproject\.toml$|uv\.lock$|README\.md$|LICENSE$|NOTICE$|\.github/workflows/publish-serving-image\.yml$)" <<< "$changed"; then
131
132
  publish=true
132
133
  fi
133
134
  echo "publish=$publish" >> "$GITHUB_OUTPUT"
@@ -25,13 +25,23 @@ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
25
25
 
26
26
  ### Changed
27
27
 
28
- - Active training and hosted serving now expose exactly `Qwen/Qwen3.5-9B`,
29
- `Qwen/Qwen3.8-27B`, and `Qwen/Qwen3.6-35B-A3B`. Qwen3.8 uses the immutable BF16 revision
28
+ - Active training now exposes exactly `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
29
+ `Qwen/Qwen3.6-35B-A3B`. Hosted serving remains active for 9B and 35B-A3B; hosted Qwen3.8 27B
30
+ remains inactive. Qwen3.8 uses the immutable BF16 revision
30
31
  `1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0` and official native block-FP8 serving revision
31
- `017b9c7af6b5689d5dd426a76e0bc077eb5ca20a`. The Qwen3.5 0.8B, 2B, and 4B tiers and
32
+ `017b9c7af6b5689d5dd426a76e0bc077eb5ca20a`, with the logical base and tokenizer provenance kept
33
+ distinct from the served checkpoint. The Qwen3.5 0.8B, 2B, and 4B tiers and
32
34
  `Qwen/Qwen3.6-27B` cannot activate, while historical status, accepted billing retry,
33
35
  cancellation, cleanup, hosted revocation, and exact identity-based undeploy remain available.
34
- Qwen3.6 27B adapters are not compatible with Qwen3.8. Customer-owned serving remains 9B-only.
36
+ Qwen3.6 27B adapters are not compatible with Qwen3.8.
37
+ - Customer-owned serving is now Modal-only and requires explicit `--provider modal`. Modal remains
38
+ live-qualified for all three active models. The 27B and 35B-A3B qualifications stay bound to the
39
+ exact certified serving image digest. Each deployment still serves one exact base model. The 27B
40
+ engine keeps its `H100!` placement and distinct served checkpoint and tokenizer provenance. The
41
+ 35B-A3B engine keeps its H200, BF16, FP8 KV, 32K context, eight-sequence, 4096 batched-token, and
42
+ six rank-64 LoRA-slot contract. Customer-serving RunPod commands, profiles, identities, and
43
+ lifecycle code are removed without a compatibility or teardown shim. Managed RunPod training,
44
+ serverless workers, dependencies, provider routing, artifacts, and caching are unchanged.
35
45
  - `[train] init_from_adapter` now works for every source/target algorithm pair. SFT was rejected as
36
46
  a warm-start target, so an adapter could be continued only by GRPO or OPD; that restriction
37
47
  described the retired trl SFT backend, and the verl backend that replaced it loads a warm-start
@@ -73,6 +83,8 @@ This file starts at 1.1.35. Earlier releases are not reconstructed here; use
73
83
 
74
84
  ### Fixed
75
85
 
86
+ - Qwen3.6 FP8 MoE serving now preserves unquantized activations for LoRA A while keeping the base
87
+ MoE path quantized, backporting the exact vLLM PR #42120 behavior into the pinned 0.23.0 image.
76
88
  - GRPO publication now validates complete finite optimizer-step actor gradient norms instead of
77
89
  masked advantage-bound spread, so valid truncated groups are not falsely rejected and deployable
78
90
  checkpoints remain withheld until terminal evidence validation succeeds.
@@ -26,10 +26,14 @@ RUN python -c 'import sys; assert sys.version_info[:2] == (3, 12)' \
26
26
 
27
27
  COPY pyproject.toml uv.lock README.md LICENSE NOTICE ./
28
28
  COPY flash ./flash
29
+ COPY docker/patch_vllm_moe_lora.py ./docker/patch_vllm_moe_lora.py
29
30
  COPY serve_launch.py ./serve_launch.py
30
31
  RUN uv sync --frozen --no-dev --extra serve-runtime
32
+ RUN /opt/flash-venv/bin/python /app/docker/patch_vllm_moe_lora.py \
33
+ && /opt/flash-venv/bin/python /app/docker/patch_vllm_moe_lora.py --verify \
34
+ && rm /app/docker/patch_vllm_moe_lora.py
31
35
 
32
- # The CUDA this image runs on is decided by vllm's own compiled extension, not by us: every vllm
36
+ # the cuda this image runs on is decided by vllm's own compiled extension, not by us: every vllm
33
37
  # wheel from 0.20.2 onward (0.23.0 included) ships a vllm/_C.abi3.so linked against
34
38
  # libcudart.so.13. Measured across the published wheels -- 0.19.1 links libcudart.so.12, 0.20.2 and
35
39
  # later link .13 -- so no pin inside the 0.2x line escapes CUDA 13, and downgrading torch to a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.2.118
3
+ Version: 1.2.120
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
@@ -116,10 +116,10 @@ point of use; install it with `pip install freesolo`.
116
116
 
117
117
  Two components stay Freesolo-operated and are **not** in this repository:
118
118
 
119
- | Component | Where it lives | Self-hosted equivalent |
120
- | ------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- |
121
- | Multi-tenant identity | `api.freesolo.co`; verifies keys and owns projects/orgs | `FLASH_STANDALONE=1` runs single-tenant on your own key |
122
- | Hosted Multi-LoRA serving | `serve.freesolo.co`, deployed from `flash/serving/`; `flash/serve/` owns the client and shared runtime | `flash serve deploy` provisions serving in your own Modal or RunPod account |
119
+ | Component | Where it lives | Self-hosted equivalent |
120
+ | ------------------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
121
+ | Multi-tenant identity | `api.freesolo.co`; verifies keys and owns projects/orgs | `FLASH_STANDALONE=1` runs single-tenant on your own key |
122
+ | Hosted Multi-LoRA serving | `serve.freesolo.co`, deployed from `flash/serving/`; `flash/serve/` owns the client and shared runtime | `flash serve deploy` provisions serving in your own Modal account |
123
123
 
124
124
  So there are three ways to use Flash: against the **hosted service**, **self-hosted** against
125
125
  your own GPU accounts, or as **training and provider code to read and modify**. The training
@@ -127,9 +127,13 @@ path is self-hostable end to end — see **[SELF_HOSTING.md](SELF_HOSTING.md)**.
127
127
 
128
128
  ## Using the hosted service
129
129
 
130
- The active training and hosted-serving catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
131
- `Qwen/Qwen3.6-35B-A3B`. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8,
132
- and customer-owned Modal or RunPod serving remains limited to Qwen3.5 9B.
130
+ The active training catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
131
+ `Qwen/Qwen3.6-35B-A3B`. Hosted serving is active for 9B and 35B-A3B; hosted Qwen3.8 27B remains
132
+ inactive. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8. Customer-owned
133
+ Modal supports all three active models; 27B and 35B-A3B are bound to the certified serving image
134
+ digest. Customer-owned `flash serve` requires explicit `--provider modal`. Customer-serving RunPod
135
+ commands and deployment identities are unsupported, with no migration or teardown shim. Managed
136
+ RunPod training remains supported and unchanged.
133
137
 
134
138
  `flash login` is not interactive. Export `FREESOLO_API_KEY` first so the key does not appear in process listings:
135
139
 
@@ -305,8 +309,10 @@ External bearer tokens are rejected rather than accepted unverified. A standalon
305
309
  **single-tenant** — whoever holds that key can spend your GPU budget, so keep it off
306
310
  untrusted networks. See [the security model](SELF_HOSTING.md#the-security-model).
307
311
 
308
- `flash serve deploy` provisions serving in your own Modal or RunPod account, implementing the
309
- same contract `flash/serve/` speaks; [docs/serving-contract.md](docs/serving-contract.md)
312
+ `flash serve deploy` provisions serving in your own Modal account and requires explicit
313
+ `--provider modal`. Each deployment owns one exact base model and its compatible adapters; another
314
+ base model requires another deployment. Customer-serving RunPod identities are unsupported.
315
+ It implements the same contract `flash/serve/` speaks; [docs/serving-contract.md](docs/serving-contract.md)
310
316
  documents it if you would rather write your own.
311
317
 
312
318
  The GPU worker image is public and published under an explicit CUDA tag, not `latest`:
@@ -33,10 +33,10 @@ point of use; install it with `pip install freesolo`.
33
33
 
34
34
  Two components stay Freesolo-operated and are **not** in this repository:
35
35
 
36
- | Component | Where it lives | Self-hosted equivalent |
37
- | ------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- |
38
- | Multi-tenant identity | `api.freesolo.co`; verifies keys and owns projects/orgs | `FLASH_STANDALONE=1` runs single-tenant on your own key |
39
- | Hosted Multi-LoRA serving | `serve.freesolo.co`, deployed from `flash/serving/`; `flash/serve/` owns the client and shared runtime | `flash serve deploy` provisions serving in your own Modal or RunPod account |
36
+ | Component | Where it lives | Self-hosted equivalent |
37
+ | ------------------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
38
+ | Multi-tenant identity | `api.freesolo.co`; verifies keys and owns projects/orgs | `FLASH_STANDALONE=1` runs single-tenant on your own key |
39
+ | Hosted Multi-LoRA serving | `serve.freesolo.co`, deployed from `flash/serving/`; `flash/serve/` owns the client and shared runtime | `flash serve deploy` provisions serving in your own Modal account |
40
40
 
41
41
  So there are three ways to use Flash: against the **hosted service**, **self-hosted** against
42
42
  your own GPU accounts, or as **training and provider code to read and modify**. The training
@@ -44,9 +44,13 @@ path is self-hostable end to end — see **[SELF_HOSTING.md](SELF_HOSTING.md)**.
44
44
 
45
45
  ## Using the hosted service
46
46
 
47
- The active training and hosted-serving catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
48
- `Qwen/Qwen3.6-35B-A3B`. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8,
49
- and customer-owned Modal or RunPod serving remains limited to Qwen3.5 9B.
47
+ The active training catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
48
+ `Qwen/Qwen3.6-35B-A3B`. Hosted serving is active for 9B and 35B-A3B; hosted Qwen3.8 27B remains
49
+ inactive. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8. Customer-owned
50
+ Modal supports all three active models; 27B and 35B-A3B are bound to the certified serving image
51
+ digest. Customer-owned `flash serve` requires explicit `--provider modal`. Customer-serving RunPod
52
+ commands and deployment identities are unsupported, with no migration or teardown shim. Managed
53
+ RunPod training remains supported and unchanged.
50
54
 
51
55
  `flash login` is not interactive. Export `FREESOLO_API_KEY` first so the key does not appear in process listings:
52
56
 
@@ -222,8 +226,10 @@ External bearer tokens are rejected rather than accepted unverified. A standalon
222
226
  **single-tenant** — whoever holds that key can spend your GPU budget, so keep it off
223
227
  untrusted networks. See [the security model](SELF_HOSTING.md#the-security-model).
224
228
 
225
- `flash serve deploy` provisions serving in your own Modal or RunPod account, implementing the
226
- same contract `flash/serve/` speaks; [docs/serving-contract.md](docs/serving-contract.md)
229
+ `flash serve deploy` provisions serving in your own Modal account and requires explicit
230
+ `--provider modal`. Each deployment owns one exact base model and its compatible adapters; another
231
+ base model requires another deployment. Customer-serving RunPod identities are unsupported.
232
+ It implements the same contract `flash/serve/` speaks; [docs/serving-contract.md](docs/serving-contract.md)
227
233
  documents it if you would rather write your own.
228
234
 
229
235
  The GPU worker image is public and published under an explicit CUDA tag, not `latest`:
@@ -22,9 +22,11 @@ Two credentials and at least one GPU account:
22
22
 
23
23
  Everything else is optional.
24
24
 
25
- The active training catalog is Qwen3.5 9B, Qwen3.8 27B, and Qwen3.6 35B-A3B. Customer-owned
26
- serving through `flash serve deploy` remains Qwen3.5 9B-only; the hosted 27B profile is not a
27
- customer-provider placement contract.
25
+ The active training catalog is Qwen3.5 9B, Qwen3.8 27B, and Qwen3.6 35B-A3B. Hosted Qwen3.8
26
+ 27B remains inactive. Customer-owned Modal supports all three models; 27B and 35B-A3B are bound to
27
+ the certified serving image digest. Customer-owned `flash serve` requires explicit
28
+ `--provider modal`. Customer-serving RunPod commands and identities are unsupported, with no
29
+ migration or teardown shim. Managed RunPod training remains supported and unchanged.
28
30
 
29
31
  ## Quickstart
30
32
 
@@ -363,10 +365,23 @@ without `FLASH_STANDALONE` and set `FREESOLO_BASE_URL` to point at it.
363
365
 
364
366
  ## Serving
365
367
 
366
- `flash serve deploy` provisions serving in **your own** Modal or RunPod account, running the
367
- published worker image against one base model and one run's adapter. Training and export remain
368
- independent of serving. Catalog serving checkpoint repositories are informational only and are never
369
- resolved by the training path.
368
+ `flash serve deploy` provisions serving in **your own** Modal account, running the published worker
369
+ image against one exact base model and that model's compatible adapters. A separate deployment is
370
+ required for each base model. Training and export remain independent of serving. The required
371
+ provider argument has the sole accepted value `--provider modal`.
372
+ Catalog serving checkpoint repositories are informational only and are never resolved by the
373
+ training path.
374
+
375
+ Customer-owned Modal is live-qualified for Qwen3.5 9B, Qwen3.8 27B, and Qwen3.6 35B-A3B. The 27B
376
+ and 35B-A3B qualifications are bound to the certified serving image digest. The 27B engine runs on
377
+ `H100!` and serves the pinned `Qwen/Qwen3.8-27B-FP8` checkpoint while retaining
378
+ `Qwen/Qwen3.8-27B` as its logical base and tokenizer provenance. The 35B-A3B engine serves the BF16
379
+ model on one H200 with FP8 KV cache, a 32K context, eight sequences, a 4096 batched-token cap, and
380
+ six rank-64 LoRA slots.
381
+ Customer-serving RunPod lifecycle commands and deployment identities are unsupported. There is no
382
+ migration, status, undeploy, or teardown shim for an old RunPod identity. This does not affect the
383
+ managed RunPod training provider, serverless workers, artifact caching, or `RUNPOD_API_KEY` used by
384
+ the training control plane.
370
385
 
371
386
  ```bash
372
387
  # the `server` extra, not the bare install: `serve deploy` resolves the adapter through
@@ -392,31 +407,9 @@ flash serve deploy \
392
407
  --modal-region us-east
393
408
  ```
394
409
 
395
- The three `--modal-*` placement flags are required for `--provider modal` even though `--help`
396
- lists them as optional: they are optional to _argparse_ because RunPod takes its own pair instead,
397
- and `placement_for` is what requires exactly one provider's set. Omitting them exits with
398
- `modal placement requires environment, region, workspace_name`.
399
-
400
- For RunPod, export `RUNPOD_API_KEY` instead and swap the placement flags rather than adding to
401
- them -- `placement_for` rejects the other provider's inputs instead of ignoring them, so keeping
402
- `--modal-*` alongside `--provider runpod` fails before anything is created:
403
-
404
- ```bash
405
- flash serve deploy \
406
- --provider runpod \
407
- --model Qwen/Qwen3.5-9B \
408
- --run <run-id> \
409
- --deployment-id my-9b-serving \
410
- --image ghcr.io/freesolo-co/freesolo-flash-serve@sha256:<digest> \
411
- --artifact-repo <hub-repo> \
412
- --artifact-subfolder <path-within-repo> \
413
- --lora-rank 32 \
414
- --runpod-account <your-account-id> \
415
- --runpod-data-center <data-center-id>
416
- ```
417
-
418
- Both `--runpod-*` flags are required and must be nonempty, for the same reason the `--modal-*`
419
- trio is: `--help` lists them as optional only because each provider takes its own set.
410
+ The three `--modal-*` placement flags are required for `--provider modal`. Omitting them exits with
411
+ `modal placement requires environment, region, workspace_name`. Passing `--provider runpod` is
412
+ rejected by argument parsing before Hub resolution, credential reads, or provider access.
420
413
 
421
414
  Provider credentials are read from the process environment for the duration of a single call and are
422
415
  never written to the deployment record, logs, or command arguments — so any later resize or teardown