freesolo-flash-dev 1.4.16__tar.gz → 1.4.18__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 (1078) hide show
  1. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/PKG-INFO +1 -1
  2. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/backend.py +30 -0
  3. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/controller.py +6 -5
  4. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/glue.py +15 -2
  5. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/net/worker.py +4 -2
  6. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/submit.py +8 -1
  7. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/asgi/app.py +2 -0
  8. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/db.py +52 -0
  9. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/runtime.py +11 -0
  10. freesolo_flash_dev-1.4.18/flash/server/platform/submission_admission.py +62 -0
  11. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/runs.py +15 -2
  12. freesolo_flash_dev-1.4.18/flash/server/routes/submissions.py +151 -0
  13. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/model_config.py +10 -10
  14. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/prequant_config.py +3 -1
  15. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/pyproject.toml +2 -2
  16. freesolo_flash_dev-1.4.18/scripts/benchmark_qwen_serving.py +389 -0
  17. freesolo_flash_dev-1.4.18/scripts/quantize_qwen35_base.py +206 -0
  18. freesolo_flash_dev-1.4.18/tests/fixtures/qwen3_5_9b_chat_template.jinja +154 -0
  19. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_model_config.py +1 -1
  20. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_per_model_gpu.py +7 -7
  21. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_prequant_config.py +6 -3
  22. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_controller_connect.py +25 -2
  23. freesolo_flash_dev-1.4.18/tests/test_custom_cuda_headroom.py +61 -0
  24. freesolo_flash_dev-1.4.18/tests/test_env_glue_tool_replies.py +96 -0
  25. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_flash_worker.py +16 -0
  26. freesolo_flash_dev-1.4.18/tests/test_idempotent_submissions.py +387 -0
  27. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_qwen9b_base.py +7 -3
  28. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/uv.lock +1 -1
  29. freesolo_flash_dev-1.4.16/scripts/benchmark_qwen_serving.py +0 -174
  30. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.dockerignore +0 -0
  31. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.env.example +0 -0
  32. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/CODEOWNERS +0 -0
  33. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  34. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  35. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  36. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/dependabot.yml +0 -0
  37. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/scripts/ci_sharding.py +0 -0
  38. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/scripts/notify_tests_repo.py +0 -0
  39. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/auto-rebake.yml +0 -0
  40. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/bake-kernel-cache.yml +0 -0
  41. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/ci.yml +0 -0
  42. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/deploy-deepinfer.yml +0 -0
  43. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/deploy-modal-dev.yml +0 -0
  44. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/deploy-modal.yml +0 -0
  45. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/dev-kernel-cache.yml +0 -0
  46. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/main-source-guard.yml +0 -0
  47. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/notify-tests-repo.yml +0 -0
  48. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  49. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/publish-dev.yml +0 -0
  50. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/publish-image.yml +0 -0
  51. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/publish-serving-image.yml +0 -0
  52. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/publish.yml +0 -0
  53. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/version-parity.yml +0 -0
  54. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.github/workflows/worker-image.yml +0 -0
  55. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/.gitignore +0 -0
  56. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/Dockerfile +0 -0
  57. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/Dockerfile.serve +0 -0
  58. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/Dockerfile.worker +0 -0
  59. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/LICENSE +0 -0
  60. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/NOTICE +0 -0
  61. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/build/kernel_cache/.gitignore +0 -0
  62. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/build/kernel_cache/.keep +0 -0
  63. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/deploy/infisical/entrypoint.sh +0 -0
  64. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/Dockerfile.kernelcache +0 -0
  65. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/Dockerfile.kernelcache.relayer +0 -0
  66. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/bake_kernel_cache.py +0 -0
  67. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/bake_sandbox_entry.py +0 -0
  68. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/extract_cudart_fix.py +0 -0
  69. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/kernel_fingerprint.py +0 -0
  70. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/docker/patch_vllm_moe_lora.py +0 -0
  71. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/__init__.py +0 -0
  72. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/__init__.py +0 -0
  73. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/background.py +0 -0
  74. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/channel.py +0 -0
  75. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/diagnostics.py +0 -0
  76. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/fileio.py +0 -0
  77. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/http.py +0 -0
  78. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/http_deadline.py +0 -0
  79. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/logging.py +0 -0
  80. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/openai_sse.py +0 -0
  81. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/paths.py +0 -0
  82. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/_internal/version.py +0 -0
  83. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/__init__.py +0 -0
  84. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/artifacts.py +0 -0
  85. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/config.py +0 -0
  86. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/fused_experts.py +0 -0
  87. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/lora_rank.py +0 -0
  88. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/adapters/targets.py +0 -0
  89. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/__init__.py +0 -0
  90. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/api.py +0 -0
  91. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/config.py +0 -0
  92. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/errors.py +0 -0
  93. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/manifest.py +0 -0
  94. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/artifacts/storage.py +0 -0
  95. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/__init__.py +0 -0
  96. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/__main__.py +0 -0
  97. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/__init__.py +0 -0
  98. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/__init__.py +0 -0
  99. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/__init__.py +0 -0
  100. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/imports.py +0 -0
  101. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/list.py +0 -0
  102. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/push.py +0 -0
  103. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/retained.py +0 -0
  104. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/setup.py +0 -0
  105. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  106. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/__init__.py +0 -0
  107. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/episode.py +0 -0
  108. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/eval.py +0 -0
  109. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/eval_args.py +0 -0
  110. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/evaluations.py +0 -0
  111. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/params.py +0 -0
  112. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/test.py +0 -0
  113. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/env/testing/warnings.py +0 -0
  114. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/__init__.py +0 -0
  115. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/account.py +0 -0
  116. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/catalog.py +0 -0
  117. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/deploy.py +0 -0
  118. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/log_follow.py +0 -0
  119. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/prompt_budget.py +0 -0
  120. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/runs.py +0 -0
  121. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/traces.py +0 -0
  122. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/train.py +0 -0
  123. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/ops/worker_output.py +0 -0
  124. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/serving/__init__.py +0 -0
  125. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/serving/deploy.py +0 -0
  126. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/serving/identity.py +0 -0
  127. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/serving/status.py +0 -0
  128. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/commands/serving/undeploy.py +0 -0
  129. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/__init__.py +0 -0
  130. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/account.py +0 -0
  131. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/custom.py +0 -0
  132. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/env.py +0 -0
  133. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/errors.py +0 -0
  134. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/main.py +0 -0
  135. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/models.py +0 -0
  136. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/serve_parser.py +0 -0
  137. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/traces.py +0 -0
  138. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/parsing/training.py +0 -0
  139. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/scaffold/TRAINING.md +0 -0
  140. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/scaffold/__init__.py +0 -0
  141. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/__init__.py +0 -0
  142. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/cost.py +0 -0
  143. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/env_panels.py +0 -0
  144. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/heartbeat.py +0 -0
  145. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/render.py +0 -0
  146. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/tables.py +0 -0
  147. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cli/ui/tty.py +0 -0
  148. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/__init__.py +0 -0
  149. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/config.py +0 -0
  150. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/freesolo_api.py +0 -0
  151. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/http.py +0 -0
  152. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/runtime_secrets.py +0 -0
  153. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/shapes.py +0 -0
  154. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/specs.py +0 -0
  155. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/client/streaming.py +0 -0
  156. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/__init__.py +0 -0
  157. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/image_descriptors.py +0 -0
  158. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/multimodal.py +0 -0
  159. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/processor.py +0 -0
  160. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/reasoning_normalization.py +0 -0
  161. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/stop_tokens.py +0 -0
  162. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/structured_options.py +0 -0
  163. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/structured_outputs.py +0 -0
  164. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/content/thinking.py +0 -0
  165. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/core/__init__.py +0 -0
  166. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/core/catalog.py +0 -0
  167. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/core/grpo.py +0 -0
  168. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/core/spec.py +0 -0
  169. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/core/spec_persistence.py +0 -0
  170. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/__init__.py +0 -0
  171. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/analytical.py +0 -0
  172. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/currency.py +0 -0
  173. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/facts.py +0 -0
  174. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/spec.py +0 -0
  175. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/cost/types.py +0 -0
  176. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/__init__.py +0 -0
  177. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/async_client.py +0 -0
  178. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/billing.py +0 -0
  179. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/checkpoints.py +0 -0
  180. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/client.py +0 -0
  181. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/managed.py +0 -0
  182. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/server.py +0 -0
  183. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/session.py +0 -0
  184. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/starter.py +0 -0
  185. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/types.py +0 -0
  186. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/validation.py +0 -0
  187. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/custom/worker.py +0 -0
  188. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/__init__.py +0 -0
  189. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/__init__.py +0 -0
  190. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/kv_sizing.py +0 -0
  191. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/model_config_probe.py +0 -0
  192. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/prompt_budget.py +0 -0
  193. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/recipe.py +0 -0
  194. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/steps.py +0 -0
  195. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/plan/vram.py +0 -0
  196. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/__init__.py +0 -0
  197. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/dataset_profile.py +0 -0
  198. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/image_tokens.py +0 -0
  199. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/reasoning_render.py +0 -0
  200. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/sft_image_rows.py +0 -0
  201. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/sft_rows.py +0 -0
  202. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/sft_tools.py +0 -0
  203. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/sft_workload.py +0 -0
  204. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/tokenizer.py +0 -0
  205. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/profiling/workload_profile.py +0 -0
  206. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/result/__init__.py +0 -0
  207. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/result/accounting.py +0 -0
  208. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/result/rollout_samples.py +0 -0
  209. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/__init__.py +0 -0
  210. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/checkpoint_transport.py +0 -0
  211. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/huggingface.py +0 -0
  212. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/model_snapshot.py +0 -0
  213. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/verl_checkpoint.py +0 -0
  214. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/support/worker_entrypoint.py +0 -0
  215. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/__init__.py +0 -0
  216. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/__main__.py +0 -0
  217. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/entry/__init__.py +0 -0
  218. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/entry/rl.py +0 -0
  219. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/entry/worker.py +0 -0
  220. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/__init__.py +0 -0
  221. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/artifacts.py +0 -0
  222. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/cpu_handoff.py +0 -0
  223. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/heartbeat.py +0 -0
  224. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/prefetch.py +0 -0
  225. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/transfer.py +0 -0
  226. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/io/wandb_log.py +0 -0
  227. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/__init__.py +0 -0
  228. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/adapter.py +0 -0
  229. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/chatml_mask.py +0 -0
  230. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/decoding.py +0 -0
  231. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/lora.py +0 -0
  232. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/model/packing.py +0 -0
  233. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/perf/__init__.py +0 -0
  234. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/perf/diagnostics.py +0 -0
  235. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/perf/lifecycle.py +0 -0
  236. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/perf/memory.py +0 -0
  237. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/perf/model_size.py +0 -0
  238. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/runtime/__init__.py +0 -0
  239. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  240. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/runtime/phases.py +0 -0
  241. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/runtime/rng.py +0 -0
  242. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/runtime/state.py +0 -0
  243. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/__init__.py +0 -0
  244. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/__init__.py +0 -0
  245. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/__init__.py +0 -0
  246. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/agents.yaml +0 -0
  247. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/batch.py +0 -0
  248. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/compact_checkpoint.py +0 -0
  249. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/configuration.py +0 -0
  250. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/engine.py +0 -0
  251. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/flashinfer_cache.py +0 -0
  252. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/launch.py +0 -0
  253. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/model.py +0 -0
  254. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/observations.py +0 -0
  255. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/options.py +0 -0
  256. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/prompt_media.py +0 -0
  257. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/queue.py +0 -0
  258. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/readiness.py +0 -0
  259. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/reference.py +0 -0
  260. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/registration.py +0 -0
  261. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/replay.py +0 -0
  262. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/replay_guard.py +0 -0
  263. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/rollout.py +0 -0
  264. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/rollout_contract.py +0 -0
  265. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/startup.py +0 -0
  266. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/tracking.py +0 -0
  267. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/trainer.py +0 -0
  268. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/upstream.py +0 -0
  269. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/vllm_worker.py +0 -0
  270. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/child/worker.py +0 -0
  271. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  272. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  273. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  274. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/persistence.py +0 -0
  275. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  276. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/lifecycle/timing.py +0 -0
  277. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/__init__.py +0 -0
  278. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/contract.py +0 -0
  279. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/episode.py +0 -0
  280. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/generation.py +0 -0
  281. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/identity.py +0 -0
  282. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/core/rollout/lifecycle.py +0 -0
  283. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/__init__.py +0 -0
  284. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/backend_common.py +0 -0
  285. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  286. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/rl_train.py +0 -0
  287. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  288. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  289. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/sft_train.py +0 -0
  290. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  291. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/__init__.py +0 -0
  292. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  293. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/contract.py +0 -0
  294. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/credit.py +0 -0
  295. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/entry.py +0 -0
  296. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/identity.py +0 -0
  297. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/metrics.py +0 -0
  298. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  299. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/reward.py +0 -0
  300. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/rollout.py +0 -0
  301. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/trainer.py +0 -0
  302. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/child/transport.py +0 -0
  303. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  304. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  305. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/launch/config.py +0 -0
  306. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  307. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  308. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  309. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  310. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  311. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  312. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  313. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/__init__.py +0 -0
  314. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/child/dataset.py +0 -0
  315. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/child/entry.py +0 -0
  316. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/child/loop.py +0 -0
  317. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/child/schedule.py +0 -0
  318. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/child/trainer.py +0 -0
  319. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  320. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  321. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/train/sft/setup/config.py +0 -0
  322. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/__init__.py +0 -0
  323. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/adapter_merger.py +0 -0
  324. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/capabilities.py +0 -0
  325. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/checkpoints.py +0 -0
  326. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/child_io.py +0 -0
  327. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/diagnostics.py +0 -0
  328. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/parallelism.py +0 -0
  329. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/engine/worker/verl/parent_work.py +0 -0
  330. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/__init__.py +0 -0
  331. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/__init__.py +0 -0
  332. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/adapter.py +0 -0
  333. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/base.py +0 -0
  334. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/loader.py +0 -0
  335. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/pull.py +0 -0
  336. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/loading/staged.py +0 -0
  337. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/__init__.py +0 -0
  338. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/cache_security.py +0 -0
  339. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/cache_storage.py +0 -0
  340. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/dataset_selection.py +0 -0
  341. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/evaluations.py +0 -0
  342. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/identity.py +0 -0
  343. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/meta/namespace_listing.py +0 -0
  344. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/package/__init__.py +0 -0
  345. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/package/direct_tokens.py +0 -0
  346. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/package/limits.py +0 -0
  347. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/package/unpack.py +0 -0
  348. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/registry/__init__.py +0 -0
  349. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/registry/azure.py +0 -0
  350. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/registry/packages.py +0 -0
  351. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/scoring/__init__.py +0 -0
  352. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/scoring/context.py +0 -0
  353. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/envs/scoring/response.py +0 -0
  354. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/__init__.py +0 -0
  355. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/__init__.py +0 -0
  356. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  357. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/attempt.py +0 -0
  358. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  359. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  360. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  361. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  362. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  363. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  364. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/instances/instance.py +0 -0
  365. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/instances/poll.py +0 -0
  366. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  367. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  368. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/net/__init__.py +0 -0
  369. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/net/auth.py +0 -0
  370. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/net/deadline.py +0 -0
  371. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/_lifecycle/net/http.py +0 -0
  372. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/artifacts/__init__.py +0 -0
  373. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/artifacts/channel.py +0 -0
  374. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/artifacts/weight_cache.py +0 -0
  375. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/__init__.py +0 -0
  376. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/allocator.py +0 -0
  377. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/base.py +0 -0
  378. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/fit_errors.py +0 -0
  379. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/preflight.py +0 -0
  380. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/registry.py +0 -0
  381. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/core/sharding.py +0 -0
  382. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/__init__.py +0 -0
  383. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/api.py +0 -0
  384. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/auth.py +0 -0
  385. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/checkpoint_upload.py +0 -0
  386. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/handles.py +0 -0
  387. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/jobs.py +0 -0
  388. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/prefetch.py +0 -0
  389. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/pricing.py +0 -0
  390. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/provider.py +0 -0
  391. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/providers/modal/startup.py +0 -0
  392. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/py.typed +0 -0
  393. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/__init__.py +0 -0
  394. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/accounting/__init__.py +0 -0
  395. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/accounting/artifacts.py +0 -0
  396. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/accounting/costs.py +0 -0
  397. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/accounting/weight_cache.py +0 -0
  398. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/__init__.py +0 -0
  399. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/attempts.py +0 -0
  400. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/claim_lock.py +0 -0
  401. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/cleanup.py +0 -0
  402. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/deadlines.py +0 -0
  403. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/preparation.py +0 -0
  404. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/reporting.py +0 -0
  405. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/runtime_credentials.py +0 -0
  406. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/state.py +0 -0
  407. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/lifecycle/status.py +0 -0
  408. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/results/__init__.py +0 -0
  409. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/results/checkpoints.py +0 -0
  410. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/results/deployments.py +0 -0
  411. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/__init__.py +0 -0
  412. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/attach.py +0 -0
  413. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/deploy.py +0 -0
  414. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/errors.py +0 -0
  415. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/execution.py +0 -0
  416. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/lifecycle.py +0 -0
  417. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/recovery.py +0 -0
  418. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/retry_decision.py +0 -0
  419. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runner/supervise/transitions.py +0 -0
  420. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runtime_capsule/__init__.py +0 -0
  421. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runtime_capsule/build.py +0 -0
  422. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runtime_capsule/manifest.py +0 -0
  423. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/runtime_capsule/profiles.py +0 -0
  424. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/schema/__init__.py +0 -0
  425. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/schema/custom.py +0 -0
  426. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/schema/fields.py +0 -0
  427. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/__init__.py +0 -0
  428. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/__init__.py +0 -0
  429. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/__main__.py +0 -0
  430. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/bootstrap.py +0 -0
  431. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/chat_stream.py +0 -0
  432. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/http.py +0 -0
  433. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/hydration_credentials.py +0 -0
  434. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/launch.py +0 -0
  435. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/manifest.py +0 -0
  436. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/materialize.py +0 -0
  437. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/openai.py +0 -0
  438. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/app/progress.py +0 -0
  439. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/__init__.py +0 -0
  440. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/errors.py +0 -0
  441. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/protocol.py +0 -0
  442. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/provenance.py +0 -0
  443. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/responses.py +0 -0
  444. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/contract/urls.py +0 -0
  445. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/__init__.py +0 -0
  446. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/_canonical.py +0 -0
  447. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/_serialization.py +0 -0
  448. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/_urls.py +0 -0
  449. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/credentials.py +0 -0
  450. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/planning.py +0 -0
  451. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/control/types.py +0 -0
  452. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/__init__.py +0 -0
  453. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/adapter_check.py +0 -0
  454. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/deploy.py +0 -0
  455. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/download.py +0 -0
  456. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/export.py +0 -0
  457. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/preflight.py +0 -0
  458. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/profiles.py +0 -0
  459. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/readiness.py +0 -0
  460. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/deployment/resolve.py +0 -0
  461. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/__init__.py +0 -0
  462. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/common/__init__.py +0 -0
  463. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/common/records.py +0 -0
  464. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/__init__.py +0 -0
  465. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  466. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  467. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  468. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  469. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  470. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  471. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  472. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  473. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  474. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  475. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  476. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  477. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  478. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/__init__.py +0 -0
  479. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/openai.py +0 -0
  480. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/runtime_support.py +0 -0
  481. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/schema_types.py +0 -0
  482. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/streaming.py +0 -0
  483. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/text_scan.py +0 -0
  484. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/thinking.py +0 -0
  485. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/tool_calls.py +0 -0
  486. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/tool_template.py +0 -0
  487. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/transport.py +0 -0
  488. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/request/validation.py +0 -0
  489. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/__init__.py +0 -0
  490. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/adapters.py +0 -0
  491. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/cache_admission.py +0 -0
  492. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/cache_retention.py +0 -0
  493. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/cache_scheduler.py +0 -0
  494. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/engine.py +0 -0
  495. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/errors.py +0 -0
  496. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/hub.py +0 -0
  497. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/multimodal.py +0 -0
  498. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/prompt.py +0 -0
  499. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/prompt_cache.py +0 -0
  500. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/reasoning_tools.py +0 -0
  501. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/sampling.py +0 -0
  502. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/structured_outputs.py +0 -0
  503. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/token_batch.py +0 -0
  504. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/token_prefix_cache.py +0 -0
  505. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/tool_calls.py +0 -0
  506. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serve/runtime/types.py +0 -0
  507. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/__init__.py +0 -0
  508. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/__main__.py +0 -0
  509. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/asgi/__init__.py +0 -0
  510. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/asgi/cli.py +0 -0
  511. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/billing/__init__.py +0 -0
  512. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/billing/charges.py +0 -0
  513. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/billing/retry.py +0 -0
  514. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/__init__.py +0 -0
  515. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/ops/__init__.py +0 -0
  516. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/ops/repo_cleanup.py +0 -0
  517. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/ops/serving_resources.py +0 -0
  518. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/__init__.py +0 -0
  519. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/blob_envs.py +0 -0
  520. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/checkpoints.py +0 -0
  521. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/env_files.py +0 -0
  522. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/environment_registry.py +0 -0
  523. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/envs.py +0 -0
  524. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/projects.py +0 -0
  525. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/domain/registry/runs.py +0 -0
  526. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/__init__.py +0 -0
  527. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/auth.py +0 -0
  528. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/deployment_jobs.py +0 -0
  529. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/deployment_state.py +0 -0
  530. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/deps.py +0 -0
  531. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/internal_client.py +0 -0
  532. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/locks.py +0 -0
  533. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/platform/plane_lease.py +0 -0
  534. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/__init__.py +0 -0
  535. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/adapter_download.py +0 -0
  536. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/custom.py +0 -0
  537. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/env_files.py +0 -0
  538. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/envs.py +0 -0
  539. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/meta.py +0 -0
  540. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving.py +0 -0
  541. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving_chat.py +0 -0
  542. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving_completion.py +0 -0
  543. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving_errors.py +0 -0
  544. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving_revisions.py +0 -0
  545. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/server/routes/serving_smoke.py +0 -0
  546. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/__init__.py +0 -0
  547. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/app/__init__.py +0 -0
  548. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/app/modal_app.py +0 -0
  549. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/app/timeouts.py +0 -0
  550. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/__init__.py +0 -0
  551. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/__init__.py +0 -0
  552. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/autoscaling.py +0 -0
  553. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/client.py +0 -0
  554. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/events.py +0 -0
  555. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/http.py +0 -0
  556. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/modal_app.py +0 -0
  557. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/render.py +0 -0
  558. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/retries.py +0 -0
  559. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/app/rollout.py +0 -0
  560. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/contract/__init__.py +0 -0
  561. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/contract/config.py +0 -0
  562. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/contract/errors.py +0 -0
  563. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/contract/protocol.py +0 -0
  564. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/contract/tokenizer.py +0 -0
  565. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/native/__init__.py +0 -0
  566. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/native/engram_transport.py +0 -0
  567. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/native/image.py +0 -0
  568. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/native/patches.py +0 -0
  569. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/native/transport.py +0 -0
  570. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/__init__.py +0 -0
  571. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/bridge.py +0 -0
  572. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/kernel_cache.py +0 -0
  573. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/prefill_scheduler.py +0 -0
  574. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/prefix_cache.py +0 -0
  575. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/provenance.py +0 -0
  576. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/routing.py +0 -0
  577. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/snapshots.py +0 -0
  578. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/tiered_cache.py +0 -0
  579. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/warmup.py +0 -0
  580. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/deepinfer/runtime/worker.py +0 -0
  581. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/promotion/__init__.py +0 -0
  582. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/promotion/accounting_smoke_test.py +0 -0
  583. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/promotion/canary.py +0 -0
  584. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/promotion/evidence.py +0 -0
  585. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/promotion/gate.py +0 -0
  586. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/__init__.py +0 -0
  587. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/accounting/__init__.py +0 -0
  588. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/accounting/usage.py +0 -0
  589. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/accounting/usage_facts.py +0 -0
  590. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/accounting/usage_outbox.py +0 -0
  591. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/accounting/usage_retry.py +0 -0
  592. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/__init__.py +0 -0
  593. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/boot.py +0 -0
  594. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/errors.py +0 -0
  595. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/generation.py +0 -0
  596. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/hub.py +0 -0
  597. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/lora_engine.py +0 -0
  598. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/lora_entries.py +0 -0
  599. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/reasoning_usage.py +0 -0
  600. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/support.py +0 -0
  601. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/text_tokenizer.py +0 -0
  602. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/engine/warmup.py +0 -0
  603. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/__init__.py +0 -0
  604. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/adapter_routes.py +0 -0
  605. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/authorization_transport.py +0 -0
  606. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/body_limit.py +0 -0
  607. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/context.py +0 -0
  608. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/headers.py +0 -0
  609. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/inference_routes.py +0 -0
  610. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/key_rate_limit.py +0 -0
  611. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/rate_limit.py +0 -0
  612. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/router.py +0 -0
  613. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/routing.py +0 -0
  614. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/http/stream_response.py +0 -0
  615. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/__init__.py +0 -0
  616. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/cache_namespace.py +0 -0
  617. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/multimodal.py +0 -0
  618. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/openai_request.py +0 -0
  619. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/openai_stream.py +0 -0
  620. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/provenance.py +0 -0
  621. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/requests.py +0 -0
  622. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/responses.py +0 -0
  623. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/schemas.py +0 -0
  624. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/streaming.py +0 -0
  625. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/io/structured_outputs.py +0 -0
  626. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/__init__.py +0 -0
  627. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/access.py +0 -0
  628. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/lookup.py +0 -0
  629. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/persisted_columns.py +0 -0
  630. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/persistence.py +0 -0
  631. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/registration.py +0 -0
  632. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/registry.py +0 -0
  633. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/settings.py +0 -0
  634. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/supabase_rest.py +0 -0
  635. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/store/undeploy.py +0 -0
  636. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/stream_channel/__init__.py +0 -0
  637. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/stream_channel/_tasks.py +0 -0
  638. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/stream_channel/client.py +0 -0
  639. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/stream_channel/engine.py +0 -0
  640. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/serving/src/stream_channel/protocol.py +0 -0
  641. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/snapshot/__init__.py +0 -0
  642. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/flash/snapshot/archive.py +0 -0
  643. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/benchmark_router_resources.py +0 -0
  644. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/build_dev_dist.py +0 -0
  645. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_dev_release.py +0 -0
  646. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_file_size.py +0 -0
  647. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_function_size.py +0 -0
  648. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_rollout_identity_actor.py +0 -0
  649. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_source_layout.py +0 -0
  650. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/check_verl_pin_exists.py +0 -0
  651. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/fixtures/custom_algorithm.py +0 -0
  652. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/fixtures/modal_environment/dataset/train.jsonl +0 -0
  653. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/fixtures/modal_environment/environment.py +0 -0
  654. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/fixtures/modal_environment/evaluations.py +0 -0
  655. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/qualify_serving_profile.py +0 -0
  656. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/smoke_custom_training.py +0 -0
  657. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/smoke_modal_sft.py +0 -0
  658. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/scripts/smoke_modal_training.py +0 -0
  659. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/serve_launch.py +0 -0
  660. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/__init__.py +0 -0
  661. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/__init__.py +0 -0
  662. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/billing_precheck.py +0 -0
  663. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/chat_provenance.py +0 -0
  664. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/chat_transport.py +0 -0
  665. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/deployments.py +0 -0
  666. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/managed_chat.py +0 -0
  667. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/modal.py +0 -0
  668. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/profile.py +0 -0
  669. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/runner.py +0 -0
  670. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/server_api_plugin.py +0 -0
  671. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/source_snapshot.py +0 -0
  672. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/specs.py +0 -0
  673. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/_helpers/wire_headers.py +0 -0
  674. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/capture_image_sft_processor_oracle.py +0 -0
  675. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/capture_qwen38_27b_metadata.py +0 -0
  676. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/conftest.py +0 -0
  677. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  678. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  679. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  680. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  681. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  682. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  683. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/live/__init__.py +0 -0
  684. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/live/conftest.py +0 -0
  685. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/live/test_sft_thinking_render_live.py +0 -0
  686. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/checkpoint_fixtures.py +0 -0
  687. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/conftest.py +0 -0
  688. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_adapter_hub.py +0 -0
  689. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_artifact_protections.py +0 -0
  690. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_authorization_rollout.py +0 -0
  691. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_authorization_transport.py +0 -0
  692. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_base_model_serving.py +0 -0
  693. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_chat_auth.py +0 -0
  694. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_chat_authorizer.py +0 -0
  695. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_checkpoint_fingerprint_validation.py +0 -0
  696. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  697. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_checkpoint_model_validation.py +0 -0
  698. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_checkpoint_revocation.py +0 -0
  699. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer.py +0 -0
  700. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_autoscaling.py +0 -0
  701. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_deadline.py +0 -0
  702. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_hosted.py +0 -0
  703. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_http_deadline.py +0 -0
  704. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_kernel_cache.py +0 -0
  705. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_latency.py +0 -0
  706. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_optimizations.py +0 -0
  707. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_parallel.py +0 -0
  708. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_prefill_scheduler.py +0 -0
  709. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_provenance.py +0 -0
  710. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_retention.py +0 -0
  711. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_retries.py +0 -0
  712. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_rollout.py +0 -0
  713. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_routing.py +0 -0
  714. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_deepinfer_tiering.py +0 -0
  715. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_engine_error_status.py +0 -0
  716. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_fp8_config.py +0 -0
  717. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_immutable_engine.py +0 -0
  718. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_immutable_revisions.py +0 -0
  719. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_immutable_schemas.py +0 -0
  720. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_inference_duration.py +0 -0
  721. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_internal_header_integrity.py +0 -0
  722. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_key_rate_limit.py +0 -0
  723. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_key_rate_limit_review.py +0 -0
  724. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_kv_namespace.py +0 -0
  725. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_latency_admission.py +0 -0
  726. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_mirror_sampling_parity.py +0 -0
  727. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_modal_deploy_identity.py +0 -0
  728. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_modal_image_paths.py +0 -0
  729. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_multimodal.py +0 -0
  730. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_openai_stream_options.py +0 -0
  731. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_persistence.py +0 -0
  732. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_pre_first_disconnect.py +0 -0
  733. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_promotion_accounting_smoke.py +0 -0
  734. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_promotion_canary.py +0 -0
  735. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_promotion_evidence.py +0 -0
  736. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_promotion_gate.py +0 -0
  737. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_qwen_warmup.py +0 -0
  738. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_rate_limit.py +0 -0
  739. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_reasoning_usage.py +0 -0
  740. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_registration_endpoint.py +0 -0
  741. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_registry.py +0 -0
  742. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_registry_coverage.py +0 -0
  743. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_request_body_limit.py +0 -0
  744. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_router.py +0 -0
  745. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_router_coverage.py +0 -0
  746. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_router_edge_coverage.py +0 -0
  747. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_schemas_coverage.py +0 -0
  748. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_serve_reasoning_split.py +0 -0
  749. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_serve_structured_outputs.py +0 -0
  750. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_serve_thinking.py +0 -0
  751. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_settings.py +0 -0
  752. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_stream_channel.py +0 -0
  753. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_stream_response_disconnect.py +0 -0
  754. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_stream_wait_cleanup.py +0 -0
  755. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_structured_outputs.py +0 -0
  756. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_structured_outputs_coverage.py +0 -0
  757. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_supabase_rest_coverage.py +0 -0
  758. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_token_prefix_cache.py +0 -0
  759. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_usage_delivery_concurrency.py +0 -0
  760. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_usage_integrity.py +0 -0
  761. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_usage_outbox.py +0 -0
  762. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving/test_usage_reporter.py +0 -0
  763. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving_conformance/__init__.py +0 -0
  764. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving_conformance/conftest.py +0 -0
  765. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/serving_conformance/test_contract.py +0 -0
  766. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_accounting_coverage.py +0 -0
  767. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_adapter_download.py +0 -0
  768. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_adapter_shard_completeness.py +0 -0
  769. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_agent_flash_cli_contract.py +0 -0
  770. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_algorithms.py +0 -0
  771. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_allocator.py +0 -0
  772. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_authenticated_redirects.py +0 -0
  773. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_azure_artifacts.py +0 -0
  774. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_azure_environment_registry.py +0 -0
  775. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_backend_common.py +0 -0
  776. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_backend_jobspec_contract.py +0 -0
  777. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_background_supervisor.py +0 -0
  778. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_bake_kernel_cache.py +0 -0
  779. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_bake_sandbox_entry.py +0 -0
  780. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_base_environment_integrity.py +0 -0
  781. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_base_model_provenance.py +0 -0
  782. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_billing_response_integrity.py +0 -0
  783. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_billing_retry.py +0 -0
  784. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_bootstrap_process_groups.py +0 -0
  785. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_bootstrap_reentry.py +0 -0
  786. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_bootstrap_worker_cleanup.py +0 -0
  787. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_build_context_contract.py +0 -0
  788. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cache_admission.py +0 -0
  789. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cache_retention.py +0 -0
  790. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cache_scheduler.py +0 -0
  791. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_capture_qwen38_metadata.py +0 -0
  792. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_catalog_consistency.py +0 -0
  793. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_catalog_only_models.py +0 -0
  794. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_charge_pricing.py +0 -0
  795. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_chat_foundations.py +0 -0
  796. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_chat_stop_tokens.py +0 -0
  797. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_chat_worker_isolation.py +0 -0
  798. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_cancellation.py +0 -0
  799. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_deployment_inventory_api.py +0 -0
  800. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_deployments.py +0 -0
  801. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_lifecycle.py +0 -0
  802. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_listing_integrity.py +0 -0
  803. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_storage_overlap.py +0 -0
  804. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoint_transport.py +0 -0
  805. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_checkpoints.py +0 -0
  806. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_ci_sharding.py +0 -0
  807. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_commands.py +0 -0
  808. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_commands_coverage.py +0 -0
  809. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_credential_shadowing.py +0 -0
  810. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_errors.py +0 -0
  811. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_estimate.py +0 -0
  812. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_gpus_flag.py +0 -0
  813. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_help.py +0 -0
  814. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_main_coverage.py +0 -0
  815. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_managed.py +0 -0
  816. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_render_coverage.py +0 -0
  817. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_render_theme.py +0 -0
  818. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_serve_deploy.py +0 -0
  819. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_serve_status.py +0 -0
  820. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_serve_undeploy.py +0 -0
  821. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_traces.py +0 -0
  822. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cli_wandb_warning.py +0 -0
  823. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_client.py +0 -0
  824. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_client_deadline_integrity.py +0 -0
  825. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_client_import_purity.py +0 -0
  826. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_client_server_integration.py +0 -0
  827. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_client_stream_reads.py +0 -0
  828. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_compact_checkpoint.py +0 -0
  829. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_config_env_vars.py +0 -0
  830. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_config_overrides.py +0 -0
  831. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_console_upload.py +0 -0
  832. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_controlled_experiment_repairs.py +0 -0
  833. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_analytical.py +0 -0
  834. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_currency.py +0 -0
  835. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_equation.py +0 -0
  836. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_estimate.py +0 -0
  837. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_hardware.py +0 -0
  838. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cost_models.py +0 -0
  839. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cpu_checkpoint_handoff.py +0 -0
  840. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_cpu_checkpoint_upload_retry.py +0 -0
  841. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_checkpoints.py +0 -0
  842. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_client.py +0 -0
  843. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_gpu_selection.py +0 -0
  844. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_gradients.py +0 -0
  845. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_managed.py +0 -0
  846. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_session.py +0 -0
  847. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_custom_worker.py +0 -0
  848. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_customer_serving_contract.py +0 -0
  849. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_dataset_profile.py +0 -0
  850. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_deploy_latency.py +0 -0
  851. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_deployment_cleanup_resilience.py +0 -0
  852. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_deployment_generation_completion.py +0 -0
  853. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_deployment_registration_cleanup.py +0 -0
  854. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_dev_channel.py +0 -0
  855. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_dev_publish_decision.py +0 -0
  856. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_disk_gb.py +0 -0
  857. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_cache_evict.py +0 -0
  858. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_delete.py +0 -0
  859. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_download.py +0 -0
  860. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_download_api.py +0 -0
  861. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_evaluations.py +0 -0
  862. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_list_api.py +0 -0
  863. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_list_cli.py +0 -0
  864. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_list_registry.py +0 -0
  865. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_no_install.py +0 -0
  866. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_publish.py +0 -0
  867. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_pull.py +0 -0
  868. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_pull_coverage.py +0 -0
  869. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_pull_loader_coverage.py +0 -0
  870. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_pull_managed_control_plane.py +0 -0
  871. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_push.py +0 -0
  872. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_rate_limit_resolve.py +0 -0
  873. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_ref_pinning.py +0 -0
  874. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_env_test.py +0 -0
  875. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_environment_cache_integrity.py +0 -0
  876. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_environment_publish_integrity.py +0 -0
  877. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_envs_coverage.py +0 -0
  878. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_export.py +0 -0
  879. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_flash_mvp.py +0 -0
  880. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_flashinfer_aot_cache.py +0 -0
  881. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_flashinfer_cache_dirs.py +0 -0
  882. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_freesolo_api_transport.py +0 -0
  883. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_fused_expert_warmstart.py +0 -0
  884. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_generation_eos.py +0 -0
  885. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_github_urlopen_retry.py +0 -0
  886. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_gpu_type_single_field.py +0 -0
  887. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_gpus.py +0 -0
  888. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_checkpoint_durability.py +0 -0
  889. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_metric_stream.py +0 -0
  890. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_params.py +0 -0
  891. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_resident_sizing.py +0 -0
  892. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_reward_batching.py +0 -0
  893. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_reward_context.py +0 -0
  894. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_rollout_contract.py +0 -0
  895. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_grpo_rollout_identity.py +0 -0
  896. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_health_liveness.py +0 -0
  897. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_heartbeat_startup_cleanup.py +0 -0
  898. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_hf_retry.py +0 -0
  899. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_hosted_adapter_admission.py +0 -0
  900. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_image_environment_capability.py +0 -0
  901. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_image_incremental_processor.py +0 -0
  902. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_image_sft_markers.py +0 -0
  903. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_image_sft_processor_parity.py +0 -0
  904. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_image_tokens.py +0 -0
  905. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_infisical_secrets.py +0 -0
  906. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_instance_bootstrap_coverage.py +0 -0
  907. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_internal_client.py +0 -0
  908. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_kernel_bake_build_contracts.py +0 -0
  909. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_kernel_cache.py +0 -0
  910. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_kernel_cache_promotion.py +0 -0
  911. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_kernel_fingerprint.py +0 -0
  912. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_kv_util.py +0 -0
  913. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_local_credential_integrity.py +0 -0
  914. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_logging.py +0 -0
  915. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_login_perms.py +0 -0
  916. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_lora_rank_coverage.py +0 -0
  917. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_lora_rank_nested_rung.py +0 -0
  918. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_lora_rank_preflight.py +0 -0
  919. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_lora_targeting.py +0 -0
  920. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_lora_targeting_pinned_verl.py +0 -0
  921. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_managed_config_fields.py +0 -0
  922. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_managed_hf_repo.py +0 -0
  923. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_metrics_schema_agent_contract.py +0 -0
  924. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_mig_guard.py +0 -0
  925. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_mirror_sampling_parity.py +0 -0
  926. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_api_loop.py +0 -0
  927. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_prefetch_snapshot.py +0 -0
  928. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_provider.py +0 -0
  929. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_startup.py +0 -0
  930. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_training_lifecycle.py +0 -0
  931. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_modal_weight_warm.py +0 -0
  932. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_multi_gpu_gate.py +0 -0
  933. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_multimodal_boundary_integrity.py +0 -0
  934. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_multimodal_training.py +0 -0
  935. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_named_reward_metrics.py +0 -0
  936. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_notify_tests_repo.py +0 -0
  937. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_offline_http.py +0 -0
  938. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_oom_escalate_gpu.py +0 -0
  939. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_orchestrator_flash.py +0 -0
  940. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_packing.py +0 -0
  941. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_packing_coverage.py +0 -0
  942. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_persisted_spec_envelope.py +0 -0
  943. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_plane_lease.py +0 -0
  944. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_poll_helpers.py +0 -0
  945. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_preflight.py +0 -0
  946. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_processor_chat_template.py +0 -0
  947. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_projects.py +0 -0
  948. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_prompt_budget.py +0 -0
  949. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_removed_algorithms.py +0 -0
  950. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_removed_training_settings.py +0 -0
  951. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_replay_guard.py +0 -0
  952. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_repo_cleanup.py +0 -0
  953. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_resolve_params_b.py +0 -0
  954. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_resume_on_retry.py +0 -0
  955. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_retry_decision.py +0 -0
  956. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_reward_server_cleanup.py +0 -0
  957. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_rl_train.py +0 -0
  958. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_rollout_engine_prompt.py +0 -0
  959. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_rollout_samples.py +0 -0
  960. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_run_log_integrity.py +0 -0
  961. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_run_registry_lifecycle.py +0 -0
  962. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_runmgmt.py +0 -0
  963. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_runtime_capsule.py +0 -0
  964. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_runtime_credentials.py +0 -0
  965. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_runtime_secret_integrity.py +0 -0
  966. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_schema_boundary_integrity.py +0 -0
  967. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve.py +0 -0
  968. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_bootstrap_http.py +0 -0
  969. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_launch.py +0 -0
  970. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_manifest.py +0 -0
  971. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_materialize.py +0 -0
  972. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_packaging.py +0 -0
  973. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_app_progress.py +0 -0
  974. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_cache_resource_cleanup.py +0 -0
  975. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_chat_transport.py +0 -0
  976. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_control.py +0 -0
  977. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_modal_contract_lock.py +0 -0
  978. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_modal_sdk.py +0 -0
  979. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  980. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_modal_teardown_identity.py +0 -0
  981. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_profile_qualification.py +0 -0
  982. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_profiles.py +0 -0
  983. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_provisioning_common.py +0 -0
  984. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_provisioning_modal.py +0 -0
  985. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_reasoning_content.py +0 -0
  986. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_resolve_provenance.py +0 -0
  987. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_runtime_adapters.py +0 -0
  988. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_runtime_engine.py +0 -0
  989. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_runtime_hub.py +0 -0
  990. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_runtime_package.py +0 -0
  991. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serve_runtime_types.py +0 -0
  992. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_api.py +0 -0
  993. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_app_coverage.py +0 -0
  994. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_auth_singleflight.py +0 -0
  995. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_billing.py +0 -0
  996. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_checkpoints_coverage.py +0 -0
  997. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_db.py +0 -0
  998. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_envs_coverage.py +0 -0
  999. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_locks_coverage.py +0 -0
  1000. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_managed_chat_requests.py +0 -0
  1001. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_serving_resources.py +0 -0
  1002. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_server_standalone.py +0 -0
  1003. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_conformance_gate.py +0 -0
  1004. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_context_preflight.py +0 -0
  1005. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_contract.py +0 -0
  1006. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_input_integrity.py +0 -0
  1007. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_schema_coverage.py +0 -0
  1008. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_serving_unavailable_errors.py +0 -0
  1009. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_batch_prefetch.py +0 -0
  1010. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_cancel_profile_pricing.py +0 -0
  1011. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_chunked_nll.py +0 -0
  1012. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_cost_reduction.py +0 -0
  1013. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_dataset_lazy_images.py +0 -0
  1014. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_dataset_nulls.py +0 -0
  1015. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_example_selection.py +0 -0
  1016. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_gc_off.py +0 -0
  1017. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_max_context.py +0 -0
  1018. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_memory_policy.py +0 -0
  1019. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_step_floor.py +0 -0
  1020. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_tools.py +0 -0
  1021. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_train.py +0 -0
  1022. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_warmup_schedule.py +0 -0
  1023. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_sft_workload.py +0 -0
  1024. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_smoke_content_integrity.py +0 -0
  1025. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_source_attestation_flow.py +0 -0
  1026. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_source_layout.py +0 -0
  1027. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_source_snapshot.py +0 -0
  1028. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_spec_and_validation.py +0 -0
  1029. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_spec_contract_bytes.py +0 -0
  1030. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_staged_environment.py +0 -0
  1031. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_status_reporting.py +0 -0
  1032. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_status_updates.py +0 -0
  1033. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_step_floor.py +0 -0
  1034. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_step_metrics.py +0 -0
  1035. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_step_timing.py +0 -0
  1036. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_structured_option_safety.py +0 -0
  1037. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_structured_outputs.py +0 -0
  1038. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_structured_runtime_options.py +0 -0
  1039. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_submission_outcome.py +0 -0
  1040. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_terminal_artifacts.py +0 -0
  1041. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_thinking_config.py +0 -0
  1042. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_thinking_tool_calls.py +0 -0
  1043. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_tool_call_exact_parsing.py +0 -0
  1044. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_tool_scalar_unions.py +0 -0
  1045. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_train_context_preflight.py +0 -0
  1046. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_training_controls.py +0 -0
  1047. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_training_phases.py +0 -0
  1048. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_transfer_queue_init.py +0 -0
  1049. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_type_comment_prose.py +0 -0
  1050. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_upstream_rollout_contract.py +0 -0
  1051. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_upstream_runtime_policy.py +0 -0
  1052. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_upstream_verl_contract.py +0 -0
  1053. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_verifiers.py +0 -0
  1054. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_verl_checkpoint_export.py +0 -0
  1055. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_verl_child_plugins.py +0 -0
  1056. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_verl_silence_watchdog.py +0 -0
  1057. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_version.py +0 -0
  1058. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_versioned_rollout_contract.py +0 -0
  1059. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1060. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_vllm_moe_lora_backport.py +0 -0
  1061. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_vram_architecture.py +0 -0
  1062. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_wandb_link.py +0 -0
  1063. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_wandb_naming.py +0 -0
  1064. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_warmstart_adapter_download.py +0 -0
  1065. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_warmstart_cross_repo.py +0 -0
  1066. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_warmstart_error_attribution.py +0 -0
  1067. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_warmstart_image_adapters.py +0 -0
  1068. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_watchdog_startup_cleanup.py +0 -0
  1069. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_weight_cache.py +0 -0
  1070. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_dryrun.py +0 -0
  1071. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_hardexit.py +0 -0
  1072. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_image.py +0 -0
  1073. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_init_heartbeat.py +0 -0
  1074. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_stack.py +0 -0
  1075. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_worker_thinking.py +0 -0
  1076. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_workflow_contracts.py +0 -0
  1077. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_workload_profile.py +0 -0
  1078. {freesolo_flash_dev-1.4.16 → freesolo_flash_dev-1.4.18}/tests/test_zero2_sharding_gate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.4.16
