freesolo-flash-dev 1.4.8__tar.gz → 1.4.10__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 (1066) hide show
  1. freesolo_flash_dev-1.4.10/.github/scripts/ci_sharding.py +59 -0
  2. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/ci.yml +70 -79
  3. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/Dockerfile +4 -2
  4. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/PKG-INFO +1 -1
  5. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/backend.py +58 -12
  6. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/worker.py +25 -0
  7. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/preparation.py +9 -0
  8. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/schema/__init__.py +5 -1
  9. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/schema/custom.py +6 -0
  10. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/app/modal_app.py +28 -19
  11. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/promotion/evidence.py +4 -1
  12. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/promotion/gate.py +22 -3
  13. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/lora_engine.py +25 -0
  14. freesolo_flash_dev-1.4.10/flash/serving/src/http/authorization_transport.py +59 -0
  15. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/pyproject.toml +2 -2
  16. freesolo_flash_dev-1.4.10/tests/serving/test_authorization_transport.py +97 -0
  17. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_chat_authorizer.py +91 -3
  18. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_immutable_engine.py +68 -0
  19. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_promotion_gate.py +42 -0
  20. freesolo_flash_dev-1.4.10/tests/test_ci_sharding.py +143 -0
  21. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_managed.py +21 -0
  22. freesolo_flash_dev-1.4.10/tests/test_custom_worker.py +118 -0
  23. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_warmstart_cross_repo.py +88 -0
  24. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_image.py +3 -1
  25. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/uv.lock +1 -1
  26. freesolo_flash_dev-1.4.8/tests/test_custom_worker.py +0 -55
  27. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.dockerignore +0 -0
  28. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.env.example +0 -0
  29. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/CODEOWNERS +0 -0
  30. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  31. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  32. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  33. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/dependabot.yml +0 -0
  35. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/scripts/notify_tests_repo.py +0 -0
  36. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/auto-rebake.yml +0 -0
  37. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/bake-kernel-cache.yml +0 -0
  38. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/deploy-deepinfer.yml +0 -0
  39. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/deploy-modal-dev.yml +0 -0
  40. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/deploy-modal.yml +0 -0
  41. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/dev-kernel-cache.yml +0 -0
  42. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/main-source-guard.yml +0 -0
  43. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/notify-tests-repo.yml +0 -0
  44. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  45. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/publish-dev.yml +0 -0
  46. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/publish-image.yml +0 -0
  47. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/publish-serving-image.yml +0 -0
  48. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/publish.yml +0 -0
  49. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/version-parity.yml +0 -0
  50. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.github/workflows/worker-image.yml +0 -0
  51. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/.gitignore +0 -0
  52. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/CHANGELOG.md +0 -0
  53. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/CODE_OF_CONDUCT.md +0 -0
  54. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/CONTRIBUTING.md +0 -0
  55. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/Dockerfile.serve +0 -0
  56. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/Dockerfile.worker +0 -0
  57. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/LICENSE +0 -0
  58. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/NOTICE +0 -0
  59. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/README.md +0 -0
  60. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/SECURITY.md +0 -0
  61. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/SELF_HOSTING.md +0 -0
  62. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/build/kernel_cache/.gitignore +0 -0
  63. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/build/kernel_cache/.keep +0 -0
  64. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/deploy/infisical/README.md +0 -0
  65. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/deploy/infisical/entrypoint.sh +0 -0
  66. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/Dockerfile.kernelcache +0 -0
  67. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/Dockerfile.kernelcache.relayer +0 -0
  68. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/bake_kernel_cache.py +0 -0
  69. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/bake_sandbox_entry.py +0 -0
  70. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/extract_cudart_fix.py +0 -0
  71. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/kernel_fingerprint.py +0 -0
  72. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/docker/patch_vllm_moe_lora.py +0 -0
  73. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/__init__.py +0 -0
  74. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/__init__.py +0 -0
  75. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/background.py +0 -0
  76. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/channel.py +0 -0
  77. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/diagnostics.py +0 -0
  78. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/fileio.py +0 -0
  79. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/http.py +0 -0
  80. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/http_deadline.py +0 -0
  81. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/logging.py +0 -0
  82. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/openai_sse.py +0 -0
  83. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/paths.py +0 -0
  84. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/_internal/version.py +0 -0
  85. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/__init__.py +0 -0
  86. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/artifacts.py +0 -0
  87. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/config.py +0 -0
  88. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/fused_experts.py +0 -0
  89. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/lora_rank.py +0 -0
  90. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/adapters/targets.py +0 -0
  91. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/__init__.py +0 -0
  92. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/__main__.py +0 -0
  93. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/__init__.py +0 -0
  94. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/__init__.py +0 -0
  95. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/__init__.py +0 -0
  96. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/imports.py +0 -0
  97. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/list.py +0 -0
  98. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/push.py +0 -0
  99. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/retained.py +0 -0
  100. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/setup.py +0 -0
  101. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  102. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/__init__.py +0 -0
  103. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/episode.py +0 -0
  104. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/eval.py +0 -0
  105. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/eval_args.py +0 -0
  106. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/evaluations.py +0 -0
  107. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/params.py +0 -0
  108. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/test.py +0 -0
  109. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/env/testing/warnings.py +0 -0
  110. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/__init__.py +0 -0
  111. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/account.py +0 -0
  112. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/catalog.py +0 -0
  113. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/deploy.py +0 -0
  114. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/log_follow.py +0 -0
  115. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/prompt_budget.py +0 -0
  116. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/runs.py +0 -0
  117. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/traces.py +0 -0
  118. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/train.py +0 -0
  119. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/ops/worker_output.py +0 -0
  120. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/serving/__init__.py +0 -0
  121. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/serving/deploy.py +0 -0
  122. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/serving/identity.py +0 -0
  123. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/serving/status.py +0 -0
  124. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/commands/serving/undeploy.py +0 -0
  125. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/__init__.py +0 -0
  126. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/account.py +0 -0
  127. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/custom.py +0 -0
  128. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/env.py +0 -0
  129. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/errors.py +0 -0
  130. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/main.py +0 -0
  131. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/models.py +0 -0
  132. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/serve_parser.py +0 -0
  133. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/traces.py +0 -0
  134. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/parsing/training.py +0 -0
  135. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/scaffold/TRAINING.md +0 -0
  136. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/scaffold/__init__.py +0 -0
  137. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/__init__.py +0 -0
  138. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/cost.py +0 -0
  139. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/env_panels.py +0 -0
  140. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/heartbeat.py +0 -0
  141. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/render.py +0 -0
  142. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/tables.py +0 -0
  143. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cli/ui/tty.py +0 -0
  144. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/__init__.py +0 -0
  145. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/config.py +0 -0
  146. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/freesolo_api.py +0 -0
  147. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/http.py +0 -0
  148. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/runtime_secrets.py +0 -0
  149. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/shapes.py +0 -0
  150. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/specs.py +0 -0
  151. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/client/streaming.py +0 -0
  152. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/__init__.py +0 -0
  153. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/image_descriptors.py +0 -0
  154. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/multimodal.py +0 -0
  155. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/processor.py +0 -0
  156. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/reasoning_normalization.py +0 -0
  157. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/stop_tokens.py +0 -0
  158. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/structured_options.py +0 -0
  159. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/structured_outputs.py +0 -0
  160. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/content/thinking.py +0 -0
  161. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/core/__init__.py +0 -0
  162. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/core/catalog.py +0 -0
  163. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/core/grpo.py +0 -0
  164. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/core/spec.py +0 -0
  165. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/core/spec_persistence.py +0 -0
  166. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/__init__.py +0 -0
  167. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/analytical.py +0 -0
  168. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/currency.py +0 -0
  169. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/facts.py +0 -0
  170. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/spec.py +0 -0
  171. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/cost/types.py +0 -0
  172. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/__init__.py +0 -0
  173. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/async_client.py +0 -0
  174. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/billing.py +0 -0
  175. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/checkpoints.py +0 -0
  176. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/client.py +0 -0
  177. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/controller.py +0 -0
  178. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/managed.py +0 -0
  179. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/server.py +0 -0
  180. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/session.py +0 -0
  181. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/starter.py +0 -0
  182. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/types.py +0 -0
  183. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/custom/validation.py +0 -0
  184. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/__init__.py +0 -0
  185. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/__init__.py +0 -0
  186. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/kv_sizing.py +0 -0
  187. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/model_config_probe.py +0 -0
  188. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/prompt_budget.py +0 -0
  189. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/recipe.py +0 -0
  190. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/steps.py +0 -0
  191. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/plan/vram.py +0 -0
  192. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/__init__.py +0 -0
  193. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/dataset_profile.py +0 -0
  194. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/image_tokens.py +0 -0
  195. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/reasoning_render.py +0 -0
  196. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/sft_image_rows.py +0 -0
  197. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/sft_rows.py +0 -0
  198. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/sft_tools.py +0 -0
  199. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/sft_workload.py +0 -0
  200. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/tokenizer.py +0 -0
  201. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/profiling/workload_profile.py +0 -0
  202. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/result/__init__.py +0 -0
  203. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/result/accounting.py +0 -0
  204. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/result/rollout_samples.py +0 -0
  205. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/__init__.py +0 -0
  206. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/checkpoint_transport.py +0 -0
  207. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/huggingface.py +0 -0
  208. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/model_snapshot.py +0 -0
  209. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/verl_checkpoint.py +0 -0
  210. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/support/worker_entrypoint.py +0 -0
  211. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/__init__.py +0 -0
  212. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/__main__.py +0 -0
  213. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/entry/__init__.py +0 -0
  214. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/entry/rl.py +0 -0
  215. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/entry/worker.py +0 -0
  216. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/__init__.py +0 -0
  217. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/cpu_handoff.py +0 -0
  218. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/heartbeat.py +0 -0
  219. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/hf.py +0 -0
  220. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/prefetch.py +0 -0
  221. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/transfer.py +0 -0
  222. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/io/wandb_log.py +0 -0
  223. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/__init__.py +0 -0
  224. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/adapter.py +0 -0
  225. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/chatml_mask.py +0 -0
  226. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/decoding.py +0 -0
  227. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/lora.py +0 -0
  228. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/model/packing.py +0 -0
  229. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/perf/__init__.py +0 -0
  230. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/perf/diagnostics.py +0 -0
  231. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/perf/lifecycle.py +0 -0
  232. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/perf/memory.py +0 -0
  233. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/perf/model_size.py +0 -0
  234. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/runtime/__init__.py +0 -0
  235. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  236. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/runtime/phases.py +0 -0
  237. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/runtime/rng.py +0 -0
  238. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/runtime/state.py +0 -0
  239. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/__init__.py +0 -0
  240. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/__init__.py +0 -0
  241. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/__init__.py +0 -0
  242. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/agents.yaml +0 -0
  243. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/batch.py +0 -0
  244. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/compact_checkpoint.py +0 -0
  245. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/configuration.py +0 -0
  246. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/engine.py +0 -0
  247. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/flashinfer_cache.py +0 -0
  248. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/glue.py +0 -0
  249. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/launch.py +0 -0
  250. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/model.py +0 -0
  251. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/observations.py +0 -0
  252. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/options.py +0 -0
  253. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/prompt_media.py +0 -0
  254. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/queue.py +0 -0
  255. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/readiness.py +0 -0
  256. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/reference.py +0 -0
  257. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/registration.py +0 -0
  258. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/replay.py +0 -0
  259. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/replay_guard.py +0 -0
  260. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/rollout.py +0 -0
  261. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/rollout_contract.py +0 -0
  262. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/startup.py +0 -0
  263. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/tracking.py +0 -0
  264. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/trainer.py +0 -0
  265. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/upstream.py +0 -0
  266. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/vllm_worker.py +0 -0
  267. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/child/worker.py +0 -0
  268. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  269. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  270. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  271. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/persistence.py +0 -0
  272. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  273. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/lifecycle/timing.py +0 -0
  274. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/__init__.py +0 -0
  275. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/contract.py +0 -0
  276. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/episode.py +0 -0
  277. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/generation.py +0 -0
  278. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/identity.py +0 -0
  279. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/core/rollout/lifecycle.py +0 -0
  280. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/__init__.py +0 -0
  281. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/backend_common.py +0 -0
  282. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  283. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/rl_train.py +0 -0
  284. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  285. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  286. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/sft_train.py +0 -0
  287. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  288. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/__init__.py +0 -0
  289. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  290. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/contract.py +0 -0
  291. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/credit.py +0 -0
  292. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/entry.py +0 -0
  293. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/identity.py +0 -0
  294. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/metrics.py +0 -0
  295. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  296. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/reward.py +0 -0
  297. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/rollout.py +0 -0
  298. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/trainer.py +0 -0
  299. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/child/transport.py +0 -0
  300. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  301. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  302. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/launch/config.py +0 -0
  303. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  304. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  305. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  306. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  307. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  308. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  309. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  310. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/__init__.py +0 -0
  311. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/child/dataset.py +0 -0
  312. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/child/entry.py +0 -0
  313. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/child/loop.py +0 -0
  314. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/child/schedule.py +0 -0
  315. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/child/trainer.py +0 -0
  316. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  317. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  318. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/train/sft/setup/config.py +0 -0
  319. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/__init__.py +0 -0
  320. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/adapter_merger.py +0 -0
  321. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/capabilities.py +0 -0
  322. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/checkpoints.py +0 -0
  323. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/child_io.py +0 -0
  324. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/diagnostics.py +0 -0
  325. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/parallelism.py +0 -0
  326. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/engine/worker/verl/parent_work.py +0 -0
  327. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/__init__.py +0 -0
  328. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/__init__.py +0 -0
  329. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/adapter.py +0 -0
  330. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/base.py +0 -0
  331. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/loader.py +0 -0
  332. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/pull.py +0 -0
  333. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/loading/staged.py +0 -0
  334. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/__init__.py +0 -0
  335. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/cache_security.py +0 -0
  336. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/cache_storage.py +0 -0
  337. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/dataset_selection.py +0 -0
  338. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/evaluations.py +0 -0
  339. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/identity.py +0 -0
  340. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/meta/namespace_listing.py +0 -0
  341. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/package/__init__.py +0 -0
  342. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/package/direct_tokens.py +0 -0
  343. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/package/limits.py +0 -0
  344. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/package/unpack.py +0 -0
  345. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/registry/__init__.py +0 -0
  346. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/registry/azure.py +0 -0
  347. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/registry/packages.py +0 -0
  348. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/scoring/__init__.py +0 -0
  349. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/scoring/context.py +0 -0
  350. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/envs/scoring/response.py +0 -0
  351. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/__init__.py +0 -0
  352. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/__init__.py +0 -0
  353. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  354. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/attempt.py +0 -0
  355. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  356. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  357. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  358. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  359. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  360. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  361. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/instances/instance.py +0 -0
  362. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/instances/poll.py +0 -0
  363. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  364. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  365. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/net/__init__.py +0 -0
  366. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/net/auth.py +0 -0
  367. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/net/deadline.py +0 -0
  368. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/net/http.py +0 -0
  369. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/_lifecycle/net/worker.py +0 -0
  370. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/artifacts/__init__.py +0 -0
  371. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/artifacts/hf.py +0 -0
  372. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/artifacts/weight_cache.py +0 -0
  373. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/__init__.py +0 -0
  374. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/allocator.py +0 -0
  375. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/base.py +0 -0
  376. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/fit_errors.py +0 -0
  377. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/preflight.py +0 -0
  378. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/registry.py +0 -0
  379. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/core/sharding.py +0 -0
  380. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/__init__.py +0 -0
  381. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/api.py +0 -0
  382. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/auth.py +0 -0
  383. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/checkpoint_upload.py +0 -0
  384. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/handles.py +0 -0
  385. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/jobs.py +0 -0
  386. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/prefetch.py +0 -0
  387. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/pricing.py +0 -0
  388. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/provider.py +0 -0
  389. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/providers/modal/startup.py +0 -0
  390. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/py.typed +0 -0
  391. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/__init__.py +0 -0
  392. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/accounting/__init__.py +0 -0
  393. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/accounting/artifacts.py +0 -0
  394. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/accounting/costs.py +0 -0
  395. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/accounting/weight_cache.py +0 -0
  396. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/__init__.py +0 -0
  397. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/attempts.py +0 -0
  398. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/claim_lock.py +0 -0
  399. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/cleanup.py +0 -0
  400. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/deadlines.py +0 -0
  401. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/reporting.py +0 -0
  402. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/runtime_credentials.py +0 -0
  403. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/state.py +0 -0
  404. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/status.py +0 -0
  405. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/lifecycle/submit.py +0 -0
  406. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/results/__init__.py +0 -0
  407. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/results/checkpoints.py +0 -0
  408. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/results/deployments.py +0 -0
  409. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/__init__.py +0 -0
  410. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/attach.py +0 -0
  411. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/deploy.py +0 -0
  412. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/errors.py +0 -0
  413. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/execution.py +0 -0
  414. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/lifecycle.py +0 -0
  415. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/recovery.py +0 -0
  416. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/retry_decision.py +0 -0
  417. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runner/supervise/transitions.py +0 -0
  418. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runtime_capsule/__init__.py +0 -0
  419. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runtime_capsule/build.py +0 -0
  420. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runtime_capsule/manifest.py +0 -0
  421. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/runtime_capsule/profiles.py +0 -0
  422. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/schema/fields.py +0 -0
  423. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/__init__.py +0 -0
  424. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/__init__.py +0 -0
  425. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/__main__.py +0 -0
  426. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/bootstrap.py +0 -0
  427. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/chat_stream.py +0 -0
  428. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/http.py +0 -0
  429. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/launch.py +0 -0
  430. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/manifest.py +0 -0
  431. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/materialize.py +0 -0
  432. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/openai.py +0 -0
  433. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/app/progress.py +0 -0
  434. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/__init__.py +0 -0
  435. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/errors.py +0 -0
  436. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/protocol.py +0 -0
  437. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/provenance.py +0 -0
  438. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/responses.py +0 -0
  439. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/contract/urls.py +0 -0
  440. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/__init__.py +0 -0
  441. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/_canonical.py +0 -0
  442. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/_serialization.py +0 -0
  443. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/_urls.py +0 -0
  444. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/credentials.py +0 -0
  445. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/planning.py +0 -0
  446. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/control/types.py +0 -0
  447. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/__init__.py +0 -0
  448. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/adapter_check.py +0 -0
  449. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/deploy.py +0 -0
  450. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/download.py +0 -0
  451. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/export.py +0 -0
  452. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/preflight.py +0 -0
  453. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/profiles.py +0 -0
  454. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/readiness.py +0 -0
  455. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/deployment/resolve.py +0 -0
  456. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/__init__.py +0 -0
  457. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/common/__init__.py +0 -0
  458. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/common/records.py +0 -0
  459. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/__init__.py +0 -0
  460. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  461. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  462. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  463. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  464. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  465. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  466. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  467. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  468. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  469. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  470. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  471. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  472. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  473. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/__init__.py +0 -0
  474. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/openai.py +0 -0
  475. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/runtime_support.py +0 -0
  476. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/schema_types.py +0 -0
  477. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/streaming.py +0 -0
  478. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/text_scan.py +0 -0
  479. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/thinking.py +0 -0
  480. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/tool_calls.py +0 -0
  481. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/tool_template.py +0 -0
  482. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/transport.py +0 -0
  483. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/request/validation.py +0 -0
  484. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/__init__.py +0 -0
  485. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/adapters.py +0 -0
  486. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/cache_admission.py +0 -0
  487. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/cache_retention.py +0 -0
  488. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/cache_scheduler.py +0 -0
  489. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/engine.py +0 -0
  490. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/errors.py +0 -0
  491. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/hub.py +0 -0
  492. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/multimodal.py +0 -0
  493. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/prompt.py +0 -0
  494. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/prompt_cache.py +0 -0
  495. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/reasoning_tools.py +0 -0
  496. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/sampling.py +0 -0
  497. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/structured_outputs.py +0 -0
  498. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/token_batch.py +0 -0
  499. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/token_prefix_cache.py +0 -0
  500. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/tool_calls.py +0 -0
  501. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serve/runtime/types.py +0 -0
  502. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/__init__.py +0 -0
  503. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/__main__.py +0 -0
  504. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/asgi/__init__.py +0 -0
  505. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/asgi/app.py +0 -0
  506. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/asgi/cli.py +0 -0
  507. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/billing/__init__.py +0 -0
  508. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/billing/charges.py +0 -0
  509. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/billing/retry.py +0 -0
  510. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/__init__.py +0 -0
  511. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/ops/__init__.py +0 -0
  512. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/ops/repo_cleanup.py +0 -0
  513. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/ops/serving_resources.py +0 -0
  514. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/__init__.py +0 -0
  515. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/blob_envs.py +0 -0
  516. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/checkpoints.py +0 -0
  517. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/env_files.py +0 -0
  518. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/environment_registry.py +0 -0
  519. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/envs.py +0 -0
  520. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/projects.py +0 -0
  521. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/domain/registry/runs.py +0 -0
  522. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/__init__.py +0 -0
  523. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/auth.py +0 -0
  524. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/db.py +0 -0
  525. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/deployment_jobs.py +0 -0
  526. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/deployment_state.py +0 -0
  527. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/deps.py +0 -0
  528. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/internal_client.py +0 -0
  529. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/locks.py +0 -0
  530. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/plane_lease.py +0 -0
  531. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/platform/runtime.py +0 -0
  532. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/__init__.py +0 -0
  533. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/adapter_download.py +0 -0
  534. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/custom.py +0 -0
  535. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/env_files.py +0 -0
  536. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/envs.py +0 -0
  537. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/meta.py +0 -0
  538. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/runs.py +0 -0
  539. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/serving.py +0 -0
  540. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/serving_chat.py +0 -0
  541. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/serving_completion.py +0 -0
  542. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/serving_revisions.py +0 -0
  543. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/server/routes/serving_smoke.py +0 -0
  544. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/__init__.py +0 -0
  545. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/app/GPU_QUALIFICATION.md +0 -0
  546. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/app/README.md +0 -0
  547. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/app/__init__.py +0 -0
  548. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/app/timeouts.py +0 -0
  549. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/__init__.py +0 -0
  550. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/README.md +0 -0
  551. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/__init__.py +0 -0
  552. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/autoscaling.py +0 -0
  553. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/client.py +0 -0
  554. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/events.py +0 -0
  555. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/http.py +0 -0
  556. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/modal_app.py +0 -0
  557. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/render.py +0 -0
  558. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/retries.py +0 -0
  559. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/app/rollout.py +0 -0
  560. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/contract/__init__.py +0 -0
  561. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/contract/config.py +0 -0
  562. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/contract/errors.py +0 -0
  563. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/contract/protocol.py +0 -0
  564. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/contract/tokenizer.py +0 -0
  565. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/native/__init__.py +0 -0
  566. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/native/engram_transport.py +0 -0
  567. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/native/image.py +0 -0
  568. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/native/patches.py +0 -0
  569. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/native/transport.py +0 -0
  570. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/__init__.py +0 -0
  571. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/bridge.py +0 -0
  572. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/kernel_cache.py +0 -0
  573. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/prefill_scheduler.py +0 -0
  574. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/prefix_cache.py +0 -0
  575. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/provenance.py +0 -0
  576. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/routing.py +0 -0
  577. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/snapshots.py +0 -0
  578. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/tiered_cache.py +0 -0
  579. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/warmup.py +0 -0
  580. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/deepinfer/runtime/worker.py +0 -0
  581. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/promotion/__init__.py +0 -0
  582. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/promotion/accounting_smoke_test.py +0 -0
  583. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/promotion/canary.py +0 -0
  584. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/__init__.py +0 -0
  585. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/accounting/__init__.py +0 -0
  586. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/accounting/usage.py +0 -0
  587. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/accounting/usage_facts.py +0 -0
  588. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/accounting/usage_outbox.py +0 -0
  589. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/accounting/usage_retry.py +0 -0
  590. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/__init__.py +0 -0
  591. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/boot.py +0 -0
  592. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/errors.py +0 -0
  593. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/generation.py +0 -0
  594. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/hub.py +0 -0
  595. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/lora_entries.py +0 -0
  596. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/model_config.py +0 -0
  597. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/prequant_config.py +0 -0
  598. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/reasoning_usage.py +0 -0
  599. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/support.py +0 -0
  600. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/text_tokenizer.py +0 -0
  601. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/engine/warmup.py +0 -0
  602. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/__init__.py +0 -0
  603. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/adapter_routes.py +0 -0
  604. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/body_limit.py +0 -0
  605. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/context.py +0 -0
  606. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/headers.py +0 -0
  607. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/inference_routes.py +0 -0
  608. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/key_rate_limit.py +0 -0
  609. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/rate_limit.py +0 -0
  610. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/router.py +0 -0
  611. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/routing.py +0 -0
  612. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/http/stream_response.py +0 -0
  613. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/__init__.py +0 -0
  614. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/cache_namespace.py +0 -0
  615. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/multimodal.py +0 -0
  616. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/openai_request.py +0 -0
  617. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/openai_stream.py +0 -0
  618. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/provenance.py +0 -0
  619. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/requests.py +0 -0
  620. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/responses.py +0 -0
  621. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/schemas.py +0 -0
  622. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/streaming.py +0 -0
  623. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/io/structured_outputs.py +0 -0
  624. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/__init__.py +0 -0
  625. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/access.py +0 -0
  626. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/lookup.py +0 -0
  627. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/persisted_columns.py +0 -0
  628. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/persistence.py +0 -0
  629. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/registration.py +0 -0
  630. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/registry.py +0 -0
  631. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/settings.py +0 -0
  632. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/supabase_rest.py +0 -0
  633. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/store/undeploy.py +0 -0
  634. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/stream_channel/__init__.py +0 -0
  635. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/stream_channel/_tasks.py +0 -0
  636. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/stream_channel/client.py +0 -0
  637. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/stream_channel/engine.py +0 -0
  638. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/serving/src/stream_channel/protocol.py +0 -0
  639. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/snapshot/__init__.py +0 -0
  640. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/flash/snapshot/archive.py +0 -0
  641. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/build_dev_dist.py +0 -0
  642. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_dev_release.py +0 -0
  643. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_file_size.py +0 -0
  644. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_function_size.py +0 -0
  645. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_rollout_identity_actor.py +0 -0
  646. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_source_layout.py +0 -0
  647. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/check_verl_pin_exists.py +0 -0
  648. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/fixtures/custom_algorithm.py +0 -0
  649. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/fixtures/modal_environment/dataset/train.jsonl +0 -0
  650. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/fixtures/modal_environment/environment.py +0 -0
  651. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/fixtures/modal_environment/evaluations.py +0 -0
  652. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/qualify_serving_profile.py +0 -0
  653. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/smoke_custom_training.py +0 -0
  654. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/smoke_modal_sft.py +0 -0
  655. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/scripts/smoke_modal_training.py +0 -0
  656. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/serve_launch.py +0 -0
  657. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/__init__.py +0 -0
  658. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/__init__.py +0 -0
  659. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/billing_precheck.py +0 -0
  660. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/chat_provenance.py +0 -0
  661. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/chat_transport.py +0 -0
  662. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/deployments.py +0 -0
  663. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/managed_chat.py +0 -0
  664. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/modal.py +0 -0
  665. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/profile.py +0 -0
  666. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/runner.py +0 -0
  667. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/server_api_plugin.py +0 -0
  668. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/source_snapshot.py +0 -0
  669. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/specs.py +0 -0
  670. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/_helpers/wire_headers.py +0 -0
  671. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/capture_image_sft_processor_oracle.py +0 -0
  672. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/capture_qwen38_27b_metadata.py +0 -0
  673. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/conftest.py +0 -0
  674. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  675. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  676. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  677. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  678. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  679. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  680. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/live/__init__.py +0 -0
  681. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/live/conftest.py +0 -0
  682. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/live/test_sft_thinking_render_live.py +0 -0
  683. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/checkpoint_fixtures.py +0 -0
  684. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/conftest.py +0 -0
  685. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_adapter_hub.py +0 -0
  686. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_artifact_protections.py +0 -0
  687. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_base_model_serving.py +0 -0
  688. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_chat_auth.py +0 -0
  689. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_checkpoint_fingerprint_validation.py +0 -0
  690. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  691. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_checkpoint_model_validation.py +0 -0
  692. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_checkpoint_revocation.py +0 -0
  693. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer.py +0 -0
  694. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_autoscaling.py +0 -0
  695. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_deadline.py +0 -0
  696. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_hosted.py +0 -0
  697. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_http_deadline.py +0 -0
  698. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_kernel_cache.py +0 -0
  699. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_latency.py +0 -0
  700. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_optimizations.py +0 -0
  701. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_parallel.py +0 -0
  702. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_prefill_scheduler.py +0 -0
  703. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_provenance.py +0 -0
  704. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_retention.py +0 -0
  705. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_retries.py +0 -0
  706. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_rollout.py +0 -0
  707. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_routing.py +0 -0
  708. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_deepinfer_tiering.py +0 -0
  709. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_engine_error_status.py +0 -0
  710. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_fp8_config.py +0 -0
  711. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_immutable_revisions.py +0 -0
  712. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_immutable_schemas.py +0 -0
  713. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_inference_duration.py +0 -0
  714. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_internal_header_integrity.py +0 -0
  715. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_key_rate_limit.py +0 -0
  716. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_key_rate_limit_review.py +0 -0
  717. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_kv_namespace.py +0 -0
  718. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_latency_admission.py +0 -0
  719. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_mirror_sampling_parity.py +0 -0
  720. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_modal_deploy_identity.py +0 -0
  721. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_modal_image_paths.py +0 -0
  722. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_model_config.py +0 -0
  723. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_multimodal.py +0 -0
  724. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_openai_stream_options.py +0 -0
  725. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_per_model_gpu.py +0 -0
  726. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_persistence.py +0 -0
  727. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_pre_first_disconnect.py +0 -0
  728. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_prequant_config.py +0 -0
  729. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_promotion_accounting_smoke.py +0 -0
  730. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_promotion_canary.py +0 -0
  731. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_promotion_evidence.py +0 -0
  732. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_qwen_warmup.py +0 -0
  733. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_rate_limit.py +0 -0
  734. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_reasoning_usage.py +0 -0
  735. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_registration_endpoint.py +0 -0
  736. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_registry.py +0 -0
  737. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_registry_coverage.py +0 -0
  738. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_request_body_limit.py +0 -0
  739. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_router.py +0 -0
  740. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_router_coverage.py +0 -0
  741. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_router_edge_coverage.py +0 -0
  742. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_schemas_coverage.py +0 -0
  743. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_serve_reasoning_split.py +0 -0
  744. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_serve_structured_outputs.py +0 -0
  745. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_serve_thinking.py +0 -0
  746. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_settings.py +0 -0
  747. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_stream_channel.py +0 -0
  748. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_stream_response_disconnect.py +0 -0
  749. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_stream_wait_cleanup.py +0 -0
  750. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_structured_outputs.py +0 -0
  751. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_structured_outputs_coverage.py +0 -0
  752. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_supabase_rest_coverage.py +0 -0
  753. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_token_prefix_cache.py +0 -0
  754. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_usage_delivery_concurrency.py +0 -0
  755. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_usage_integrity.py +0 -0
  756. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_usage_outbox.py +0 -0
  757. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving/test_usage_reporter.py +0 -0
  758. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving_conformance/__init__.py +0 -0
  759. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving_conformance/conftest.py +0 -0
  760. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/serving_conformance/test_contract.py +0 -0
  761. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_accounting_coverage.py +0 -0
  762. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_adapter_download.py +0 -0
  763. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_adapter_shard_completeness.py +0 -0
  764. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_agent_flash_cli_contract.py +0 -0
  765. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_algorithms.py +0 -0
  766. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_allocator.py +0 -0
  767. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_authenticated_redirects.py +0 -0
  768. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_azure_environment_registry.py +0 -0
  769. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_backend_common.py +0 -0
  770. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_backend_jobspec_contract.py +0 -0
  771. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_background_supervisor.py +0 -0
  772. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_bake_kernel_cache.py +0 -0
  773. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_bake_sandbox_entry.py +0 -0
  774. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_base_environment_integrity.py +0 -0
  775. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_base_model_provenance.py +0 -0
  776. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_billing_response_integrity.py +0 -0
  777. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_billing_retry.py +0 -0
  778. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_bootstrap_process_groups.py +0 -0
  779. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_bootstrap_reentry.py +0 -0
  780. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_bootstrap_worker_cleanup.py +0 -0
  781. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_build_context_contract.py +0 -0
  782. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cache_admission.py +0 -0
  783. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cache_retention.py +0 -0
  784. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cache_scheduler.py +0 -0
  785. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_capture_qwen38_metadata.py +0 -0
  786. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_catalog_consistency.py +0 -0
  787. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_catalog_only_models.py +0 -0
  788. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_charge_pricing.py +0 -0
  789. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_chat_foundations.py +0 -0
  790. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_chat_stop_tokens.py +0 -0
  791. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_cancellation.py +0 -0
  792. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_deployment_inventory_api.py +0 -0
  793. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_deployments.py +0 -0
  794. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_lifecycle.py +0 -0
  795. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_listing_integrity.py +0 -0
  796. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_storage_overlap.py +0 -0
  797. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoint_transport.py +0 -0
  798. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_checkpoints.py +0 -0
  799. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_commands.py +0 -0
  800. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_commands_coverage.py +0 -0
  801. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_credential_shadowing.py +0 -0
  802. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_errors.py +0 -0
  803. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_estimate.py +0 -0
  804. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_gpus_flag.py +0 -0
  805. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_help.py +0 -0
  806. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_main_coverage.py +0 -0
  807. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_managed.py +0 -0
  808. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_render_coverage.py +0 -0
  809. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_render_theme.py +0 -0
  810. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_serve_deploy.py +0 -0
  811. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_serve_status.py +0 -0
  812. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_serve_undeploy.py +0 -0
  813. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_traces.py +0 -0
  814. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cli_wandb_warning.py +0 -0
  815. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_client.py +0 -0
  816. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_client_deadline_integrity.py +0 -0
  817. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_client_import_purity.py +0 -0
  818. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_client_server_integration.py +0 -0
  819. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_client_stream_reads.py +0 -0
  820. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_compact_checkpoint.py +0 -0
  821. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_config_env_vars.py +0 -0
  822. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_config_overrides.py +0 -0
  823. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_console_upload.py +0 -0
  824. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_controlled_experiment_repairs.py +0 -0
  825. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_analytical.py +0 -0
  826. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_currency.py +0 -0
  827. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_equation.py +0 -0
  828. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_estimate.py +0 -0
  829. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_hardware.py +0 -0
  830. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cost_models.py +0 -0
  831. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_cpu_checkpoint_handoff.py +0 -0
  832. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_checkpoints.py +0 -0
  833. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_client.py +0 -0
  834. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_gpu_selection.py +0 -0
  835. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_gradients.py +0 -0
  836. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_custom_session.py +0 -0
  837. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_dataset_profile.py +0 -0
  838. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_deploy_latency.py +0 -0
  839. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_deployment_cleanup_resilience.py +0 -0
  840. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_deployment_generation_completion.py +0 -0
  841. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_deployment_registration_cleanup.py +0 -0
  842. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_dev_channel.py +0 -0
  843. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_dev_publish_decision.py +0 -0
  844. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_disk_gb.py +0 -0
  845. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_cache_evict.py +0 -0
  846. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_delete.py +0 -0
  847. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_download.py +0 -0
  848. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_download_api.py +0 -0
  849. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_evaluations.py +0 -0
  850. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_list_api.py +0 -0
  851. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_list_cli.py +0 -0
  852. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_list_registry.py +0 -0
  853. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_no_install.py +0 -0
  854. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_publish.py +0 -0
  855. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_pull.py +0 -0
  856. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_pull_coverage.py +0 -0
  857. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_pull_loader_coverage.py +0 -0
  858. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_pull_managed_control_plane.py +0 -0
  859. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_push.py +0 -0
  860. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_rate_limit_resolve.py +0 -0
  861. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_ref_pinning.py +0 -0
  862. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_env_test.py +0 -0
  863. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_environment_cache_integrity.py +0 -0
  864. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_environment_publish_integrity.py +0 -0
  865. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_envs_coverage.py +0 -0
  866. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_export.py +0 -0
  867. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_flash_mvp.py +0 -0
  868. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_flash_worker.py +0 -0
  869. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_flashinfer_aot_cache.py +0 -0
  870. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_flashinfer_cache_dirs.py +0 -0
  871. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_freesolo_api_transport.py +0 -0
  872. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_fused_expert_warmstart.py +0 -0
  873. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_generation_eos.py +0 -0
  874. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_github_urlopen_retry.py +0 -0
  875. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_gpu_type_single_field.py +0 -0
  876. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_gpus.py +0 -0
  877. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_checkpoint_durability.py +0 -0
  878. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_metric_stream.py +0 -0
  879. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_params.py +0 -0
  880. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_resident_sizing.py +0 -0
  881. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_reward_batching.py +0 -0
  882. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_reward_context.py +0 -0
  883. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_rollout_contract.py +0 -0
  884. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_grpo_rollout_identity.py +0 -0
  885. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_health_liveness.py +0 -0
  886. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_heartbeat_startup_cleanup.py +0 -0
  887. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_hf_retry.py +0 -0
  888. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_hosted_adapter_admission.py +0 -0
  889. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_image_environment_capability.py +0 -0
  890. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_image_incremental_processor.py +0 -0
  891. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_image_sft_markers.py +0 -0
  892. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_image_sft_processor_parity.py +0 -0
  893. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_image_tokens.py +0 -0
  894. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_infisical_secrets.py +0 -0
  895. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_instance_bootstrap_coverage.py +0 -0
  896. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_internal_client.py +0 -0
  897. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_kernel_bake_build_contracts.py +0 -0
  898. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_kernel_cache.py +0 -0
  899. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_kernel_fingerprint.py +0 -0
  900. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_kv_util.py +0 -0
  901. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_local_credential_integrity.py +0 -0
  902. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_logging.py +0 -0
  903. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_login_perms.py +0 -0
  904. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_lora_rank_coverage.py +0 -0
  905. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_lora_rank_nested_rung.py +0 -0
  906. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_lora_rank_preflight.py +0 -0
  907. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_lora_targeting.py +0 -0
  908. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_lora_targeting_pinned_verl.py +0 -0
  909. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_managed_config_fields.py +0 -0
  910. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_managed_hf_repo.py +0 -0
  911. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_metrics_schema_agent_contract.py +0 -0
  912. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_mig_guard.py +0 -0
  913. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_mirror_sampling_parity.py +0 -0
  914. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_api_loop.py +0 -0
  915. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_prefetch_snapshot.py +0 -0
  916. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_provider.py +0 -0
  917. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_startup.py +0 -0
  918. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_training_lifecycle.py +0 -0
  919. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_modal_weight_warm.py +0 -0
  920. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_multi_gpu_gate.py +0 -0
  921. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_multimodal_boundary_integrity.py +0 -0
  922. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_multimodal_training.py +0 -0
  923. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_named_reward_metrics.py +0 -0
  924. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_notify_tests_repo.py +0 -0
  925. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_offline_http.py +0 -0
  926. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_oom_escalate_gpu.py +0 -0
  927. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_orchestrator_flash.py +0 -0
  928. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_packing.py +0 -0
  929. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_packing_coverage.py +0 -0
  930. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_persisted_spec_envelope.py +0 -0
  931. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_plane_lease.py +0 -0
  932. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_poll_helpers.py +0 -0
  933. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_preflight.py +0 -0
  934. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_processor_chat_template.py +0 -0
  935. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_projects.py +0 -0
  936. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_prompt_budget.py +0 -0
  937. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_qwen9b_base.py +0 -0
  938. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_removed_algorithms.py +0 -0
  939. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_removed_training_settings.py +0 -0
  940. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_replay_guard.py +0 -0
  941. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_repo_cleanup.py +0 -0
  942. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_resolve_params_b.py +0 -0
  943. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_resume_on_retry.py +0 -0
  944. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_retry_decision.py +0 -0
  945. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_reward_server_cleanup.py +0 -0
  946. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_rl_train.py +0 -0
  947. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_rollout_engine_prompt.py +0 -0
  948. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_rollout_samples.py +0 -0
  949. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_run_log_integrity.py +0 -0
  950. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_run_registry_lifecycle.py +0 -0
  951. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_runmgmt.py +0 -0
  952. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_runtime_capsule.py +0 -0
  953. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_runtime_credentials.py +0 -0
  954. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_runtime_secret_integrity.py +0 -0
  955. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_schema_boundary_integrity.py +0 -0
  956. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve.py +0 -0
  957. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_bootstrap_http.py +0 -0
  958. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_launch.py +0 -0
  959. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_manifest.py +0 -0
  960. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_materialize.py +0 -0
  961. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_packaging.py +0 -0
  962. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_app_progress.py +0 -0
  963. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_cache_resource_cleanup.py +0 -0
  964. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_chat_transport.py +0 -0
  965. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_control.py +0 -0
  966. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_docs.py +0 -0
  967. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_modal_contract_lock.py +0 -0
  968. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_modal_sdk.py +0 -0
  969. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  970. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_modal_teardown_identity.py +0 -0
  971. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_profile_qualification.py +0 -0
  972. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_profiles.py +0 -0
  973. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_provisioning_common.py +0 -0
  974. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_provisioning_modal.py +0 -0
  975. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_reasoning_content.py +0 -0
  976. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_resolve_provenance.py +0 -0
  977. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_runtime_adapters.py +0 -0
  978. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_runtime_engine.py +0 -0
  979. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_runtime_hub.py +0 -0
  980. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_runtime_package.py +0 -0
  981. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serve_runtime_types.py +0 -0
  982. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_api.py +0 -0
  983. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_app_coverage.py +0 -0
  984. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_auth_singleflight.py +0 -0
  985. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_billing.py +0 -0
  986. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_checkpoints_coverage.py +0 -0
  987. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_db.py +0 -0
  988. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_envs_coverage.py +0 -0
  989. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_locks_coverage.py +0 -0
  990. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_managed_chat_requests.py +0 -0
  991. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_serving_resources.py +0 -0
  992. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_server_standalone.py +0 -0
  993. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serving_conformance_gate.py +0 -0
  994. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serving_context_preflight.py +0 -0
  995. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serving_contract.py +0 -0
  996. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serving_input_integrity.py +0 -0
  997. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_serving_schema_coverage.py +0 -0
  998. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_batch_prefetch.py +0 -0
  999. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_cancel_profile_pricing.py +0 -0
  1000. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_chunked_nll.py +0 -0
  1001. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_cost_reduction.py +0 -0
  1002. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_dataset_lazy_images.py +0 -0
  1003. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_dataset_nulls.py +0 -0
  1004. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_example_selection.py +0 -0
  1005. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_gc_off.py +0 -0
  1006. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_max_context.py +0 -0
  1007. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_memory_policy.py +0 -0
  1008. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_step_floor.py +0 -0
  1009. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_tools.py +0 -0
  1010. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_train.py +0 -0
  1011. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_warmup_schedule.py +0 -0
  1012. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_sft_workload.py +0 -0
  1013. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_smoke_content_integrity.py +0 -0
  1014. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_source_attestation_flow.py +0 -0
  1015. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_source_layout.py +0 -0
  1016. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_source_snapshot.py +0 -0
  1017. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_spec_and_validation.py +0 -0
  1018. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_spec_contract_bytes.py +0 -0
  1019. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_staged_environment.py +0 -0
  1020. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_status_reporting.py +0 -0
  1021. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_status_updates.py +0 -0
  1022. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_step_floor.py +0 -0
  1023. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_step_metrics.py +0 -0
  1024. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_step_timing.py +0 -0
  1025. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_structured_option_safety.py +0 -0
  1026. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_structured_outputs.py +0 -0
  1027. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_structured_runtime_options.py +0 -0
  1028. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_submission_outcome.py +0 -0
  1029. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_terminal_artifacts.py +0 -0
  1030. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_thinking_config.py +0 -0
  1031. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_thinking_tool_calls.py +0 -0
  1032. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_tool_call_exact_parsing.py +0 -0
  1033. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_tool_scalar_unions.py +0 -0
  1034. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_train_context_preflight.py +0 -0
  1035. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_training_controls.py +0 -0
  1036. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_training_phases.py +0 -0
  1037. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_transfer_queue_init.py +0 -0
  1038. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_type_comment_prose.py +0 -0
  1039. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_upload_concurrency.py +0 -0
  1040. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_upstream_rollout_contract.py +0 -0
  1041. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_upstream_runtime_policy.py +0 -0
  1042. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_upstream_verl_contract.py +0 -0
  1043. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_verifiers.py +0 -0
  1044. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_verl_checkpoint_export.py +0 -0
  1045. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_verl_child_plugins.py +0 -0
  1046. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_verl_silence_watchdog.py +0 -0
  1047. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_version.py +0 -0
  1048. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_versioned_rollout_contract.py +0 -0
  1049. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1050. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_vllm_moe_lora_backport.py +0 -0
  1051. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_vram_architecture.py +0 -0
  1052. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_wandb_link.py +0 -0
  1053. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_wandb_naming.py +0 -0
  1054. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_warmstart_adapter_download.py +0 -0
  1055. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_warmstart_error_attribution.py +0 -0
  1056. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_warmstart_image_adapters.py +0 -0
  1057. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_watchdog_startup_cleanup.py +0 -0
  1058. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_weight_cache.py +0 -0
  1059. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_dryrun.py +0 -0
  1060. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_hardexit.py +0 -0
  1061. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_init_heartbeat.py +0 -0
  1062. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_stack.py +0 -0
  1063. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_worker_thinking.py +0 -0
  1064. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_workflow_contracts.py +0 -0
  1065. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_workload_profile.py +0 -0
  1066. {freesolo_flash_dev-1.4.8 → freesolo_flash_dev-1.4.10}/tests/test_zero2_sharding_gate.py +0 -0