3
+ Version: 1.4.18
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO) 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
@@ -50,6 +50,7 @@ class TorchBackend:
50
50
  return validate_operation(self, operation, arguments)
51
51
 
52
52
  def execute(self, operation, arguments):
53
+ _ensure_cuda_headroom()
53
54
  return getattr(self, operation)(**arguments)
54
55
 
55
56
  def _tensor(self, tokens):
@@ -271,6 +272,35 @@ class TorchBackend:
271
272
  return {}
272
273
 
273
274
 
275
+ # cuBLAS handle/workspace creation and Triton kernels allocate outside PyTorch's caching
276
+ # allocator, so they need memory the driver can still hand out.
277
+ CUDA_HEADROOM_BYTES = 6 * 1024**3
278
+
279
+
280
+ def _ensure_cuda_headroom(min_free_bytes=CUDA_HEADROOM_BYTES):
281
+ """Return PyTorch's unused cached blocks to the driver when free GPU memory runs low.
282
+
283
+ A session's operations see many sequence lengths, so cached blocks rarely fit the next
284
+ request and the caching allocator keeps reserving: a resumed Qwen3.5-9B DPO session held
285
+ ~78 GiB reserved with only ~19 GiB allocated. The first backward then needed memory outside
286
+ that cache (cuBLAS handle creation, Triton kernels) and failed with CUBLAS_STATUS_ALLOC_FAILED
287
+ / "Triton Error [CUDA]: out of memory" at <1 GiB free. Releasing the cache before an operation
288
+ restores that headroom; it changes no tensors. Best effort, a no-op without CUDA.
289
+ """
290
+ try:
291
+ import torch
292
+
293
+ if not torch.cuda.is_available():
294
+ return False
295
+ free, _ = torch.cuda.mem_get_info()
296
+ if free >= min_free_bytes:
297
+ return False
298
+ torch.cuda.empty_cache()
299
+ return True
300
+ except Exception:
301
+ return False
302
+
303
+
274
304
  def _enable_checkpointing(model):
275
305
  """Checkpoint catalog models without active dropout or stateful normalization.
276
306
 
@@ -10,7 +10,7 @@ import uuid
10
10
  from pathlib import Path
11
11
 
12
12
  from flash.client import client_from_config
13
- from flash.client.http import ApiError, ClientError
13
+ from flash.client.http import ApiError, ClientError, RequestTimeoutError, ServiceUnreachableError
14
14
  from flash.client.specs import spec_payload
15
15
  from flash.custom.async_client import AsyncTrainingClient
16
16
  from flash.custom.client import TrainingClient
@@ -64,15 +64,16 @@ _ATTACH_RETRY_MAX_SECONDS = 30.0
64
64
  def _transient_attach_error(exc):
65
65
  """Whether a failed attach lookup can be retried rather than ending the run.
66
66
 
67
- 425 is the documented "GPU still provisioning" answer. A 5xx or a transport failure (no
68
- status) means the control plane could not answer this time -- for example a slow Modal
67
+ 425 is the documented "GPU still provisioning" answer. A 5xx or a typed transport failure
68
+ means the control plane could not answer this time -- for example a slow Modal
69
69
  tunnel lookup or an overloaded plane -- not that the run is gone. Treating those as fatal made
70
- run_custom cancel healthy runs. Every other 4xx (ended run, auth, ownership) stays fatal.
70
+ run_custom cancel healthy runs. Every other 4xx (ended run, auth, ownership) and untyped
71
+ ClientError (such as a malformed successful response) stays fatal.
71
72
  """
72
73
  if isinstance(exc, ApiError):
73
74
  status = exc.status or 0
74
75
  return status == 425 or status >= 500
75
- return isinstance(exc, ClientError)
76
+ return isinstance(exc, (RequestTimeoutError, ServiceUnreachableError))
76
77
 
77
78
 
78
79
  def connect(api, run_id, *, timeout=1200, sleep=time.sleep, clock=time.monotonic):
@@ -245,6 +245,19 @@ def _unique_glue_probe(messages: list[dict]) -> str:
245
245
  return probe
246
246
 
247
247
 
248
+ # Chat templates such as Qwen3.5's raise "No user query found in messages" when a conversation
249
+ # has no ordinary user turn; tool results are deliberately not one. Glue is the text after the
250
+ # probe, which the turns before the probe do not change, so a tool-only reply is rendered after
251
+ # this anchor to give the template the query it requires.
252
+ _GLUE_ANCHOR = {"role": "user", "content": "Continue."}
253
+
254
+
255
+ def _glue_conversation(probe: str, messages: list[dict]) -> list[dict]:
256
+ """the probe conversation: anchored only when the reply itself carries no user turn."""
257
+ head = [] if any(message.get("role") == "user" for message in messages) else [_GLUE_ANCHOR]
258
+ return [*head, {"role": "assistant", "content": probe}, *messages]
259
+
260
+
248
261
  def dedup_seam_terminator(response_ids: list[int], glue_ids: list[int]) -> list[int]:
249
262
  """keep the sampled terminator and drop the duplicate leading glue copy."""
250
263
  if response_ids and glue_ids and response_ids[-1] == glue_ids[0]:
@@ -269,7 +282,7 @@ class EnvGlueTokenizer:
269
282
  return list(cached)
270
283
  probe = _unique_glue_probe(messages)
271
284
  text = self.tokenizer.apply_chat_template(
272
- _messages_for_chat_template([{"role": "assistant", "content": probe}, *messages]),
285
+ _messages_for_chat_template(_glue_conversation(probe, messages)),
273
286
  add_generation_prompt=True,
274
287
  tokenize=False,
275
288
  enable_thinking=self.thinking,
@@ -522,7 +535,7 @@ def _processor_glue_ids(
522
535
  structured = validate_structured_messages(messages, source="environment reply")
523
536
  probe = _unique_glue_probe(structured)
524
537
  rendered = processor.apply_chat_template(
525
- [{"role": "assistant", "content": probe}, *structured],
538
+ _glue_conversation(probe, structured),
526
539
  tokenize=False,
527
540
  add_generation_prompt=True,
528
541
  **apply_chat_template_kwargs,
@@ -135,10 +135,12 @@ def build_worker_env(
135
135
  # leaves rollout.enable_sleep_mode defaulted True, so the engine always builds a
136
136
  # CuMemAllocator -- which asserts outright on "expandable_segments:True"
137
137
  # (vllm/device_allocator/cumem.py:132, pytorch#147851). Both therefore take the
138
- # non-expandable conf.
138
+ # non-expandable conf. SFT and custom runs never build a vLLM engine (custom samples with
139
+ # HF generate), so they take expandable segments: a custom session's varied sequence lengths
140
+ # otherwise fragment the caching allocator until cuBLAS/Triton allocations outside it fail.
139
141
  _alloc_conf = (
140
142
  "expandable_segments:True"
141
- if str(getattr(spec, "algorithm", "")).lower() == "sft"
143
+ if str(getattr(spec, "algorithm", "")).lower() in ("sft", "custom")
142
144
  else "garbage_collection_threshold:0.8,max_split_size_mb:256"
143
145
  )
144
146
  env: dict[str, str] = {
@@ -12,6 +12,7 @@ from __future__ import annotations
12
12
 
13
13
  import logging
14
14
  import os
15
+ from collections.abc import Callable
15
16
  from dataclasses import dataclass
16
17
  from functools import partial
17
18
 
@@ -256,11 +257,13 @@ def submit_job(
256
257
  prepared_job: PreparedJob | None = None,
257
258
  supervisor: Supervisor | None = None,
258
259
  queue_only: bool = False,
260
+ on_persisted: Callable[[str], None] | None = None,
259
261
  ) -> state.RunStatus:
260
262
  """Submit a prepared job, allocating resources only outside dry-run mode.