@@ -0,0 +1,59 @@
1
+ """partition collected tests by whole file without changing pytest discovery."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Iterable
6
+
7
+ import pytest
8
+
9
+ # slow-file weights come from offline junit timings; unmeasured files still participate.
10
+ FILE_SECONDS = {
11
+ "tests/test_client.py": 23,
12
+ "tests/test_instance_bootstrap_coverage.py": 6,
13
+ "tests/test_repo_cleanup.py": 24,
14
+ "tests/test_runmgmt.py": 16,
15
+ "tests/test_server_api.py": 39,
16
+ "tests/test_server_envs_coverage.py": 15,
17
+ "tests/test_weight_cache.py": 7,
18
+ "tests/test_worker_init_heartbeat.py": 4,
19
+ }
20
+
21
+
22
+ def assign_files(paths: Iterable[str], count: int) -> dict[str, int]:
23
+ loads = [0.0] * count
24
+ assignments = {}
25
+ for path in sorted(paths, key=lambda path: (-FILE_SECONDS.get(path, 1.0), path)):
26
+ shard = min(range(count), key=lambda index: (loads[index], index))
27
+ assignments[path] = shard
28
+ loads[shard] += FILE_SECONDS.get(path, 1.0)
29
+ return assignments
30
+
31
+
32
+ def pytest_addoption(parser):
33
+ group = parser.getgroup("ci sharding")
34
+ group.addoption("--ci-shard", type=int, default=None)
35
+ group.addoption("--ci-shard-count", type=int, default=2)
36
+
37
+
38
+ def pytest_configure(config):
39
+ shard = config.getoption("--ci-shard")
40
+ count = config.getoption("--ci-shard-count")
41
+ if shard is None or count < 1 or not 0 <= shard < count:
42
+ raise pytest.UsageError("ci shard must satisfy 0 <= --ci-shard < --ci-shard-count")
43
+
44
+
45
+ @pytest.hookimpl(wrapper=True)
46
+ def pytest_collection_modifyitems(config, items):
47
+ # partition after marker selection so every worker assigns the same eligible file set.
48
+ result = yield
49
+ count = config.getoption("--ci-shard-count")
50
+ shard = config.getoption("--ci-shard")
51
+ paths = {item.path.relative_to(config.rootpath).as_posix() for item in items}
52
+ assignments = assign_files(paths, count)
53
+ kept, removed = [], []
54
+ for item in items:
55
+ path = item.path.relative_to(config.rootpath).as_posix()
56
+ (kept if assignments[path] == shard else removed).append(item)
57
+ config.hook.pytest_deselected(items=removed)
58
+ items[:] = kept
59
+ return result
@@ -16,19 +16,10 @@ concurrency:
16
16
  cancel-in-progress: true
17
17
 
18
18
  jobs:
19
- test:
20
- name: lint + offline tests (py${{ matrix.python-version }})
19
+ lint:
20
+ name: lint
21
21
  runs-on: ubuntu-latest
22
- # The suite is CPU-only and finishes well inside this; the cap is here so a wedged run
23
- # releases its runner instead of holding it for the 6-hour default.
24
- timeout-minutes: 30
25
- strategy:
26
- fail-fast: false
27
- matrix:
28
- # pyproject declares `requires-python = ">=3.11,<3.13"`, so both supported interpreters
29
- # are tested. Testing only 3.11 let a 3.12-only failure reach a user the project claims
30
- # to support.
31
- python-version: ["3.11", "3.12"]
22
+ timeout-minutes: 10
32
23
  steps:
33
24
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
34
25
 
@@ -37,7 +28,7 @@ jobs:
37
28
  with:
38
29
  # pin the installed binary as well as the action implementation.
39
30
  version: "0.12.5"
40
- python-version: ${{ matrix.python-version }}
31
+ python-version: "3.11"
41
32
 
42
33
  - name: Sync (server extra + dev)
43
34
  run: uv sync --extra server --extra serving --dev --locked
@@ -64,69 +55,68 @@ jobs:
64
55
  - name: Source layout check
65
56
  run: uv run python scripts/check_source_layout.py
66
57
 
67
- # The job has always been NAMED offline (tests/conftest.py stubs the network boundaries in
68
- # Python), but nothing enforced it, so a test that reached hf.co passed on a connected
69
- # runner and would go red on a blip. Setting these makes the name true: an unstubbed call
70
- # fails locally and deterministically instead of intermittently in CI.
71
- #
72
- # Sharding: this step is ~300s of the job's ~305s, and almost all of it is waiting rather
73
- # than computing (the offline tests exercise retry/backoff/watchdog paths, so 125 sleep call
74
- # sites sit idle holding a core). One process left the runner's second core idle for five
75
- # minutes; `-n 2` cuts the step roughly in half.
76
- #
77
- # `loadfile` (not the default `load`, and not `loadscope`) is required, not a preference:
78
- # tests in the same FILE share module-level import state -- several re-import
79
- # `flash.engine.worker` to re-run its import scope, and others patch dotted targets under it.
80
- # Splitting a file across workers breaks that sharing; `loadscope` splits at class/module
81
- # granularity and fails tests/test_warmstart_cross_repo.py for exactly this reason. `loadfile`
82
- # keeps every file whole on one worker, which is the boundary the suite already assumes.
83
- #
84
- # `-n 2` is pinned deliberately instead of `-n auto`. `auto` does NOT mean "the cores this
85
- # process may use": xdist prefers psutil.cpu_count() when psutil is importable (it is, via a
86
- # transitive dep) and that ignores CPU affinity and cgroup limits. So `auto` silently couples
87
- # the worker count to a transitive dependency and to whatever tier the runner pool hands out.
88
- # A standard GitHub runner is 2-core, which is what this suite was measured against; pinning
89
- # keeps the sharding identical on every run instead of changing under us.
58
+ # The offline suite can only compare the pin against a hardcoded copy of itself, so a
59
+ # mis-transcribed sha passes every pin test while naming a commit that was never pushed --
60
+ # which then fails EVERY worker install at provisioning time. This is the one pin check that
61
+ # asks upstream instead of asking the repo about itself, so it needs the network.
90
62
  #
91
- # Oversubscription is not free here: at 48 workers on 2 cores, three timing-sensitive tests in
92
- # tests/test_server_envs_coverage.py fail, because they assert on a schema-validation timeout
93
- # budget that CPU starvation blows through. Raise this only alongside the runner's core count.
63
+ # Offline environment variables are scoped to pytest steps; this check needs the network.
64
+ - name: verl pin exists upstream
65
+ run: uv run python scripts/check_verl_pin_exists.py
66
+
67
+ test:
68
+ name: offline tests (py${{ matrix.python-version }}, shard ${{ matrix.shard }})
69
+ runs-on: ubuntu-latest
70
+ timeout-minutes: 30
71
+ strategy:
72
+ fail-fast: false
73
+ matrix:
74
+ python-version: ["3.11", "3.12"]
75
+ shard: [0, 1]
76
+ steps:
77
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
78
+
79
+ - name: Install uv
80
+ uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
81
+ with:
82
+ # pin the installed binary as well as the action implementation.
83
+ version: "0.12.5"
84
+ python-version: ${{ matrix.python-version }}
85
+
86
+ - name: Sync (server extra + dev)
87
+ run: uv sync --extra server --extra serving --dev --locked
88
+
89
+ # Keep each file whole and each shard single-process for shared module state.
94
90
  - name: Tests (CPU, offline)
95
91
  env:
96
92
  HF_HUB_OFFLINE: "1"
97
93
  TRANSFORMERS_OFFLINE: "1"
98
94
  HF_HUB_DISABLE_TELEMETRY: "1"
99
- run: uv run pytest -q -n 2 --dist loadfile -m "not wallclock"
100
-
101
- # The `wallclock` tests assert on real elapsed time with tens-of-milliseconds margins, so a
102
- # second worker competing for the core fails them for reasons unrelated to the code. They are
103
- # deselected above and run here alone, single-process: ~5s, which is why isolating them is
104
- # cheaper than the scaled-up timing budgets that would be needed to survive contention.
105
- - name: Tests (CPU, offline, wall-clock sensitive)
95
+ PYTHONPATH: .github/scripts
96
+ run: >-
97
+ uv run pytest -q -p ci_sharding --ci-shard ${{ matrix.shard }}
98
+ --ci-shard-count 2 -m "not wallclock" --durations=20
99
+
100
+ # Run timing-sensitive tests separately and exactly once per Python version.
101
+ # Shard zero also retains the real CPU tensor regressions after dependency installation.
102
+ - if: matrix.shard == 0
103
+ name: Tests (CPU, offline, wall-clock sensitive)
106
104
  env:
107
105
  HF_HUB_OFFLINE: "1"
108
106
  TRANSFORMERS_OFFLINE: "1"
109
107
  HF_HUB_DISABLE_TELEMETRY: "1"
110
108
  run: uv run pytest -q -m wallclock
111
109
 
112
- # The offline suite can only compare the pin against a hardcoded copy of itself, so a
113
- # mis-transcribed sha passes every pin test while naming a commit that was never pushed --
114
- # which then fails EVERY worker install at provisioning time. This is the one pin check that
115
- # asks upstream instead of asking the repo about itself, so it needs the network.
116
- #
117
- # Deliberately NOT covered by the offline env above: those vars are scoped to the pytest step,
118
- # so this step still reaches github as it must.
119
- - name: verl pin exists upstream
120
- run: uv run python scripts/check_verl_pin_exists.py
121
-
122
110
  # The ordinary offline environment omits torch/PEFT, so its adapter tests skip.
123
111
  # Exercise real meta tensors and frozen references with the worker's versions.
124
- - name: Install CPU adapter-test dependencies
112
+ - if: matrix.shard == 0
113
+ name: Install CPU adapter-test dependencies
125
114
  run: |
126
115
  uv pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cpu
127
116
  uv pip install peft==0.20.0 transformers==5.12.1
128
117
 
129
- - name: Warm-start KL reference regression (real torch and PEFT)
118
+ - if: matrix.shard == 0
119
+ name: Warm-start KL reference regression (real torch and PEFT)
130
120
  env:
131
121
  HF_HUB_OFFLINE: "1"
132
122
  TRANSFORMERS_OFFLINE: "1"
@@ -135,32 +125,13 @@ jobs:
135
125
  .venv/bin/python -c "import torch, peft"
136
126
  .venv/bin/pytest -q tests/test_rl_train.py -k kl_ref_adapter
137
127
 
138
- - name: Custom training gradient and session regressions (real CPU torch)
128
+ - if: matrix.shard == 0
129
+ name: Custom training gradient and session regressions (real CPU torch)
139
130
  env:
140
131
  HF_HUB_OFFLINE: "1"
141
132
  TRANSFORMERS_OFFLINE: "1"
142
133
  run: .venv/bin/pytest -q tests/test_custom_gradients.py tests/test_custom_session.py tests/test_custom_client.py tests/test_custom_managed.py
143
134
 
144
- # `lint + offline tests` is the required status check, and the matrix above turned that one
145
- # check into two per-version checks. This aggregate keeps a single stable name for branch
146
- # protection to require, and fails if either matrix leg failed or was cancelled.
147
- test-result:
148
- name: lint + offline tests
149
- runs-on: ubuntu-latest
150
- needs: test
151
- if: always()
152
- timeout-minutes: 5
153
- steps:
154
- - name: Require every matrix leg to have succeeded
155
- env:
156
- RESULT: ${{ needs.test.result }}
157
- run: |
158
- if [ "$RESULT" != "success" ]; then
159
- echo "::error::matrix job 'test' finished with result '$RESULT'."
160
- exit 1
161
- fi
162
- echo "All matrix legs passed."
163
-
164
135
  typecheck:
165
136
  name: mypy (advisory)
166
137
  runs-on: ubuntu-latest
@@ -222,3 +193,23 @@ jobs:
222
193
  } >> "$GITHUB_STEP_SUMMARY"
223
194
  echo "::warning::mypy stopped early; the reported error count is not the real total."
224
195
  fi
196
+
197
+ test-result:
198
+ name: lint + offline tests
199
+ runs-on: ubuntu-latest
200
+ timeout-minutes: 5
201
+ needs: [lint, test]
202
+ if: always()
203
+ steps:
204
+ - name: Require every test group to have succeeded
205
+ env:
206
+ LINT: ${{ needs.lint.result }}
207
+ TEST: ${{ needs.test.result }}
208
+ run: |
209
+ for result in "$LINT" "$TEST"; do
210
+ if [ "$result" != "success" ]; then
211
+ echo "::error::required ci group finished with result '$result'."
212
+ exit 1
213
+ fi
214
+ done
215
+ echo "all required ci groups passed"
@@ -18,11 +18,9 @@
18
18
  FROM python:3.12-slim@sha256:2c941e860699f878900b0edc2403613c234d4b32eda3cc9fa7036991a2a63c4a
19
19
 
20
20
  WORKDIR /app
21
- COPY . .
22
21
  RUN apt-get update \
23
22
  && apt-get install -y --no-install-recommends ca-certificates git curl \
24
23
  && rm -rf /var/lib/apt/lists/*
25
- RUN pip install --no-cache-dir ".[server]"
26
24
 
27
25
  # Optional Infisical CLI, for deployments that pull secrets from a vault at container start
28
26
  # instead of receiving them as environment variables. OFF by default: a plain `docker build .`
@@ -67,6 +65,10 @@ RUN if [ "${INSTALL_INFISICAL}" = "true" ]; then \
67
65
  infisical --version; \
68
66
  fi
69
67
 
68
+ # Source changes reuse the operating-system and optional Infisical layers.
69
+ COPY . .
70
+ RUN pip install --no-cache-dir ".[server]"
71
+
70
72
  VOLUME /root/.flash
71
73
  EXPOSE 8080
72
74
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.4.8
3
+ Version: 1.4.10
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
@@ -308,6 +308,7 @@ def load_backend(
308
308
  seed=42,
309
309
  checkpoint_dir,
310
310
  max_tokens=2048,
311
+ init_adapter=None,
311
312
  ):
312
313
  import torch
313
314
  from peft import LoraConfig, get_peft_model
@@ -335,6 +336,12 @@ def load_backend(
335
336
  "exclude_modules": surface.exclude_modules,
336
337
  "target_parameters": surface.target_parameters,
337
338
  }
339
+ if init_adapter and _uses_language_model_layout(init_adapter):
340
+ # SFT and GRPO adapt Qwen3.5 text modules under model.language_model even for text-only
341
+ # runs; load that same layout so the source's module paths and exclusions resolve.
342
+ from transformers import AutoModelForImageTextToText
343
+
344
+ model_class = AutoModelForImageTextToText
338
345
  model = model_class.from_pretrained(
339
346
  model_id,
340
347
  revision=revision,
@@ -342,17 +349,56 @@ def load_backend(
342
349
  torch_dtype=torch.bfloat16,
343
350
  attn_implementation="sdpa",
344
351
  ).to("cuda")
345
- model = get_peft_model(
346
- model,
347
- LoraConfig(
348
- r=lora_rank,
349
- lora_alpha=lora_alpha or 2 * lora_rank,
350
- lora_dropout=0,
351
- target_modules="all-linear",
352
- task_type="CAUSAL_LM",
353
- revision=revision,
354
- **targeting,
355
- ),
356
- )
352
+ if init_adapter:
353
+ model = _warm_start(model, init_adapter, lora_rank, lora_alpha)
354
+ else:
355
+ model = get_peft_model(
356
+ model,
357
+ LoraConfig(
358
+ r=lora_rank,
359
+ lora_alpha=lora_alpha or 2 * lora_rank,
360
+ lora_dropout=0,
361
+ target_modules="all-linear",
362
+ task_type="CAUSAL_LM",
363
+ revision=revision,
364
+ **targeting,
365
+ ),
366
+ )
357
367
  model.config._commit_hash = revision
358
368
  return TorchBackend(model, tokenizer, checkpoint_dir=checkpoint_dir, max_tokens=max_tokens)
369
+
370
+
371
+ def _uses_language_model_layout(adapter_dir):
372
+ """Whether a source adapter's tensors address the multimodal class's language_model."""
373
+ from safetensors import safe_open
374
+
375
+ with safe_open(str(Path(adapter_dir) / "adapter_model.safetensors"), "np") as weights:
376
+ names = weights.keys() # a safetensors handle, not a dict
377
+ return any(".language_model." in name for name in names)
378
+
379
+
380
+ def _warm_start(model, adapter_dir, lora_rank, lora_alpha):
381
+ """Continue a verified source LoRA: its exact modules and weights, with fresh optimizer state.
382
+
383
+ The source config keeps its target modules; dropout is disabled like every custom adapter so
384
+ gradient checkpointing stays exact. Every source tensor must land on a trainable parameter:
385
+ peft only warns about unmatched keys, which would silently restart from zero.
386
+ """
387
+ from peft import LoraConfig, get_peft_model, load_peft_weights, set_peft_model_state_dict
388
+
389
+ config = LoraConfig.from_pretrained(adapter_dir)
390
+ if (config.r, config.lora_alpha) != (lora_rank, lora_alpha or 2 * lora_rank):
391
+ raise ValueError("warm-start adapter rank or alpha differs from the prepared run")
392
+ config.lora_dropout = 0
393
+ config.inference_mode = False
394
+ model = get_peft_model(model, config)
395
+ weights = load_peft_weights(adapter_dir, device="cuda")
396
+ result = set_peft_model_state_dict(model, weights)
397
+ trainable = [name for name, p in model.named_parameters() if p.requires_grad]
398
+ if result.unexpected_keys or len(weights) != len(trainable):
399
+ raise ValueError(
400
+ "warm-start adapter weights do not match the model's LoRA parameters "
401
+ f"({len(weights)} source tensors, {len(trainable)} trainable, "
402
+ f"{len(result.unexpected_keys)} unmatched)"
403
+ )
404
+ return model
@@ -13,10 +13,34 @@ from flash.engine.worker.io import hf
13
13
  from flash.engine.worker.io.heartbeat import heartbeat, liveness_heartbeat
14
14
 
15
15
 
16
+ def _custom_targeting(model_id):
17
+ """Custom runs adapt only text modules; a warm-start source must have the same modality."""
18
+ from flash.core.catalog import supports_image_training
19
+
20
+ if not supports_image_training(model_id):
21
+ return None
22
+ from flash.adapters.targets import resolve_lora_targeting
23
+
24
+ return resolve_lora_targeting(model_id, algorithm="custom", multimodal=False)
25
+
26
+
16
27
  def run(*, context):
17
28
  spec = context.config.spec
18
29
  heartbeat("custom_model_load", context=context)
19
30
  with liveness_heartbeat("custom_model_load", context=context):
31
+ init_adapter = None
32
+ if spec.train.init_from_adapter:
33
+ from flash.engine.worker.train.entry.sft_train import _warmstart_adapter_path
34
+
35
+ # downloads the prepared source and checks its rank, alpha, modules and base model.
36
+ init_adapter = _warmstart_adapter_path(
37
+ spec.model,
38
+ spec.model_revision,
39
+ spec.train.lora_rank,
40
+ spec.train.lora_alpha,
41
+ _custom_targeting(spec.model),
42
+ context=context,
43
+ )
20
44
  backend = load_backend(
21
45
  spec.model,
22
46
  revision=spec.model_revision,
@@ -25,6 +49,7 @@ def run(*, context):
25
49
  seed=spec.seed,
26
50
  checkpoint_dir="/tmp/flash-custom-checkpoints",
27
51
  max_tokens=spec.train.max_context_tokens,
52
+ init_adapter=init_adapter,
28
53
  )
29
54
  checkpoints = RunCheckpoints(context)
30
55
  backend.checkpoints = checkpoints
@@ -344,6 +344,15 @@ def _preparation_digest(
344
344
  and not stored_train.get("init_from_adapter")
345
345
  ):
346
346
  public_payload["train"].pop("lora_alpha", None)
347
+ # a custom run's public `train` is filtered to `flash.schema.custom.TRAIN_KEYS`, so adding a
348
+ # key there (`init_from_adapter` in 1.4.9) makes `to_dict()` emit it, empty, for every
349
+ # custom run prepared before -- and their digests then fail. replay the omission the same
350
+ # way: drop a key only when the STORED spec lacks it and its value is empty, so a set value
351
+ # stays bound and a run prepared with the key keeps hashing it.
352
+ if public_spec.algorithm == "custom" and isinstance(stored_train, Mapping):
353
+ for key in [k for k, v in public_payload["train"].items() if k not in stored_train]:
354
+ if not public_payload["train"][key]:
355
+ public_payload["train"].pop(key)
347
356
  worker_payload = worker_spec.to_internal_dict()
348
357
  # NORMALIZATION, not legacy replay: this is the canonical shape `dev` hashes TODAY (1.2.88), and
349
358
  # it is unconditional -- it reads nothing off the stored record and applies to every run this
@@ -412,7 +412,11 @@ def _validate_train_section(raw: dict[str, Any], algorithm: str) -> dict[str, An
412
412
 
413
413
  if set(train_raw) - TRAIN_KEYS:
414
414
  raise ConfigError(f"[train] custom mode accepts only: {', '.join(sorted(TRAIN_KEYS))}")
415
- return {**TRAIN_DEFAULTS, **train_raw}
415
+ defaults = dict(TRAIN_DEFAULTS)
416
+ if train_raw.get("init_from_adapter"):
417
+ # a warm start inherits the source adapter's rank and alpha.
418
+ defaults.pop("lora_rank")
419
+ return {**defaults, **train_raw}
416
420
  validate_train_keys_for_algorithm(train_raw, algorithm)
417
421
  return train_raw
418
422
 
@@ -10,6 +10,7 @@ TRAIN_KEYS = {
10
10
  "lora_alpha",
11
11
  "save_every",
12
12
  "save_at_steps",
13
+ "init_from_adapter",
13
14
  }
14
15
  TRAIN_DEFAULTS = {"max_steps": 1000, "max_context_tokens": 2048, "lora_rank": 16, "save_every": 10}
15
16
  CUSTOM_KEYS = {"file", "resume_from", "idle_seconds", "max_wall_seconds", "controller_id"}
@@ -70,3 +71,8 @@ def validate_custom_spec(spec):
70
71
  integer(spec.train.save_every, "train.save_every", 1, 1_000_000)
71
72
  except ValueError as exc:
72
73
  raise ConfigError(str(exc)) from exc
74
+ if spec.train.init_from_adapter and spec.custom.get("resume_from"):
75
+ raise ConfigError(
76
+ "train.init_from_adapter starts fresh optimizer state from any adapter; "
77
+ "custom.resume_from continues a custom checkpoint. Set only one"
78
+ )
@@ -711,7 +711,11 @@ def _build_chat_authorizer(settings: Any) -> Any:
711
711
  import time
712
712
 
713
713
  import httpx
714
- from fastapi import HTTPException, status
714
+
715
+ from flash.serving.src.http.authorization_transport import (
716
+ TransientAuthorizationError,
717
+ post_authorization,
718
+ )
715
719
 
716
720
  _client = httpx.AsyncClient(timeout=10.0, headers={"Authorization": f"Bearer {key}"})
717
721
 
@@ -720,43 +724,44 @@ def _build_chat_authorizer(settings: Any) -> Any:
720
724
  _cache: dict[tuple[str, str, str], tuple[float, AuthorizedTraffic]] = {}
721
725
  # In-flight single-flight tasks so concurrent identical misses share ONE backend call.
722
726
  _inflight: dict[tuple[str, str, str], asyncio.Task[AuthorizedTraffic]] = {}
727
+ _refresh_after: dict[tuple[str, str, str], float] = {}
723
728
 
724
729
  async def _authorize_backend(
725
730
  api_key: str, model_id: str, scope: "dict[str, str]"
726
731
  ) -> "AuthorizedTraffic":
727
- try:
728
- resp = await _client.post(
729
- url,
730
- json={"apiKey": api_key, "modelId": model_id},
731
- # A training container authenticates with the platform internal key rather
732
- # than a customer key, so the backend cannot resolve it via
733
- # authenticate_api_key. It identifies the calling job from these headers and
734
- # re-checks them against the live job row. Dropping them here is
735
- # indistinguishable, to the backend, from a request that never had them: it
736
- # refuses with missing_training_context and catalog sampling fails closed.
737
- headers=scope or None,
738
- )
739
- except Exception as exc: # backend unreachable -> fail closed, never serve unauthorized
740
- raise HTTPException(
741
- status.HTTP_503_SERVICE_UNAVAILABLE, "serving auth backend unreachable"
742
- ) from exc
732
+ resp = await post_authorization(
733
+ _client, url, api_key=api_key, model_id=model_id, scope=scope
734
+ )
743
735
  return _authorize_response(resp, model_id, require_api_key_id=api_key.startswith("fslo_"))
744
736
 
745
737
  def _prune(now: float) -> None:
746
738
  for expired in [k for k, (exp, _) in _cache.items() if exp <= now]:
747
739
  _cache.pop(expired, None)
740
+ _refresh_after.pop(expired, None)
748
741
  if len(_cache) > _AUTH_CACHE_MAX_ENTRIES:
749
742
  n_drop = len(_cache) - _AUTH_CACHE_MAX_ENTRIES
750
743
  for k in sorted(_cache, key=lambda c: _cache[c][0])[:n_drop]:
751
744
  _cache.pop(k, None)
745
+ _refresh_after.pop(k, None)
752
746
 
753
747
  async def _authorize_and_cache(
754
748
  ck: tuple[str, str, str], api_key: str, model_id: str, scope: "dict[str, str]"
755
749
  ) -> "AuthorizedTraffic":
756
750
  try:
757
751
  authorization = await _authorize_backend(api_key, model_id, scope)
752
+ except TransientAuthorizationError:
753
+ # Keep the original approval only until its existing expiry; never renew it on error.
754
+ cached = _cache.get(ck)
755
+ now = time.monotonic()
756
+ if cached is not None and cached[0] > now:
757
+ _refresh_after[ck] = min(cached[0], now + 1.0)
758
+ else:
759
+ _cache.pop(ck, None)
760
+ _refresh_after.pop(ck, None)
761
+ raise
758
762
  except BaseException:
759
763
  _cache.pop(ck, None)
764
+ _refresh_after.pop(ck, None)
760
765
  raise
761
766
  finally:
762
767
  # Drop the single-flight slot regardless of outcome so a failed lookup re-checks next
@@ -764,6 +769,7 @@ def _build_chat_authorizer(settings: Any) -> Any:
764
769
  _inflight.pop(ck, None)
765
770
  now = time.monotonic()
766
771
  # Cache the ALLOW only — reached iff _authorize_backend did not raise above.
772
+ _refresh_after.pop(ck, None)
767
773
  _cache[ck] = (now + _AUTH_CACHE_TTL_SECONDS, authorization)
768
774
  _prune(now)
769
775
  return authorization
@@ -799,11 +805,14 @@ def _build_chat_authorizer(settings: Any) -> Any:
799
805
  if cached is not None:
800
806
  if cached[0] > now:
801
807
  # Refresh active keys before expiry, but never serve past the original TTL
802
- # unless the backend has approved them again. Failures evict the old ALLOW.
803
- if cached[0] - now <= _AUTH_CACHE_REFRESH_SECONDS:
808
+ # unless approved again. Denials evict immediately; transient failures do not.
809
+ if cached[0] - now <= _AUTH_CACHE_REFRESH_SECONDS and now >= _refresh_after.get(
810
+ ck, 0
811
+ ):
804
812
  refresh(ck, api_key, model_id, scope)
805
813
  return cached[1]
806
814
  _cache.pop(ck, None)
815
+ _refresh_after.pop(ck, None)
807
816
  return await asyncio.shield(refresh(ck, api_key, model_id, scope))
808
817
 
809
818
  async def close():
@@ -17,7 +17,7 @@ from __future__ import annotations
17
17
 
18
18
  import math
19
19
  import re
20
- from dataclasses import dataclass
20
+ from dataclasses import dataclass, field
21
21
  from typing import Any
22
22
 
23
23
  _SHA_PATTERN = re.compile(r"^[0-9a-f]{40}$")
@@ -76,6 +76,9 @@ ACCOUNTING_UNSETTLED = "accounting_canary_unsettled"
76
76
  class PromotionVerdict:
77
77
  ok: bool
78
78
  reason: str = ""
79
+ # diagnostic only (e.g. the error behind an unreadable accounting snapshot); never compared, so
80
+ # verdicts stay equal by outcome and reason.
81
+ detail: str = field(default="", compare=False)
79
82
 
80
83
 
81
84
  PASS = PromotionVerdict(ok=True)
@@ -199,6 +199,22 @@ async def _await_health(
199
199
  return verdict
200
200
 
201
201
 
202
+ def _error_detail(error: Exception) -> str:
203
+ """name the failure behind an unreadable snapshot without request headers or credentials.
204
+
205
+ an RPC failure (for example a postgres statement timeout, SQLSTATE 57014) otherwise reads as
206
+ schema drift, because both surface as accounting_malformed.
207
+ """
208
+ response = getattr(error, "response", None)
209
+ if response is not None and getattr(response, "status_code", None) is not None:
210
+ try:
211
+ body = response.text
212
+ except Exception:
213
+ body = ""
214
+ return f"{type(error).__name__}: HTTP {response.status_code} {body[:300]}".strip()
215
+ return f"{type(error).__name__}: {str(error)[:300]}".rstrip(": ")
216
+
217
+
202
218
  async def _await_accounting(
203
219
  loader: AccountingLoader,
204
220
  *,
@@ -215,8 +231,10 @@ async def _await_accounting(
215
231
  snapshot = await asyncio.wait_for(loader(), timeout=remaining)
216
232
  except TimeoutError:
217
233
  return verdict
218
- except Exception:
219
- verdict = PromotionVerdict(ok=False, reason=ACCOUNTING_MALFORMED)
234
+ except Exception as error:
235
+ verdict = PromotionVerdict(
236
+ ok=False, reason=ACCOUNTING_MALFORMED, detail=_error_detail(error)
237
+ )
220
238
  else:
221
239
  # even a successful response arriving at the deadline cannot promote the release.
222
240
  if clock() >= deadline:
@@ -385,7 +403,8 @@ def main(argv: list[str] | None = None) -> int:
385
403
  if verdict.ok:
386
404
  print("promotion gate passed")
387
405
  return 0
388
- print(f"promotion gate failed: {verdict.reason}", file=sys.stderr)
406
+ detail = f" ({verdict.detail})" if verdict.detail else ""
407
+ print(f"promotion gate failed: {verdict.reason}{detail}", file=sys.stderr)
389
408
  return 1
390
409
 
391
410