261
263
 
262
264
  ``queue_only`` persists the run as queued without launching it, for a control plane that does
263
- not hold the plane lease; the holder's recovery scan launches it.
265
+ not hold the plane lease; the holder's recovery scan launches it. ``on_persisted``
266
+ durably acknowledges admission after status/secrets are saved, before dispatch.
264
267
  """
265
268
  if prepared_job is not None:
266
269
  prepared = prepared_job
@@ -273,6 +276,7 @@ def submit_job(
273
276
  )
274
277
  kwargs = {
275
278
  "dry_run": dry_run,
279
+ "on_persisted": on_persisted,
276
280
  "runtime_secrets": runtime_secrets,
277
281
  "billing_context": billing_context,
278
282
  "platform_context": platform_context,
@@ -298,6 +302,7 @@ def _submit_prepared_job(
298
302
  billing_context: dict | None,
299
303
  platform_context: dict | None,
300
304
  dispatch=None,
305
+ on_persisted: Callable[[str], None] | None = None,
301
306
  ) -> state.RunStatus:
302
307
  public_spec = prepared.public_spec
303
308
  worker_spec = prepared.worker_spec
@@ -361,6 +366,8 @@ def _submit_prepared_job(
361
366
  if not os.path.exists(state.runs_file_path(public_spec.run_id, ".json")):
362
367
  runtime_credentials.discard(public_spec.run_id)
363
368
  raise
369
+ if on_persisted is not None:
370
+ on_persisted(status.run_id)
364
371
  reporting._report_status(status)
365
372
  if dry_run:
366
373
  # A dry-run persists a state=dry_run record (retrievable, listable, and stageable for a
@@ -224,6 +224,7 @@ def create_app():
224
224
  meta,
225
225
  runs,
226
226
  serving,
227
+ submissions,
227
228
  )
228
229
  except ImportError as exc:
229
230
  raise RuntimeError(_SERVER_EXTRAS_HINT) from exc
@@ -309,6 +310,7 @@ def create_app():
309
310
  app.include_router(envs.router)
310
311
  app.include_router(env_files.router)
311
312
  app.include_router(runs.router)
313
+ app.include_router(submissions.router)
312
314
  app.include_router(custom.router)
313
315
  app.include_router(serving.router)
314
316
  app.include_router(adapter_download.router)
@@ -29,6 +29,16 @@ CREATE TABLE IF NOT EXISTS runs (
29
29
  created_at REAL NOT NULL
30
30
  );
31
31
  CREATE INDEX IF NOT EXISTS runs_key_idx ON runs(key_id);
32
+ CREATE TABLE IF NOT EXISTS run_submissions (
33
+ key_id INTEGER NOT NULL REFERENCES api_keys(id),
34
+ submission_id TEXT NOT NULL,
35
+ request_hash TEXT,
36
+ run_id TEXT NOT NULL UNIQUE,
37
+ accepted INTEGER NOT NULL DEFAULT 0,
38
+ cancelled INTEGER NOT NULL DEFAULT 0,
39
+ created_at REAL NOT NULL,
40
+ PRIMARY KEY (key_id, submission_id)
41
+ );
32
42
  """
33
43
 
34
44
 
@@ -344,3 +354,45 @@ def all_runs() -> list[dict]:
344
354
  with _connect() as conn:
345
355
  rows = conn.execute("SELECT run_id, key_id, kind, created_at FROM runs").fetchall()
346
356
  return [dict(r) for r in rows]
357
+
358
+
359
+ def reserve_submission(
360
+ key_id: int, submission_id: str, request_hash: str | None, run_id: str, *, cancelled=False
361
+ ) -> dict:
362
+ """Bind an owner-scoped logical submission to one run, durably before any launch."""
363
+ with _connect() as conn:
364
+ conn.execute(
365
+ "INSERT OR IGNORE INTO run_submissions "
366
+ "(key_id, submission_id, request_hash, run_id, created_at, cancelled) VALUES (?, ?, ?, ?, ?, ?)",
367
+ (key_id, submission_id, request_hash, run_id, time.time(), int(cancelled)),
368
+ )
369
+ if cancelled:
370
+ conn.execute(
371
+ "UPDATE run_submissions SET cancelled = 1 WHERE key_id = ? AND submission_id = ?",
372
+ (key_id, submission_id),
373
+ )
374
+ row = conn.execute(
375
+ "SELECT * FROM run_submissions WHERE key_id = ? AND submission_id = ?",
376
+ (key_id, submission_id),
377
+ ).fetchone()
378
+ return dict(row)
379
+
380
+
381
+ def get_submission(key_id: int, submission_id: str) -> dict | None:
382
+ with _connect() as conn:
383
+ row = conn.execute(
384
+ "SELECT * FROM run_submissions WHERE key_id = ? AND submission_id = ?",
385
+ (key_id, submission_id),
386
+ ).fetchone()
387
+ return dict(row) if row else None
388
+
389
+
390
+ def submission_for_run(run_id: str) -> dict | None:
391
+ with _connect() as conn:
392
+ row = conn.execute("SELECT * FROM run_submissions WHERE run_id = ?", (run_id,)).fetchone()
393
+ return dict(row) if row else None
394
+
395
+
396
+ def accept_submission(run_id: str) -> None:
397
+ with _connect() as conn:
398
+ conn.execute("UPDATE run_submissions SET accepted = 1 WHERE run_id = ?", (run_id,))
@@ -18,6 +18,7 @@ from flash.core.spec import JobSpec
18
18
  from flash.runner.lifecycle.state import adapter_prefix, runs_file_path
19
19
  from flash.runner.lifecycle.status import get_status
20
20
  from flash.server.platform import db
21
+ from flash.server.platform.submission_admission import recovery_ready
21
22
 
22
23
  _log = logging.getLogger("flash.server")
23
24
 
@@ -263,6 +264,8 @@ def _start_handleless_resubmit(spec, expected_state: str) -> bool | None:
263
264
  )
264
265
  from flash.runner.supervise.lifecycle import _run_job_background
265
266
 
267
+ if not recovery_ready(spec.run_id):
268
+ return False
266
269
  try:
267
270
  status = get_status(spec.run_id)
268
271
  from flash.runner.lifecycle.runtime_credentials import restore
@@ -338,6 +341,8 @@ def _enqueue_resubmit(spec) -> bool:
338
341
  """Reserve execution capacity before acquiring any durable launch claim."""
339
342
  from flash.runner.lifecycle.status import source_snapshot_from_status
340
343
 
344
+ if not recovery_ready(spec.run_id):
345
+ return False
341
346
  try:
342
347
  status = get_status(spec.run_id)
343
348
  from flash.runner.lifecycle.runtime_credentials import restore
@@ -684,6 +689,12 @@ def _classify_recoverable_runs(
684
689
  _schedule_cleanup(status.run_id)
685
690
  if status.state not in _RECOVERABLE:
686
691
  continue
692
+ if not recovery_ready(status.run_id):
693
+ # A PUT replay/GET may briefly own the fence of an already-running job.
694
+ # Deferring recovery must not expose its live resources to orphan reaping.
695
+ if status.remote or status.cleanup_confirmed_remote:
696
+ active.add(status.run_id)
697
+ continue
687
698
  owner = current_supervisor()
688
699
  if any(owner.contains((kind, status.run_id)) for kind in ("run", "retry", "attach")):
689
700
  if status.remote or status.cleanup_confirmed_remote:
@@ -0,0 +1,62 @@
1
+ """Shared admission fence for HTTP submissions and restart recovery (no server extras)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import fcntl
6
+ import os
7
+ from contextlib import contextmanager
8
+
9
+ from flash.runner.lifecycle import state
10
+ from flash.server.platform import db
11
+
12
+
13
+ class SubmissionBusy(RuntimeError):
14
+ """Another process is still admitting or cancelling this submission."""
15
+
16
+
17
+ @contextmanager
18
+ def submission_lock(run_id: str):
19
+ # A slow owner cannot lose this fence to a timeout. The kernel releases on crash.
20
+ os.makedirs(state.RUNS_DIR, exist_ok=True)
21
+ fd = os.open(state.runs_file_path(run_id, ".submission.lock"), os.O_CREAT | os.O_RDWR, 0o600)
22
+ try:
23
+ try:
24
+ fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
25
+ except BlockingIOError:
26
+ raise SubmissionBusy(run_id) from None
27
+ yield
28
+ finally:
29
+ os.close(fd)
30
+
31
+
32
+ def recovery_ready(run_id: str) -> bool:
33
+ """Do not recover a status published by an unfinished submission.
34
+
35
+ Recovery may run on a different plane while PUT still owns the admission fence.
36
+ After a crash, the same fence lets recovery settle the durable cancellation intent
37
+ (using normal resource teardown) or finish acknowledgement before taking over.
38
+ Recheck at execution as well as classification: queued recovery tasks can be stale.
39
+ """
40
+ if db.submission_for_run(run_id) is None:
41
+ return True # Legacy POST runs have no submission admission protocol.
42
+ try:
43
+ with submission_lock(run_id):
44
+ row = db.submission_for_run(run_id)
45
+ if row is None:
46
+ raise RuntimeError("durable submission disappeared during recovery")
47
+ from flash.runner.lifecycle.status import get_status
48
+
49
+ try:
50
+ get_status(run_id)
51
+ except FileNotFoundError:
52
+ return False
53
+ if row["cancelled"]:
54
+ from flash.runner.supervise.deploy import cancel_run
55
+
56
+ cancel_run(run_id)
57
+ return False
58
+ if not row["accepted"]:
59
+ db.accept_submission(run_id)
60
+ return True
61
+ except SubmissionBusy:
62
+ return False
@@ -354,15 +354,22 @@ def create_run(
354
354
  key: Annotated[dict, Depends(require_key)],
355
355
  authorization: Annotated[str | None, Header()] = None,
356
356
  x_freesolo_org_id: Annotated[str | None, Header()] = None,
357
+ ):
358
+ return _create_run(payload, request, key, authorization, x_freesolo_org_id)
359
+
360
+
361
+ def _create_run(
362
+ payload, request, key, authorization, x_freesolo_org_id, *, run_id=None, on_persisted=None
357
363
  ):
358
364
  submission_started = False
365
+ reserved_identity = run_id is not None
359
366
  try:
360
367
  dry_run = _require_bool(payload, "dry_run", False)
361
368
  schema = _client_train_schema(payload)
362
369
  submitted = payload.get("spec")
363
370
  submitted_train = submitted.get("train") if isinstance(submitted, dict) else None
364
371
  try:
365
- spec = _parse_spec(payload, run_id=new_run_id())
372
+ spec = _parse_spec(payload, run_id=run_id or new_run_id())
366
373
  except HTTPException as exc:
367
374
  detail = _schema_disagreement_detail(exc, schema, submitted_train)
368
375
  if detail is None:
@@ -430,8 +437,12 @@ def create_run(
430
437
  estimate_usd=prepared.estimated_cost_usd,
431
438
  org_id=affordability_org_id,
432
439
  )
440
+ owner = db.run_owner(run_id)
441
+ if owner is None:
442
+ db.record_run(run_id, key["id"])
443
+ elif owner != key["id"] or not reserved_identity:
444
+ raise HTTPException(409, "run ownership conflict")
433
445
  submission_started = True
434
- db.record_run(run_id, key["id"])
435
446
  submit_kwargs = {
436
447
  "dry_run": dry_run,
437
448
  "background": True,
@@ -442,6 +453,8 @@ def create_run(
442
453
  # scan picks the queued run up (see flash.server.platform.plane_lease).
443
454
  "queue_only": getattr(request.app.state, "plane_standby", False),
444
455
  }
456
+ if on_persisted is not None:
457
+ submit_kwargs["on_persisted"] = on_persisted
445
458
  if runtime_secrets:
446
459
  submit_kwargs["runtime_secrets"] = runtime_secrets
447
460
  if billing_context:
@@ -0,0 +1,151 @@
1
+ """Durable, owner-scoped training submissions, addressed by a caller's idempotency key.
2
+
3
+ PUT /v1/run-submissions/{id} accepts the POST /v1/runs payload (paid runs only).
4
+ Persist a random ID before sending and reuse that ID and payload on every retry.
5
+ GET resolves the current job; DELETE cancels it or tombstones a not-yet-arrived intent.
6
+ Both return submission_id, run_id and state; run_id is null before admission.
7
+ A concurrent operation returns 409/Retry-After, payload conflicts 422, cancellations 410.
8
+
9
+ Bindings live in the control plane's durable SQLite store, alongside run ownership,
10
+ and never expire or disappear on job cancellation. IDs are scoped to the authenticated
11
+ key, not globally. Runtime secret values may rotate and are never stored in the mapping.
12
+ This contract depends on preserving the plane's existing shared durable state/lock volume;
13
+ it cannot recover a lost database. Legacy POST /v1/runs remains non-idempotent.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import hashlib
19
+ import json
20
+ import re
21
+ from contextlib import contextmanager
22
+ from typing import Annotated
23
+
24
+ from fastapi import APIRouter, Depends, Header, HTTPException, Request
25
+
26
+ from flash.runner.lifecycle import state, status
27
+ from flash.server.platform import db
28
+ from flash.server.platform.deps import require_key
29
+ from flash.server.platform.submission_admission import SubmissionBusy, submission_lock
30
+ from flash.server.routes import runs
31
+
32
+ router = APIRouter()
33
+
34
+
35
+ def _validate_id(submission_id: str) -> None:
36
+ if not re.fullmatch(r"[A-Za-z0-9_-]{16,128}", submission_id):
37
+ raise HTTPException(400, "submission ID must contain 16-128 letters, digits, '_' or '-'")
38
+
39
+
40
+ @contextmanager
41
+ def _submission_lock(run_id: str):
42
+ try:
43
+ with submission_lock(run_id):
44
+ yield
45
+ except SubmissionBusy:
46
+ raise HTTPException(
47
+ 409, "submission is in progress; retry the same ID", headers={"Retry-After": "2"}
48
+ ) from None
49
+
50
+
51
+ def _existing(row: dict) -> dict | None:
52
+ try:
53
+ result = status.get_status(row["run_id"]).to_dict()
54
+ except FileNotFoundError:
55
+ if row["accepted"]:
56
+ # A missing/corrupt status store is not permission to recreate paid work.
57
+ raise HTTPException(
58
+ 503, "accepted submission status unavailable; retry the same ID"
59
+ ) from None
60
+ return None
61
+ db.accept_submission(row["run_id"])
62
+ owner = db.run_owner(row["run_id"])
63
+ if owner is None:
64
+ # Ownership may have been deliberately removed to prevent unsafe recovery.
65
+ raise HTTPException(503, "accepted submission ownership unavailable")
66
+ if owner != row["key_id"]:
67
+ raise HTTPException(409, "submission ownership conflict")
68
+ return {**result, "submission_id": row["submission_id"]}
69
+
70
+
71
+ def _cancelled(row: dict) -> dict:
72
+ return {"submission_id": row["submission_id"], "state": "cancelled", "run_id": None}
73
+
74
+
75
+ @router.put("/v1/run-submissions/{submission_id}")
76
+ def submit(
77
+ submission_id: str,
78
+ payload: dict,
79
+ request: Request,
80
+ key: Annotated[dict, Depends(require_key)],
81
+ authorization: Annotated[str | None, Header()] = None,
82
+ x_freesolo_org_id: Annotated[str | None, Header()] = None,
83
+ ):
84
+ _validate_id(submission_id)
85
+ if payload.get("dry_run", False) is not False:
86
+ raise HTTPException(
87
+ 400, "idempotent submissions are for paid runs; preview with POST /v1/runs"
88
+ )
89
+ # Credentials can rotate without changing the logical job. Never persist secret values
90
+ # or hashes of low-entropy secrets. The spec still binds the requested secret names.
91
+ identity = {name: value for name, value in payload.items() if name != "runtime_secrets"}
92
+ identity.setdefault("dry_run", False)
93
+ identity["org_id"] = key.get("org_id") or x_freesolo_org_id
94
+ digest = hashlib.sha256(
95
+ json.dumps(identity, sort_keys=True, separators=(",", ":"), allow_nan=False).encode()
96
+ ).hexdigest()
97
+ row = db.reserve_submission(key["id"], submission_id, digest, state.new_run_id())
98
+ with _submission_lock(row["run_id"]):
99
+ row = db.get_submission(key["id"], submission_id)
100
+ if row["request_hash"] not in (None, digest):
101
+ raise HTTPException(422, "submission ID is already bound to a different request")
102
+ if row["cancelled"]:
103
+ raise HTTPException(410, "submission was cancelled; it will never create another run")
104
+ if result := _existing(row):
105
+ return result
106
+
107
+ def accepted(run_id):
108
+ db.accept_submission(run_id)
109
+ if db.get_submission(key["id"], submission_id)["cancelled"]:
110
+ status._update(run_id, "cancelled")
111
+ raise HTTPException(410, "submission was cancelled before dispatch")
112
+
113
+ result = runs._create_run(
114
+ payload,
115
+ request,
116
+ key,
117
+ authorization,
118
+ x_freesolo_org_id,
119
+ run_id=row["run_id"],
120
+ on_persisted=accepted,
121
+ )
122
+ db.accept_submission(row["run_id"])
123
+ return {**result, "submission_id": submission_id}
124
+
125
+
126
+ @router.get("/v1/run-submissions/{submission_id}")
127
+ def lookup(submission_id: str, key: Annotated[dict, Depends(require_key)]):
128
+ _validate_id(submission_id)
129
+ row = db.get_submission(key["id"], submission_id)
130
+ if row is None:
131
+ raise HTTPException(404, "unknown submission ID")
132
+ with _submission_lock(row["run_id"]):
133
+ row = db.get_submission(key["id"], submission_id)
134
+ if result := _existing(row):
135
+ return result
136
+ if row["cancelled"]:
137
+ return _cancelled(row)
138
+ return {"submission_id": submission_id, "run_id": None, "state": "submission_pending"}
139
+
140
+
141
+ @router.delete("/v1/run-submissions/{submission_id}")
142
+ def cancel(submission_id: str, request: Request, key: Annotated[dict, Depends(require_key)]):
143
+ _validate_id(submission_id)
144
+ # A cancellation arriving before a delayed PUT leaves a permanent tombstone.
145
+ row = db.reserve_submission(key["id"], submission_id, None, state.new_run_id(), cancelled=True)
146
+ with _submission_lock(row["run_id"]):
147
+ row = db.get_submission(key["id"], submission_id)
148
+ if _existing(row) is None:
149
+ return _cancelled(row)
150
+ result = runs.cancel(row["run_id"], request, key)
151
+ return {**result, "submission_id": submission_id}
@@ -64,7 +64,8 @@ SERVING_MODELS: list[dict[str, Any]] = [
64
64
  "max_cpu_loras": 4,
65
65
  "max_lora_rank": 64,
66
66
  "max_model_len": 262144,
67
- "max_num_seqs": 8,
67
+ # L4 sweep: 64 sequences improve short/4k throughput ~3x/~1.6x over eight.
68
+ "max_num_seqs": 64,
68
69
  "enforce_eager": False,
69
70
  "reasoning_parser": "qwen3",
70
71
  },
@@ -105,9 +106,9 @@ SERVING_MODELS: list[dict[str, Any]] = [
105
106
  "max_loras": 16,
106
107
  "max_lora_rank": 128, # rank-128 / 16 hot LoRAs (cheap on the 9 GiB FP8 9B); native 256k context.
107
108
  "max_model_len": 262144,
108
- # L40S throughput + rank-128/32k-prompt sweep qualified sixteen sequences.
109
- # Thirty-two 32k prompts exceed this tier's measured ~780k-token KV capacity.
110
- "max_num_seqs": 16,
109
+ # L40S: 64 improves short/4k throughput ~127%/~40% over sixteen and
110
+ # completes a full 64-request 32k-prompt rank-128 q_proj LoRA burst.
111
+ "max_num_seqs": 64,
111
112
  "enforce_eager": False,
112
113
  "reasoning_parser": "qwen3",
113
114
  },
@@ -117,8 +118,8 @@ SERVING_MODELS: list[dict[str, Any]] = [
117
118
  "image_input_limit": MAX_IMAGES_PER_CONVERSATION,
118
119
  "gpu": "H100",
119
120
  "engine": {
120
- "serve_model_id": "Qwen/Qwen3.5-9B-Base",
121
- "model_revision": "68c46c4b3498877f3ef123c856ecfde50c39f404",
121
+ # FP8 conversion of the pinned Base weights; never alias the Instruct checkpoint.
122
+ "model_revision": "b1a2cf5f5e7bb4ad786e206f834569be3a3d8aa9",
122
123
  "tokenizer_model": "Qwen/Qwen3.5-9B-Base",
123
124
  "tokenizer_revision": "68c46c4b3498877f3ef123c856ecfde50c39f404",
124
125
  "processor_revision": "68c46c4b3498877f3ef123c856ecfde50c39f404",
@@ -128,9 +129,8 @@ SERVING_MODELS: list[dict[str, Any]] = [
128
129
  "max_cpu_loras": 16,
129
130
  "max_lora_rank": 128,
130
131
  "max_model_len": 262144,
131
- # Single-H100 sweep qualified thirty-two sequences, including rank-128
132
- # q_proj LoRA at 32k prompts; benchmark_qwen_serving.py reproduces the check.
133
- "max_num_seqs": 32,
132
+ # Keep Modal admission aligned with this per-container scheduler capacity.
133
+ "max_num_seqs": 64,
134
134
  "enforce_eager": False,
135
135
  "reasoning_parser": "qwen3",
136
136
  },
@@ -259,7 +259,7 @@ def gpu_for(base_model: str) -> str:
259
259
  def serve_model_for(base_model: str) -> str:
260
260
  """return the pre-quantized checkpoint an active hosted engine loads."""
261
261
  _config_for(base_model)
262
- if base_model in {"Qwen/Qwen3.5-0.8B", "Qwen/Qwen3.5-4B", "Qwen/Qwen3.5-9B-Base"}:
262
+ if base_model in {"Qwen/Qwen3.5-0.8B", "Qwen/Qwen3.5-4B"}:
263
263
  return base_model
264
264
  if base_model == DEEPSEEK_MODEL_ID:
265
265
  return DEEPSEEK_MODEL_ID
@@ -1,6 +1,7 @@
1
1
  """Prequantized checkpoint mapping for active hosted serving.
2
2
 
3
- The 9B loads a Freesolo-owned compressed-tensors FP8 checkpoint. The 27B loads its official FP8
3
+ The 9B Base and Instruct load distinct Freesolo-owned compressed-tensors FP8 checkpoints.
4
+ The 27B loads its official FP8
4
5
  checkpoint. The 35B MoE mapping remains its official FP8 default, although the validated engine
5
6
  override serves the base bf16 weights so full-expert LoRA and CUDA graphs coexist.
6
7
  """
@@ -10,6 +11,7 @@ from __future__ import annotations
10
11
  # freesolo-owned compressed-tensors checkpoints.
11
12
  OWNED_FP8_MODEL_REPOS: dict[str, str] = {
12
13
  "Qwen/Qwen3.5-9B": "Freesolo-Co/Qwen3.5-9B-FP8",
14
+ "Qwen/Qwen3.5-9B-Base": "Freesolo-Co/Qwen3.5-9B-Base-FP8",
13
15
  }
14
16
 
15
17
  # official qwen checkpoints active in hosted serving.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "freesolo-flash-dev"
3
- version = "1.4.16"
3
+ version = "1.4.18"
4
4
  description ="Flash — managed LoRA post-training (SFT/GRPO) for Freesolo environments, driven by the `flash` CLI"
5
5
  # The training and serving stack is validated on Python 3.11 and 3.12.
6
6
  requires-python = ">=3.11,<3.13"
@@ -210,7 +210,7 @@ artifacts = ["flash/py.typed"]
210
210
  # auto-published by .github/workflows/publish-dev.yml: a push to `dev` whose version isn't yet on
211
211
  # PyPI publishes it; pushes that don't change it find it already published and no-op. So cutting a
212
212
  # dev-channel release = bump this (and [project].version) and merge to `dev`.
213
- version = "1.4.16"
213
+ version = "1.4.18"
214
214
 
215
215
  [tool.pytest.ini_options]
216
216
  pythonpath = ["."]