freesolo-flash-dev 1.4.7__tar.gz → 1.4.9__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 (1065) hide show
  1. freesolo_flash_dev-1.4.9/.github/scripts/ci_sharding.py +59 -0
  2. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/ci.yml +70 -79
  3. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/publish-dev.yml +2 -18
  4. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/Dockerfile +4 -2
  5. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/PKG-INFO +20 -6
  6. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/README.md +19 -5
  7. freesolo_flash_dev-1.4.9/flash/content/processor.py +17 -0
  8. freesolo_flash_dev-1.4.9/flash/content/stop_tokens.py +13 -0
  9. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/core/catalog.py +28 -0
  10. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/backend.py +43 -12
  11. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/worker.py +25 -0
  12. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/vram.py +1 -0
  13. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/sft_workload.py +5 -4
  14. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/launch/inputs.py +6 -2
  15. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/schema/__init__.py +5 -1
  16. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/schema/custom.py +6 -0
  17. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/profiles.py +28 -0
  18. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/tool_calls.py +11 -4
  19. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/tool_template.py +7 -4
  20. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/engine.py +20 -9
  21. freesolo_flash_dev-1.4.9/flash/serve/runtime/reasoning_tools.py +60 -0
  22. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/app/GPU_QUALIFICATION.md +45 -0
  23. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/app/README.md +2 -1
  24. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/app/modal_app.py +28 -19
  25. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/accounting/usage.py +2 -0
  26. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/boot.py +2 -0
  27. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/generation.py +11 -3
  28. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/lora_engine.py +25 -0
  29. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/model_config.py +22 -1
  30. freesolo_flash_dev-1.4.9/flash/serving/src/http/authorization_transport.py +59 -0
  31. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/pyproject.toml +2 -2
  32. freesolo_flash_dev-1.4.9/scripts/check_dev_release.py +44 -0
  33. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/smoke_modal_sft.py +8 -6
  34. freesolo_flash_dev-1.4.9/tests/serving/test_authorization_transport.py +97 -0
  35. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_chat_authorizer.py +91 -3
  36. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_immutable_engine.py +68 -0
  37. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_inference_duration.py +1 -0
  38. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_model_config.py +2 -0
  39. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_per_model_gpu.py +1 -0
  40. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_prequant_config.py +1 -0
  41. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_serve_structured_outputs.py +28 -0
  42. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_usage_outbox.py +5 -0
  43. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_catalog_consistency.py +1 -0
  44. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_chat_foundations.py +3 -7
  45. freesolo_flash_dev-1.4.9/tests/test_chat_stop_tokens.py +12 -0
  46. freesolo_flash_dev-1.4.9/tests/test_ci_sharding.py +143 -0
  47. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_managed.py +21 -0
  48. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_worker.py +41 -0
  49. freesolo_flash_dev-1.4.9/tests/test_dev_publish_decision.py +101 -0
  50. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_disk_gb.py +1 -0
  51. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_instance_bootstrap_coverage.py +32 -7
  52. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_weight_warm.py +1 -1
  53. freesolo_flash_dev-1.4.9/tests/test_processor_chat_template.py +69 -0
  54. freesolo_flash_dev-1.4.9/tests/test_qwen9b_base.py +52 -0
  55. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_rl_train.py +56 -1
  56. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_bootstrap_http.py +106 -2
  57. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_profiles.py +2 -0
  58. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_runtime_engine.py +84 -7
  59. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_train.py +1 -1
  60. freesolo_flash_dev-1.4.9/tests/test_thinking_tool_calls.py +102 -0
  61. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_tool_call_exact_parsing.py +10 -7
  62. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_image.py +3 -1
  63. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/uv.lock +1 -1
  64. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.dockerignore +0 -0
  65. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.env.example +0 -0
  66. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/CODEOWNERS +0 -0
  67. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  68. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  69. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  70. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  71. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/dependabot.yml +0 -0
  72. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/scripts/notify_tests_repo.py +0 -0
  73. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/auto-rebake.yml +0 -0
  74. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/bake-kernel-cache.yml +0 -0
  75. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/deploy-deepinfer.yml +0 -0
  76. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/deploy-modal-dev.yml +0 -0
  77. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/deploy-modal.yml +0 -0
  78. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/dev-kernel-cache.yml +0 -0
  79. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/main-source-guard.yml +0 -0
  80. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/notify-tests-repo.yml +0 -0
  81. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  82. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/publish-image.yml +0 -0
  83. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/publish-serving-image.yml +0 -0
  84. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/publish.yml +0 -0
  85. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/version-parity.yml +0 -0
  86. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.github/workflows/worker-image.yml +0 -0
  87. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/.gitignore +0 -0
  88. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/CHANGELOG.md +0 -0
  89. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/CODE_OF_CONDUCT.md +0 -0
  90. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/CONTRIBUTING.md +0 -0
  91. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/Dockerfile.serve +0 -0
  92. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/Dockerfile.worker +0 -0
  93. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/LICENSE +0 -0
  94. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/NOTICE +0 -0
  95. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/SECURITY.md +0 -0
  96. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/SELF_HOSTING.md +0 -0
  97. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/build/kernel_cache/.gitignore +0 -0
  98. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/build/kernel_cache/.keep +0 -0
  99. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/deploy/infisical/README.md +0 -0
  100. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/deploy/infisical/entrypoint.sh +0 -0
  101. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/Dockerfile.kernelcache +0 -0
  102. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/Dockerfile.kernelcache.relayer +0 -0
  103. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/bake_kernel_cache.py +0 -0
  104. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/bake_sandbox_entry.py +0 -0
  105. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/extract_cudart_fix.py +0 -0
  106. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/kernel_fingerprint.py +0 -0
  107. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/docker/patch_vllm_moe_lora.py +0 -0
  108. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/__init__.py +0 -0
  109. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/__init__.py +0 -0
  110. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/background.py +0 -0
  111. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/channel.py +0 -0
  112. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/diagnostics.py +0 -0
  113. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/fileio.py +0 -0
  114. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/http.py +0 -0
  115. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/http_deadline.py +0 -0
  116. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/logging.py +0 -0
  117. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/openai_sse.py +0 -0
  118. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/paths.py +0 -0
  119. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/_internal/version.py +0 -0
  120. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/__init__.py +0 -0
  121. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/artifacts.py +0 -0
  122. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/config.py +0 -0
  123. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/fused_experts.py +0 -0
  124. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/lora_rank.py +0 -0
  125. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/adapters/targets.py +0 -0
  126. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/__init__.py +0 -0
  127. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/__main__.py +0 -0
  128. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/__init__.py +0 -0
  129. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/__init__.py +0 -0
  130. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/__init__.py +0 -0
  131. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/imports.py +0 -0
  132. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/list.py +0 -0
  133. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/push.py +0 -0
  134. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/retained.py +0 -0
  135. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/setup.py +0 -0
  136. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  137. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/__init__.py +0 -0
  138. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/episode.py +0 -0
  139. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/eval.py +0 -0
  140. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/eval_args.py +0 -0
  141. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/evaluations.py +0 -0
  142. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/params.py +0 -0
  143. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/test.py +0 -0
  144. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/env/testing/warnings.py +0 -0
  145. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/__init__.py +0 -0
  146. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/account.py +0 -0
  147. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/catalog.py +0 -0
  148. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/deploy.py +0 -0
  149. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/log_follow.py +0 -0
  150. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/prompt_budget.py +0 -0
  151. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/runs.py +0 -0
  152. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/traces.py +0 -0
  153. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/train.py +0 -0
  154. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/ops/worker_output.py +0 -0
  155. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/serving/__init__.py +0 -0
  156. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/serving/deploy.py +0 -0
  157. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/serving/identity.py +0 -0
  158. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/serving/status.py +0 -0
  159. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/commands/serving/undeploy.py +0 -0
  160. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/__init__.py +0 -0
  161. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/account.py +0 -0
  162. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/custom.py +0 -0
  163. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/env.py +0 -0
  164. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/errors.py +0 -0
  165. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/main.py +0 -0
  166. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/models.py +0 -0
  167. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/serve_parser.py +0 -0
  168. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/traces.py +0 -0
  169. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/parsing/training.py +0 -0
  170. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/scaffold/TRAINING.md +0 -0
  171. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/scaffold/__init__.py +0 -0
  172. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/__init__.py +0 -0
  173. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/cost.py +0 -0
  174. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/env_panels.py +0 -0
  175. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/heartbeat.py +0 -0
  176. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/render.py +0 -0
  177. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/tables.py +0 -0
  178. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cli/ui/tty.py +0 -0
  179. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/__init__.py +0 -0
  180. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/config.py +0 -0
  181. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/freesolo_api.py +0 -0
  182. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/http.py +0 -0
  183. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/runtime_secrets.py +0 -0
  184. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/shapes.py +0 -0
  185. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/specs.py +0 -0
  186. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/client/streaming.py +0 -0
  187. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/__init__.py +0 -0
  188. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/image_descriptors.py +0 -0
  189. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/multimodal.py +0 -0
  190. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/reasoning_normalization.py +0 -0
  191. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/structured_options.py +0 -0
  192. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/structured_outputs.py +0 -0
  193. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/content/thinking.py +0 -0
  194. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/core/__init__.py +0 -0
  195. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/core/grpo.py +0 -0
  196. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/core/spec.py +0 -0
  197. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/core/spec_persistence.py +0 -0
  198. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/__init__.py +0 -0
  199. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/analytical.py +0 -0
  200. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/currency.py +0 -0
  201. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/facts.py +0 -0
  202. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/spec.py +0 -0
  203. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/cost/types.py +0 -0
  204. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/__init__.py +0 -0
  205. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/async_client.py +0 -0
  206. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/billing.py +0 -0
  207. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/checkpoints.py +0 -0
  208. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/client.py +0 -0
  209. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/controller.py +0 -0
  210. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/managed.py +0 -0
  211. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/server.py +0 -0
  212. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/session.py +0 -0
  213. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/starter.py +0 -0
  214. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/types.py +0 -0
  215. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/custom/validation.py +0 -0
  216. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/__init__.py +0 -0
  217. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/__init__.py +0 -0
  218. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/kv_sizing.py +0 -0
  219. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/model_config_probe.py +0 -0
  220. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/prompt_budget.py +0 -0
  221. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/recipe.py +0 -0
  222. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/plan/steps.py +0 -0
  223. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/__init__.py +0 -0
  224. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/dataset_profile.py +0 -0
  225. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/image_tokens.py +0 -0
  226. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/reasoning_render.py +0 -0
  227. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/sft_image_rows.py +0 -0
  228. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/sft_rows.py +0 -0
  229. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/sft_tools.py +0 -0
  230. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/tokenizer.py +0 -0
  231. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/profiling/workload_profile.py +0 -0
  232. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/result/__init__.py +0 -0
  233. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/result/accounting.py +0 -0
  234. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/result/rollout_samples.py +0 -0
  235. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/__init__.py +0 -0
  236. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/checkpoint_transport.py +0 -0
  237. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/huggingface.py +0 -0
  238. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/model_snapshot.py +0 -0
  239. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/verl_checkpoint.py +0 -0
  240. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/support/worker_entrypoint.py +0 -0
  241. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/__init__.py +0 -0
  242. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/__main__.py +0 -0
  243. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/entry/__init__.py +0 -0
  244. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/entry/rl.py +0 -0
  245. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/entry/worker.py +0 -0
  246. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/__init__.py +0 -0
  247. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/cpu_handoff.py +0 -0
  248. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/heartbeat.py +0 -0
  249. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/hf.py +0 -0
  250. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/prefetch.py +0 -0
  251. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/transfer.py +0 -0
  252. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/io/wandb_log.py +0 -0
  253. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/__init__.py +0 -0
  254. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/adapter.py +0 -0
  255. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/chatml_mask.py +0 -0
  256. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/decoding.py +0 -0
  257. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/lora.py +0 -0
  258. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/model/packing.py +0 -0
  259. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/perf/__init__.py +0 -0
  260. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/perf/diagnostics.py +0 -0
  261. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/perf/lifecycle.py +0 -0
  262. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/perf/memory.py +0 -0
  263. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/perf/model_size.py +0 -0
  264. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/runtime/__init__.py +0 -0
  265. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  266. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/runtime/phases.py +0 -0
  267. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/runtime/rng.py +0 -0
  268. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/runtime/state.py +0 -0
  269. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/__init__.py +0 -0
  270. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/__init__.py +0 -0
  271. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/__init__.py +0 -0
  272. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/agents.yaml +0 -0
  273. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/batch.py +0 -0
  274. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/compact_checkpoint.py +0 -0
  275. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/configuration.py +0 -0
  276. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/engine.py +0 -0
  277. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/flashinfer_cache.py +0 -0
  278. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/glue.py +0 -0
  279. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/launch.py +0 -0
  280. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/model.py +0 -0
  281. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/observations.py +0 -0
  282. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/options.py +0 -0
  283. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/prompt_media.py +0 -0
  284. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/queue.py +0 -0
  285. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/readiness.py +0 -0
  286. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/reference.py +0 -0
  287. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/registration.py +0 -0
  288. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/replay.py +0 -0
  289. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/replay_guard.py +0 -0
  290. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/rollout.py +0 -0
  291. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/rollout_contract.py +0 -0
  292. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/startup.py +0 -0
  293. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/tracking.py +0 -0
  294. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/trainer.py +0 -0
  295. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/upstream.py +0 -0
  296. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/vllm_worker.py +0 -0
  297. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/child/worker.py +0 -0
  298. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  299. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  300. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  301. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/persistence.py +0 -0
  302. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  303. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/lifecycle/timing.py +0 -0
  304. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/__init__.py +0 -0
  305. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/contract.py +0 -0
  306. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/episode.py +0 -0
  307. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/generation.py +0 -0
  308. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/identity.py +0 -0
  309. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/core/rollout/lifecycle.py +0 -0
  310. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/__init__.py +0 -0
  311. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/backend_common.py +0 -0
  312. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  313. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/rl_train.py +0 -0
  314. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  315. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  316. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/sft_train.py +0 -0
  317. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  318. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/__init__.py +0 -0
  319. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  320. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/contract.py +0 -0
  321. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/credit.py +0 -0
  322. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/entry.py +0 -0
  323. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/identity.py +0 -0
  324. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/metrics.py +0 -0
  325. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  326. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/reward.py +0 -0
  327. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/rollout.py +0 -0
  328. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/trainer.py +0 -0
  329. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/child/transport.py +0 -0
  330. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  331. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  332. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/launch/config.py +0 -0
  333. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  334. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  335. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  336. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  337. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  338. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  339. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/__init__.py +0 -0
  340. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/child/dataset.py +0 -0
  341. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/child/entry.py +0 -0
  342. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/child/loop.py +0 -0
  343. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/child/schedule.py +0 -0
  344. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/child/trainer.py +0 -0
  345. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  346. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  347. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/train/sft/setup/config.py +0 -0
  348. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/__init__.py +0 -0
  349. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/adapter_merger.py +0 -0
  350. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/capabilities.py +0 -0
  351. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/checkpoints.py +0 -0
  352. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/child_io.py +0 -0
  353. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/diagnostics.py +0 -0
  354. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/parallelism.py +0 -0
  355. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/engine/worker/verl/parent_work.py +0 -0
  356. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/__init__.py +0 -0
  357. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/__init__.py +0 -0
  358. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/adapter.py +0 -0
  359. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/base.py +0 -0
  360. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/loader.py +0 -0
  361. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/pull.py +0 -0
  362. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/loading/staged.py +0 -0
  363. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/__init__.py +0 -0
  364. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/cache_security.py +0 -0
  365. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/cache_storage.py +0 -0
  366. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/dataset_selection.py +0 -0
  367. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/evaluations.py +0 -0
  368. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/identity.py +0 -0
  369. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/meta/namespace_listing.py +0 -0
  370. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/package/__init__.py +0 -0
  371. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/package/direct_tokens.py +0 -0
  372. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/package/limits.py +0 -0
  373. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/package/unpack.py +0 -0
  374. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/registry/__init__.py +0 -0
  375. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/registry/azure.py +0 -0
  376. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/registry/packages.py +0 -0
  377. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/scoring/__init__.py +0 -0
  378. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/scoring/context.py +0 -0
  379. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/envs/scoring/response.py +0 -0
  380. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/__init__.py +0 -0
  381. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/__init__.py +0 -0
  382. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  383. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/attempt.py +0 -0
  384. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  385. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  386. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  387. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/processes.py +0 -0
  388. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  389. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  390. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/instances/instance.py +0 -0
  391. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/instances/poll.py +0 -0
  392. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  393. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  394. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/net/__init__.py +0 -0
  395. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/net/auth.py +0 -0
  396. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/net/deadline.py +0 -0
  397. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/net/http.py +0 -0
  398. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/_lifecycle/net/worker.py +0 -0
  399. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/artifacts/__init__.py +0 -0
  400. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/artifacts/hf.py +0 -0
  401. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/artifacts/weight_cache.py +0 -0
  402. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/__init__.py +0 -0
  403. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/allocator.py +0 -0
  404. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/base.py +0 -0
  405. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/fit_errors.py +0 -0
  406. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/preflight.py +0 -0
  407. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/registry.py +0 -0
  408. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/core/sharding.py +0 -0
  409. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/__init__.py +0 -0
  410. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/api.py +0 -0
  411. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/auth.py +0 -0
  412. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/checkpoint_upload.py +0 -0
  413. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/handles.py +0 -0
  414. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/jobs.py +0 -0
  415. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/prefetch.py +0 -0
  416. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/pricing.py +0 -0
  417. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/provider.py +0 -0
  418. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/providers/modal/startup.py +0 -0
  419. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/py.typed +0 -0
  420. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/__init__.py +0 -0
  421. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/accounting/__init__.py +0 -0
  422. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/accounting/artifacts.py +0 -0
  423. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/accounting/costs.py +0 -0
  424. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/accounting/weight_cache.py +0 -0
  425. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/__init__.py +0 -0
  426. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/attempts.py +0 -0
  427. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/claim_lock.py +0 -0
  428. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/cleanup.py +0 -0
  429. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/deadlines.py +0 -0
  430. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/preparation.py +0 -0
  431. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/reporting.py +0 -0
  432. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/runtime_credentials.py +0 -0
  433. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/state.py +0 -0
  434. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/status.py +0 -0
  435. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/lifecycle/submit.py +0 -0
  436. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/results/__init__.py +0 -0
  437. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/results/checkpoints.py +0 -0
  438. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/results/deployments.py +0 -0
  439. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/__init__.py +0 -0
  440. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/attach.py +0 -0
  441. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/deploy.py +0 -0
  442. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/errors.py +0 -0
  443. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/execution.py +0 -0
  444. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/lifecycle.py +0 -0
  445. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/recovery.py +0 -0
  446. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/retry_decision.py +0 -0
  447. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runner/supervise/transitions.py +0 -0
  448. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runtime_capsule/__init__.py +0 -0
  449. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runtime_capsule/build.py +0 -0
  450. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runtime_capsule/manifest.py +0 -0
  451. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/runtime_capsule/profiles.py +0 -0
  452. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/schema/fields.py +0 -0
  453. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/__init__.py +0 -0
  454. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/__init__.py +0 -0
  455. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/__main__.py +0 -0
  456. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/bootstrap.py +0 -0
  457. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/chat_stream.py +0 -0
  458. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/http.py +0 -0
  459. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/launch.py +0 -0
  460. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/manifest.py +0 -0
  461. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/materialize.py +0 -0
  462. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/openai.py +0 -0
  463. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/app/progress.py +0 -0
  464. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/__init__.py +0 -0
  465. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/errors.py +0 -0
  466. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/protocol.py +0 -0
  467. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/provenance.py +0 -0
  468. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/responses.py +0 -0
  469. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/contract/urls.py +0 -0
  470. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/__init__.py +0 -0
  471. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/_canonical.py +0 -0
  472. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/_serialization.py +0 -0
  473. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/_urls.py +0 -0
  474. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/credentials.py +0 -0
  475. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/planning.py +0 -0
  476. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/control/types.py +0 -0
  477. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/__init__.py +0 -0
  478. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/adapter_check.py +0 -0
  479. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/deploy.py +0 -0
  480. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/download.py +0 -0
  481. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/export.py +0 -0
  482. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/preflight.py +0 -0
  483. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/readiness.py +0 -0
  484. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/deployment/resolve.py +0 -0
  485. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/__init__.py +0 -0
  486. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/common/__init__.py +0 -0
  487. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/common/records.py +0 -0
  488. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/__init__.py +0 -0
  489. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  490. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  491. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  492. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  493. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  494. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  495. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  496. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  497. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  498. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  499. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  500. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  501. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  502. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/__init__.py +0 -0
  503. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/openai.py +0 -0
  504. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/runtime_support.py +0 -0
  505. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/schema_types.py +0 -0
  506. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/streaming.py +0 -0
  507. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/text_scan.py +0 -0
  508. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/thinking.py +0 -0
  509. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/transport.py +0 -0
  510. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/request/validation.py +0 -0
  511. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/__init__.py +0 -0
  512. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/adapters.py +0 -0
  513. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/cache_admission.py +0 -0
  514. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/cache_retention.py +0 -0
  515. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/cache_scheduler.py +0 -0
  516. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/errors.py +0 -0
  517. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/hub.py +0 -0
  518. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/multimodal.py +0 -0
  519. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/prompt.py +0 -0
  520. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/prompt_cache.py +0 -0
  521. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/sampling.py +0 -0
  522. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/structured_outputs.py +0 -0
  523. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/token_batch.py +0 -0
  524. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/token_prefix_cache.py +0 -0
  525. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/tool_calls.py +0 -0
  526. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serve/runtime/types.py +0 -0
  527. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/__init__.py +0 -0
  528. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/__main__.py +0 -0
  529. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/asgi/__init__.py +0 -0
  530. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/asgi/app.py +0 -0
  531. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/asgi/cli.py +0 -0
  532. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/billing/__init__.py +0 -0
  533. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/billing/charges.py +0 -0
  534. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/billing/retry.py +0 -0
  535. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/__init__.py +0 -0
  536. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/ops/__init__.py +0 -0
  537. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/ops/repo_cleanup.py +0 -0
  538. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/ops/serving_resources.py +0 -0
  539. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/__init__.py +0 -0
  540. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/blob_envs.py +0 -0
  541. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/checkpoints.py +0 -0
  542. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/env_files.py +0 -0
  543. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/environment_registry.py +0 -0
  544. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/envs.py +0 -0
  545. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/projects.py +0 -0
  546. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/domain/registry/runs.py +0 -0
  547. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/__init__.py +0 -0
  548. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/auth.py +0 -0
  549. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/db.py +0 -0
  550. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/deployment_jobs.py +0 -0
  551. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/deployment_state.py +0 -0
  552. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/deps.py +0 -0
  553. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/internal_client.py +0 -0
  554. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/locks.py +0 -0
  555. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/plane_lease.py +0 -0
  556. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/platform/runtime.py +0 -0
  557. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/__init__.py +0 -0
  558. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/adapter_download.py +0 -0
  559. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/custom.py +0 -0
  560. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/env_files.py +0 -0
  561. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/envs.py +0 -0
  562. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/meta.py +0 -0
  563. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/runs.py +0 -0
  564. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/serving.py +0 -0
  565. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/serving_chat.py +0 -0
  566. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/serving_completion.py +0 -0
  567. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/serving_revisions.py +0 -0
  568. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/server/routes/serving_smoke.py +0 -0
  569. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/__init__.py +0 -0
  570. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/app/__init__.py +0 -0
  571. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/app/timeouts.py +0 -0
  572. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/__init__.py +0 -0
  573. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/README.md +0 -0
  574. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/__init__.py +0 -0
  575. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/autoscaling.py +0 -0
  576. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/client.py +0 -0
  577. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/events.py +0 -0
  578. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/http.py +0 -0
  579. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/modal_app.py +0 -0
  580. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/render.py +0 -0
  581. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/retries.py +0 -0
  582. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/app/rollout.py +0 -0
  583. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/contract/__init__.py +0 -0
  584. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/contract/config.py +0 -0
  585. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/contract/errors.py +0 -0
  586. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/contract/protocol.py +0 -0
  587. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/contract/tokenizer.py +0 -0
  588. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/native/__init__.py +0 -0
  589. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/native/engram_transport.py +0 -0
  590. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/native/image.py +0 -0
  591. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/native/patches.py +0 -0
  592. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/native/transport.py +0 -0
  593. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/__init__.py +0 -0
  594. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/bridge.py +0 -0
  595. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/kernel_cache.py +0 -0
  596. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/prefill_scheduler.py +0 -0
  597. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/prefix_cache.py +0 -0
  598. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/provenance.py +0 -0
  599. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/routing.py +0 -0
  600. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/snapshots.py +0 -0
  601. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/tiered_cache.py +0 -0
  602. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/warmup.py +0 -0
  603. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/deepinfer/runtime/worker.py +0 -0
  604. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/promotion/__init__.py +0 -0
  605. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/promotion/accounting_smoke_test.py +0 -0
  606. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/promotion/canary.py +0 -0
  607. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/promotion/evidence.py +0 -0
  608. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/promotion/gate.py +0 -0
  609. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/__init__.py +0 -0
  610. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/accounting/__init__.py +0 -0
  611. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/accounting/usage_facts.py +0 -0
  612. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/accounting/usage_outbox.py +0 -0
  613. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/accounting/usage_retry.py +0 -0
  614. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/__init__.py +0 -0
  615. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/errors.py +0 -0
  616. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/hub.py +0 -0
  617. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/lora_entries.py +0 -0
  618. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/prequant_config.py +0 -0
  619. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/reasoning_usage.py +0 -0
  620. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/support.py +0 -0
  621. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/text_tokenizer.py +0 -0
  622. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/engine/warmup.py +0 -0
  623. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/__init__.py +0 -0
  624. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/adapter_routes.py +0 -0
  625. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/body_limit.py +0 -0
  626. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/context.py +0 -0
  627. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/headers.py +0 -0
  628. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/inference_routes.py +0 -0
  629. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/key_rate_limit.py +0 -0
  630. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/rate_limit.py +0 -0
  631. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/router.py +0 -0
  632. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/routing.py +0 -0
  633. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/http/stream_response.py +0 -0
  634. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/__init__.py +0 -0
  635. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/cache_namespace.py +0 -0
  636. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/multimodal.py +0 -0
  637. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/openai_request.py +0 -0
  638. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/openai_stream.py +0 -0
  639. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/provenance.py +0 -0
  640. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/requests.py +0 -0
  641. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/responses.py +0 -0
  642. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/schemas.py +0 -0
  643. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/streaming.py +0 -0
  644. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/io/structured_outputs.py +0 -0
  645. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/__init__.py +0 -0
  646. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/access.py +0 -0
  647. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/lookup.py +0 -0
  648. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/persisted_columns.py +0 -0
  649. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/persistence.py +0 -0
  650. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/registration.py +0 -0
  651. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/registry.py +0 -0
  652. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/settings.py +0 -0
  653. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/supabase_rest.py +0 -0
  654. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/store/undeploy.py +0 -0
  655. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/stream_channel/__init__.py +0 -0
  656. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/stream_channel/_tasks.py +0 -0
  657. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/stream_channel/client.py +0 -0
  658. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/stream_channel/engine.py +0 -0
  659. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/serving/src/stream_channel/protocol.py +0 -0
  660. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/snapshot/__init__.py +0 -0
  661. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/flash/snapshot/archive.py +0 -0
  662. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/build_dev_dist.py +0 -0
  663. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/check_file_size.py +0 -0
  664. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/check_function_size.py +0 -0
  665. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/check_rollout_identity_actor.py +0 -0
  666. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/check_source_layout.py +0 -0
  667. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/check_verl_pin_exists.py +0 -0
  668. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/fixtures/custom_algorithm.py +0 -0
  669. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/fixtures/modal_environment/dataset/train.jsonl +0 -0
  670. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/fixtures/modal_environment/environment.py +0 -0
  671. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/fixtures/modal_environment/evaluations.py +0 -0
  672. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/qualify_serving_profile.py +0 -0
  673. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/smoke_custom_training.py +0 -0
  674. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/scripts/smoke_modal_training.py +0 -0
  675. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/serve_launch.py +0 -0
  676. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/__init__.py +0 -0
  677. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/__init__.py +0 -0
  678. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/billing_precheck.py +0 -0
  679. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/chat_provenance.py +0 -0
  680. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/chat_transport.py +0 -0
  681. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/deployments.py +0 -0
  682. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/managed_chat.py +0 -0
  683. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/modal.py +0 -0
  684. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/profile.py +0 -0
  685. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/runner.py +0 -0
  686. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/server_api_plugin.py +0 -0
  687. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/source_snapshot.py +0 -0
  688. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/specs.py +0 -0
  689. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/_helpers/wire_headers.py +0 -0
  690. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/capture_image_sft_processor_oracle.py +0 -0
  691. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/capture_qwen38_27b_metadata.py +0 -0
  692. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/conftest.py +0 -0
  693. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  694. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  695. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  696. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  697. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  698. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  699. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/live/__init__.py +0 -0
  700. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/live/conftest.py +0 -0
  701. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/live/test_sft_thinking_render_live.py +0 -0
  702. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/checkpoint_fixtures.py +0 -0
  703. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/conftest.py +0 -0
  704. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_adapter_hub.py +0 -0
  705. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_artifact_protections.py +0 -0
  706. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_base_model_serving.py +0 -0
  707. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_chat_auth.py +0 -0
  708. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_checkpoint_fingerprint_validation.py +0 -0
  709. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  710. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_checkpoint_model_validation.py +0 -0
  711. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_checkpoint_revocation.py +0 -0
  712. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer.py +0 -0
  713. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_autoscaling.py +0 -0
  714. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_deadline.py +0 -0
  715. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_hosted.py +0 -0
  716. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_http_deadline.py +0 -0
  717. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_kernel_cache.py +0 -0
  718. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_latency.py +0 -0
  719. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_optimizations.py +0 -0
  720. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_parallel.py +0 -0
  721. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_prefill_scheduler.py +0 -0
  722. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_provenance.py +0 -0
  723. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_retention.py +0 -0
  724. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_retries.py +0 -0
  725. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_rollout.py +0 -0
  726. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_routing.py +0 -0
  727. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_deepinfer_tiering.py +0 -0
  728. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_engine_error_status.py +0 -0
  729. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_fp8_config.py +0 -0
  730. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_immutable_revisions.py +0 -0
  731. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_immutable_schemas.py +0 -0
  732. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_internal_header_integrity.py +0 -0
  733. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_key_rate_limit.py +0 -0
  734. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_key_rate_limit_review.py +0 -0
  735. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_kv_namespace.py +0 -0
  736. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_latency_admission.py +0 -0
  737. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_mirror_sampling_parity.py +0 -0
  738. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_modal_deploy_identity.py +0 -0
  739. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_modal_image_paths.py +0 -0
  740. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_multimodal.py +0 -0
  741. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_openai_stream_options.py +0 -0
  742. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_persistence.py +0 -0
  743. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_pre_first_disconnect.py +0 -0
  744. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_promotion_accounting_smoke.py +0 -0
  745. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_promotion_canary.py +0 -0
  746. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_promotion_evidence.py +0 -0
  747. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_promotion_gate.py +0 -0
  748. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_qwen_warmup.py +0 -0
  749. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_rate_limit.py +0 -0
  750. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_reasoning_usage.py +0 -0
  751. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_registration_endpoint.py +0 -0
  752. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_registry.py +0 -0
  753. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_registry_coverage.py +0 -0
  754. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_request_body_limit.py +0 -0
  755. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_router.py +0 -0
  756. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_router_coverage.py +0 -0
  757. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_router_edge_coverage.py +0 -0
  758. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_schemas_coverage.py +0 -0
  759. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_serve_reasoning_split.py +0 -0
  760. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_serve_thinking.py +0 -0
  761. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_settings.py +0 -0
  762. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_stream_channel.py +0 -0
  763. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_stream_response_disconnect.py +0 -0
  764. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_stream_wait_cleanup.py +0 -0
  765. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_structured_outputs.py +0 -0
  766. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_structured_outputs_coverage.py +0 -0
  767. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_supabase_rest_coverage.py +0 -0
  768. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_token_prefix_cache.py +0 -0
  769. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_usage_delivery_concurrency.py +0 -0
  770. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_usage_integrity.py +0 -0
  771. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving/test_usage_reporter.py +0 -0
  772. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving_conformance/__init__.py +0 -0
  773. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving_conformance/conftest.py +0 -0
  774. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/serving_conformance/test_contract.py +0 -0
  775. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_accounting_coverage.py +0 -0
  776. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_adapter_download.py +0 -0
  777. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_adapter_shard_completeness.py +0 -0
  778. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_agent_flash_cli_contract.py +0 -0
  779. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_algorithms.py +0 -0
  780. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_allocator.py +0 -0
  781. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_authenticated_redirects.py +0 -0
  782. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_azure_environment_registry.py +0 -0
  783. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_backend_common.py +0 -0
  784. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_backend_jobspec_contract.py +0 -0
  785. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_background_supervisor.py +0 -0
  786. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_bake_kernel_cache.py +0 -0
  787. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_bake_sandbox_entry.py +0 -0
  788. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_base_environment_integrity.py +0 -0
  789. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_base_model_provenance.py +0 -0
  790. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_billing_response_integrity.py +0 -0
  791. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_billing_retry.py +0 -0
  792. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_bootstrap_process_groups.py +0 -0
  793. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_bootstrap_reentry.py +0 -0
  794. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_bootstrap_worker_cleanup.py +0 -0
  795. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_build_context_contract.py +0 -0
  796. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cache_admission.py +0 -0
  797. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cache_retention.py +0 -0
  798. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cache_scheduler.py +0 -0
  799. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_capture_qwen38_metadata.py +0 -0
  800. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_catalog_only_models.py +0 -0
  801. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_charge_pricing.py +0 -0
  802. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_cancellation.py +0 -0
  803. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_deployment_inventory_api.py +0 -0
  804. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_deployments.py +0 -0
  805. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_lifecycle.py +0 -0
  806. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_listing_integrity.py +0 -0
  807. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_storage_overlap.py +0 -0
  808. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoint_transport.py +0 -0
  809. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_checkpoints.py +0 -0
  810. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_commands.py +0 -0
  811. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_commands_coverage.py +0 -0
  812. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_credential_shadowing.py +0 -0
  813. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_errors.py +0 -0
  814. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_estimate.py +0 -0
  815. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_gpus_flag.py +0 -0
  816. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_help.py +0 -0
  817. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_main_coverage.py +0 -0
  818. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_managed.py +0 -0
  819. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_render_coverage.py +0 -0
  820. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_render_theme.py +0 -0
  821. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_serve_deploy.py +0 -0
  822. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_serve_status.py +0 -0
  823. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_serve_undeploy.py +0 -0
  824. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_traces.py +0 -0
  825. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cli_wandb_warning.py +0 -0
  826. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_client.py +0 -0
  827. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_client_deadline_integrity.py +0 -0
  828. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_client_import_purity.py +0 -0
  829. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_client_server_integration.py +0 -0
  830. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_client_stream_reads.py +0 -0
  831. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_compact_checkpoint.py +0 -0
  832. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_config_env_vars.py +0 -0
  833. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_config_overrides.py +0 -0
  834. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_console_upload.py +0 -0
  835. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_controlled_experiment_repairs.py +0 -0
  836. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_analytical.py +0 -0
  837. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_currency.py +0 -0
  838. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_equation.py +0 -0
  839. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_estimate.py +0 -0
  840. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_hardware.py +0 -0
  841. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cost_models.py +0 -0
  842. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_cpu_checkpoint_handoff.py +0 -0
  843. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_checkpoints.py +0 -0
  844. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_client.py +0 -0
  845. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_gpu_selection.py +0 -0
  846. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_gradients.py +0 -0
  847. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_custom_session.py +0 -0
  848. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_dataset_profile.py +0 -0
  849. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_deploy_latency.py +0 -0
  850. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_deployment_cleanup_resilience.py +0 -0
  851. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_deployment_generation_completion.py +0 -0
  852. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_deployment_registration_cleanup.py +0 -0
  853. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_dev_channel.py +0 -0
  854. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_cache_evict.py +0 -0
  855. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_delete.py +0 -0
  856. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_download.py +0 -0
  857. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_download_api.py +0 -0
  858. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_evaluations.py +0 -0
  859. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_list_api.py +0 -0
  860. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_list_cli.py +0 -0
  861. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_list_registry.py +0 -0
  862. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_no_install.py +0 -0
  863. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_publish.py +0 -0
  864. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_pull.py +0 -0
  865. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_pull_coverage.py +0 -0
  866. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_pull_loader_coverage.py +0 -0
  867. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_pull_managed_control_plane.py +0 -0
  868. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_push.py +0 -0
  869. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_rate_limit_resolve.py +0 -0
  870. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_ref_pinning.py +0 -0
  871. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_env_test.py +0 -0
  872. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_environment_cache_integrity.py +0 -0
  873. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_environment_publish_integrity.py +0 -0
  874. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_envs_coverage.py +0 -0
  875. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_export.py +0 -0
  876. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_flash_mvp.py +0 -0
  877. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_flash_worker.py +0 -0
  878. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_flashinfer_aot_cache.py +0 -0
  879. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_flashinfer_cache_dirs.py +0 -0
  880. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_freesolo_api_transport.py +0 -0
  881. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_fused_expert_warmstart.py +0 -0
  882. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_generation_eos.py +0 -0
  883. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_github_urlopen_retry.py +0 -0
  884. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_gpu_type_single_field.py +0 -0
  885. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_gpus.py +0 -0
  886. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_checkpoint_durability.py +0 -0
  887. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_metric_stream.py +0 -0
  888. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_params.py +0 -0
  889. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_resident_sizing.py +0 -0
  890. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_reward_batching.py +0 -0
  891. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_reward_context.py +0 -0
  892. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_rollout_contract.py +0 -0
  893. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_grpo_rollout_identity.py +0 -0
  894. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_health_liveness.py +0 -0
  895. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_heartbeat_startup_cleanup.py +0 -0
  896. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_hf_retry.py +0 -0
  897. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_hosted_adapter_admission.py +0 -0
  898. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_image_environment_capability.py +0 -0
  899. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_image_incremental_processor.py +0 -0
  900. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_image_sft_markers.py +0 -0
  901. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_image_sft_processor_parity.py +0 -0
  902. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_image_tokens.py +0 -0
  903. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_infisical_secrets.py +0 -0
  904. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_internal_client.py +0 -0
  905. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_kernel_bake_build_contracts.py +0 -0
  906. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_kernel_cache.py +0 -0
  907. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_kernel_fingerprint.py +0 -0
  908. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_kv_util.py +0 -0
  909. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_local_credential_integrity.py +0 -0
  910. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_logging.py +0 -0
  911. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_login_perms.py +0 -0
  912. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_lora_rank_coverage.py +0 -0
  913. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_lora_rank_nested_rung.py +0 -0
  914. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_lora_rank_preflight.py +0 -0
  915. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_lora_targeting.py +0 -0
  916. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_lora_targeting_pinned_verl.py +0 -0
  917. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_managed_config_fields.py +0 -0
  918. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_managed_hf_repo.py +0 -0
  919. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_metrics_schema_agent_contract.py +0 -0
  920. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_mig_guard.py +0 -0
  921. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_mirror_sampling_parity.py +0 -0
  922. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_api_loop.py +0 -0
  923. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_prefetch_snapshot.py +0 -0
  924. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_provider.py +0 -0
  925. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_startup.py +0 -0
  926. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_modal_training_lifecycle.py +0 -0
  927. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_multi_gpu_gate.py +0 -0
  928. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_multimodal_boundary_integrity.py +0 -0
  929. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_multimodal_training.py +0 -0
  930. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_named_reward_metrics.py +0 -0
  931. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_notify_tests_repo.py +0 -0
  932. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_offline_http.py +0 -0
  933. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_oom_escalate_gpu.py +0 -0
  934. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_orchestrator_flash.py +0 -0
  935. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_packing.py +0 -0
  936. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_packing_coverage.py +0 -0
  937. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_persisted_spec_envelope.py +0 -0
  938. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_plane_lease.py +0 -0
  939. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_poll_helpers.py +0 -0
  940. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_preflight.py +0 -0
  941. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_projects.py +0 -0
  942. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_prompt_budget.py +0 -0
  943. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_removed_algorithms.py +0 -0
  944. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_removed_training_settings.py +0 -0
  945. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_replay_guard.py +0 -0
  946. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_repo_cleanup.py +0 -0
  947. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_resolve_params_b.py +0 -0
  948. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_resume_on_retry.py +0 -0
  949. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_retry_decision.py +0 -0
  950. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_reward_server_cleanup.py +0 -0
  951. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_rollout_engine_prompt.py +0 -0
  952. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_rollout_samples.py +0 -0
  953. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_run_log_integrity.py +0 -0
  954. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_run_registry_lifecycle.py +0 -0
  955. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_runmgmt.py +0 -0
  956. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_runtime_capsule.py +0 -0
  957. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_runtime_credentials.py +0 -0
  958. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_runtime_secret_integrity.py +0 -0
  959. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_schema_boundary_integrity.py +0 -0
  960. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve.py +0 -0
  961. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_launch.py +0 -0
  962. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_manifest.py +0 -0
  963. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_materialize.py +0 -0
  964. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_packaging.py +0 -0
  965. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_app_progress.py +0 -0
  966. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_cache_resource_cleanup.py +0 -0
  967. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_chat_transport.py +0 -0
  968. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_control.py +0 -0
  969. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_docs.py +0 -0
  970. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_modal_contract_lock.py +0 -0
  971. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_modal_sdk.py +0 -0
  972. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  973. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_modal_teardown_identity.py +0 -0
  974. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_profile_qualification.py +0 -0
  975. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_provisioning_common.py +0 -0
  976. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_provisioning_modal.py +0 -0
  977. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_reasoning_content.py +0 -0
  978. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_resolve_provenance.py +0 -0
  979. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_runtime_adapters.py +0 -0
  980. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_runtime_hub.py +0 -0
  981. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_runtime_package.py +0 -0
  982. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serve_runtime_types.py +0 -0
  983. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_api.py +0 -0
  984. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_app_coverage.py +0 -0
  985. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_auth_singleflight.py +0 -0
  986. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_billing.py +0 -0
  987. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_checkpoints_coverage.py +0 -0
  988. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_db.py +0 -0
  989. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_envs_coverage.py +0 -0
  990. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_locks_coverage.py +0 -0
  991. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_managed_chat_requests.py +0 -0
  992. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_serving_resources.py +0 -0
  993. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_server_standalone.py +0 -0
  994. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serving_conformance_gate.py +0 -0
  995. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serving_context_preflight.py +0 -0
  996. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serving_contract.py +0 -0
  997. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serving_input_integrity.py +0 -0
  998. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_serving_schema_coverage.py +0 -0
  999. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_batch_prefetch.py +0 -0
  1000. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_cancel_profile_pricing.py +0 -0
  1001. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_chunked_nll.py +0 -0
  1002. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_cost_reduction.py +0 -0
  1003. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_dataset_lazy_images.py +0 -0
  1004. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_dataset_nulls.py +0 -0
  1005. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_example_selection.py +0 -0
  1006. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_gc_off.py +0 -0
  1007. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_max_context.py +0 -0
  1008. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_memory_policy.py +0 -0
  1009. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_step_floor.py +0 -0
  1010. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_tools.py +0 -0
  1011. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_warmup_schedule.py +0 -0
  1012. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_sft_workload.py +0 -0
  1013. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_smoke_content_integrity.py +0 -0
  1014. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_source_attestation_flow.py +0 -0
  1015. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_source_layout.py +0 -0
  1016. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_source_snapshot.py +0 -0
  1017. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_spec_and_validation.py +0 -0
  1018. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_spec_contract_bytes.py +0 -0
  1019. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_staged_environment.py +0 -0
  1020. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_status_reporting.py +0 -0
  1021. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_status_updates.py +0 -0
  1022. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_step_floor.py +0 -0
  1023. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_step_metrics.py +0 -0
  1024. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_step_timing.py +0 -0
  1025. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_structured_option_safety.py +0 -0
  1026. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_structured_outputs.py +0 -0
  1027. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_structured_runtime_options.py +0 -0
  1028. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_submission_outcome.py +0 -0
  1029. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_terminal_artifacts.py +0 -0
  1030. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_thinking_config.py +0 -0
  1031. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_tool_scalar_unions.py +0 -0
  1032. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_train_context_preflight.py +0 -0
  1033. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_training_controls.py +0 -0
  1034. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_training_phases.py +0 -0
  1035. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_transfer_queue_init.py +0 -0
  1036. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_type_comment_prose.py +0 -0
  1037. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_upload_concurrency.py +0 -0
  1038. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_upstream_rollout_contract.py +0 -0
  1039. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_upstream_runtime_policy.py +0 -0
  1040. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_upstream_verl_contract.py +0 -0
  1041. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_verifiers.py +0 -0
  1042. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_verl_checkpoint_export.py +0 -0
  1043. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_verl_child_plugins.py +0 -0
  1044. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_verl_silence_watchdog.py +0 -0
  1045. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_version.py +0 -0
  1046. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_versioned_rollout_contract.py +0 -0
  1047. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  1048. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_vllm_moe_lora_backport.py +0 -0
  1049. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_vram_architecture.py +0 -0
  1050. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_wandb_link.py +0 -0
  1051. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_wandb_naming.py +0 -0
  1052. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_warmstart_adapter_download.py +0 -0
  1053. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_warmstart_cross_repo.py +0 -0
  1054. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_warmstart_error_attribution.py +0 -0
  1055. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_warmstart_image_adapters.py +0 -0
  1056. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_watchdog_startup_cleanup.py +0 -0
  1057. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_weight_cache.py +0 -0
  1058. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_dryrun.py +0 -0
  1059. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_hardexit.py +0 -0
  1060. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_init_heartbeat.py +0 -0
  1061. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_stack.py +0 -0
  1062. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_worker_thinking.py +0 -0
  1063. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_workflow_contracts.py +0 -0
  1064. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/tests/test_workload_profile.py +0 -0
  1065. {freesolo_flash_dev-1.4.7 → freesolo_flash_dev-1.4.9}/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"
@@ -19,6 +19,7 @@ on:
19
19
  - "uv.lock"
20
20
  - "flash/**"
21
21
  - "scripts/build_dev_dist.py"
22
+ - "scripts/check_dev_release.py"
22
23
  - ".github/workflows/publish-dev.yml"
23
24
  workflow_dispatch:
24
25
 
@@ -82,24 +83,7 @@ jobs:
82
83
  id: decide
83
84
  env:
84
85
  VERSION: ${{ steps.meta.outputs.version }}
85
- run: |
86
- python3 - <<'PY' >> "$GITHUB_OUTPUT"
87
- import os
88
- import urllib.error
89
- import urllib.request
90
-
91
- version = os.environ["VERSION"]
92
- url = f"https://pypi.org/pypi/freesolo-flash-dev/{version}/json"
93
- published = False
94
- try:
95
- with urllib.request.urlopen(url, timeout=30) as response:
96
- published = response.status == 200
97
- except urllib.error.HTTPError as error:
98
- if error.code != 404:
99
- raise
100
- # Publish only when the dev version isn't on PyPI yet (i.e. it was just bumped).
101
- print(f"publish={'false' if published else 'true'}")
102
- PY
86
+ run: python3 scripts/check_dev_release.py >> "$GITHUB_OUTPUT"
103
87
 
104
88
  - name: Already published (nothing to do)
105
89
  if: steps.decide.outputs.publish == 'false'
@@ -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.7
3
+ Version: 1.4.9
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
@@ -144,11 +144,19 @@ path is self-hostable end to end — see **[SELF_HOSTING.md](SELF_HOSTING.md)**.
144
144
 
145
145
  ## Using the hosted service
146
146
 
147
- The active training catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
148
- `Qwen/Qwen3.6-35B-A3B`. The hosted serving catalog routes all three models on B200.
149
- The retired dense Qwen3.6 27B identity is never translated into Qwen3.8. Customer-owned
150
- Modal supports all three active models; 27B and 35B-A3B are bound to the certified serving image
151
- digest. Customer-owned `flash serve` requires explicit `--provider modal`. Training and serving both use Modal.
147
+ The training catalog includes Qwen3.5 0.8B, 4B, 9B, and **9B Base**, Qwen3.8 27B,
148
+ and Qwen3.6 35B-A3B. `Qwen/Qwen3.5-9B` is Qwen's post-trained chat model and remains
149
+ the default. Select `model = "Qwen/Qwen3.5-9B-Base"` to fine-tune the pretrained-only
150
+ checkpoint with SFT or GRPO. It has its own weights, tokenizer revision, adapters,
151
+ and Modal cache entry; it is never mapped to the post-trained model's FP8 weights.
152
+ Its native chat template supports text, images, and tool calls, but the pretrained
153
+ weights have not been tuned for instruction following.
154
+
155
+ Hosted serving uses the [per-model GPU placements](flash/serving/app/README.md#hosted-gpu-configuration).
156
+ The 9B Base checkpoint serves in BF16 on H100 with a 262,144-token context.
157
+ Customer-owned `flash serve` requires explicit `--provider modal` and a live-qualified
158
+ profile. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8.
159
+ Training and serving both use Modal.
152
160
 
153
161
  `flash login` is not interactive. Export `FREESOLO_API_KEY` first so the key does not appear in process listings:
154
162
 
@@ -348,6 +356,12 @@ and unions on top-level function arguments are unsupported. Top-level arguments
348
356
  native parameter text, where a string such as `"12"` and a number would be ambiguous;
349
357
  nested JSON preserves those types during generation, streaming, and history replay.
350
358
 
359
+ Qualified Qwen tool-calling routes support thinking-enabled generation. Tool calls are
360
+ parsed only after the first `</think>`; tool-like text inside reasoning stays in
361
+ `reasoning_content`. A response that ends before that boundary cannot execute tools.
362
+ Streaming preserves the same separation, and saved adapters retain their configured
363
+ thinking mode. Tools still cannot be combined with logprobs or structured outputs.
364
+
351
365
  ### Workload estimates (SFT)
352
366
 
353
367
  `flash train`, `--dry-run`, and `--cost` read the pinned environment's packaged dataset
@@ -44,11 +44,19 @@ path is self-hostable end to end — see **[SELF_HOSTING.md](SELF_HOSTING.md)**.
44
44
 
45
45
  ## Using the hosted service
46
46
 
47
- The active training catalog is `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
48
- `Qwen/Qwen3.6-35B-A3B`. The hosted serving catalog routes all three models on B200.
49
- The retired dense Qwen3.6 27B identity is never translated into Qwen3.8. Customer-owned
50
- Modal supports all three active models; 27B and 35B-A3B are bound to the certified serving image
51
- digest. Customer-owned `flash serve` requires explicit `--provider modal`. Training and serving both use Modal.
47
+ The training catalog includes Qwen3.5 0.8B, 4B, 9B, and **9B Base**, Qwen3.8 27B,
48
+ and Qwen3.6 35B-A3B. `Qwen/Qwen3.5-9B` is Qwen's post-trained chat model and remains
49
+ the default. Select `model = "Qwen/Qwen3.5-9B-Base"` to fine-tune the pretrained-only
50
+ checkpoint with SFT or GRPO. It has its own weights, tokenizer revision, adapters,
51
+ and Modal cache entry; it is never mapped to the post-trained model's FP8 weights.
52
+ Its native chat template supports text, images, and tool calls, but the pretrained
53
+ weights have not been tuned for instruction following.
54
+
55
+ Hosted serving uses the [per-model GPU placements](flash/serving/app/README.md#hosted-gpu-configuration).
56
+ The 9B Base checkpoint serves in BF16 on H100 with a 262,144-token context.
57
+ Customer-owned `flash serve` requires explicit `--provider modal` and a live-qualified
58
+ profile. The retired dense Qwen3.6 27B identity is never translated into Qwen3.8.
59
+ Training and serving both use Modal.
52
60
 
53
61
  `flash login` is not interactive. Export `FREESOLO_API_KEY` first so the key does not appear in process listings:
54
62
 
@@ -248,6 +256,12 @@ and unions on top-level function arguments are unsupported. Top-level arguments
248
256
  native parameter text, where a string such as `"12"` and a number would be ambiguous;
249
257
  nested JSON preserves those types during generation, streaming, and history replay.
250
258
 
259
+ Qualified Qwen tool-calling routes support thinking-enabled generation. Tool calls are
260
+ parsed only after the first `</think>`; tool-like text inside reasoning stays in
261
+ `reasoning_content`. A response that ends before that boundary cannot execute tools.
262
+ Streaming preserves the same separation, and saved adapters retain their configured
263
+ thinking mode. Tools still cannot be combined with logprobs or structured outputs.
264
+
251
265
  ### Workload estimates (SFT)
252
266
 
253
267
  `flash train`, `--dry-run`, and `--cost` read the pinned environment's packaged dataset
@@ -0,0 +1,17 @@
1
+ """Normalize chat-template metadata from a checkpoint's own processor and tokenizer."""
2
+
3
+ from typing import Any
4
+
5
+
6
+ def inherit_tokenizer_chat_template(processor: Any) -> None:
7
+ """Support checkpoints that publish their template only in tokenizer_config.json.
8
+
9
+ Transformers loads that template onto the tokenizer but not AutoProcessor.
10
+ Preserve explicit processor templates and never substitute another model's tokenizer.
11
+ Missing templates remain missing so the normal request validation can reject them.
12
+ """
13
+ if getattr(processor, "chat_template", None) is None:
14
+ tokenizer = getattr(processor, "tokenizer", None)
15
+ template = getattr(tokenizer, "chat_template", None)
16
+ if template is not None:
17
+ processor.chat_template = template
@@ -0,0 +1,13 @@
1
+ """Chat-turn boundaries for pretrained checkpoints with document-level EOS metadata."""
2
+
3
+ from typing import Any
4
+
5
+
6
+ def chat_stop_token_ids(model: str, tokenizer: Any, *, is_chat: bool) -> list[int] | None:
7
+ """Stop Base chat at im_end without changing its tokenizer or raw completion EOS."""
8
+ if model != "Qwen/Qwen3.5-9B-Base" or not is_chat:
9
+ return None
10
+ token_id = tokenizer.convert_tokens_to_ids("<|im_end|>")
11
+ if type(token_id) is not int or token_id < 0 or token_id == tokenizer.unk_token_id:
12
+ raise ValueError("Qwen3.5 9B Base tokenizer is missing its chat end token")
13
+ return [token_id]
@@ -16,6 +16,7 @@ _ON_POLICY_ALGORITHMS = frozenset({"grpo"})
16
16
  _IMAGE_TRAINING_MODELS = frozenset(
17
17
  {
18
18
  "Qwen/Qwen3.5-9B",
19
+ "Qwen/Qwen3.5-9B-Base",
19
20
  "Qwen/Qwen3.8-27B",
20
21
  "Qwen/Qwen3.6-35B-A3B",
21
22
  }
@@ -218,6 +219,7 @@ SERVING_MODEL_REPOS: dict[str, str] = {
218
219
  "Qwen/Qwen3.5-0.8B": "Qwen/Qwen3.5-0.8B",
219
220
  "Qwen/Qwen3.5-4B": "Qwen/Qwen3.5-4B",
220
221
  "Qwen/Qwen3.5-9B": "Freesolo-Co/Qwen3.5-9B-FP8",
222
+ "Qwen/Qwen3.5-9B-Base": "Qwen/Qwen3.5-9B-Base",
221
223
  "Qwen/Qwen3.8-27B": "Qwen/Qwen3.8-27B-FP8",
222
224
  "Qwen/Qwen3.6-35B-A3B": "Qwen/Qwen3.6-35B-A3B",
223
225
  }
@@ -532,6 +534,32 @@ MODELS: dict[str, ModelInfo] = {
532
534
  }
533
535
 
534
536
 
537
+ # The pretrained checkpoint has the same architecture and native chat template as 9B,
538
+ # but distinct weights, EOS metadata, and adapter identity. Never serve it via the
539
+ # post-trained model's FP8 repository.
540
+ MODELS["Qwen/Qwen3.5-9B-Base"] = replace(
541
+ MODELS["Qwen/Qwen3.5-9B"],
542
+ id="Qwen/Qwen3.5-9B-Base",
543
+ display_name="Qwen3.5 9B Base (pretrained)",
544
+ managed_revision="68c46c4b3498877f3ef123c856ecfde50c39f404",
545
+ serving=ServingCapacity(
546
+ gpu="H100",
547
+ serve_model_id="Qwen/Qwen3.5-9B-Base",
548
+ max_loras=16,
549
+ max_cpu_loras=16,
550
+ max_lora_rank=128,
551
+ max_model_len=262144,
552
+ max_num_seqs=8,
553
+ tensor_parallel_size=1,
554
+ gpu_memory_utilization=0.90,
555
+ image_limit=MAX_IMAGES_PER_CONVERSATION,
556
+ ),
557
+ notes="Pretrained-only Qwen3.5 9B; bf16 LoRA SFT/GRPO. Uses its own weights and "
558
+ "tokenizer, not the post-trained 9B. Native chat/thinking formatting is available for "
559
+ "fine-tuning; instruction following and reasoning are not post-trained. BF16 serving on H100.",
560
+ )
561
+
562
+
535
563
  def list_models() -> list[ModelInfo]:
536
564
  return sorted(MODELS.values(), key=lambda m: (m.min_vram_gb, m.id))
537
565
 
@@ -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
@@ -342,17 +343,47 @@ def load_backend(
342
343
  torch_dtype=torch.bfloat16,
343
344
  attn_implementation="sdpa",
344
345
  ).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
- )
346
+ if init_adapter:
347
+ model = _warm_start(model, init_adapter, lora_rank, lora_alpha)
348
+ else:
349
+ model = get_peft_model(
350
+ model,
351
+ LoraConfig(
352
+ r=lora_rank,
353
+ lora_alpha=lora_alpha or 2 * lora_rank,
354
+ lora_dropout=0,
355
+ target_modules="all-linear",
356
+ task_type="CAUSAL_LM",
357
+ revision=revision,
358
+ **targeting,
359
+ ),
360
+ )
357
361
  model.config._commit_hash = revision
358
362
  return TorchBackend(model, tokenizer, checkpoint_dir=checkpoint_dir, max_tokens=max_tokens)
363
+
364
+
365
+ def _warm_start(model, adapter_dir, lora_rank, lora_alpha):
366
+ """Continue a verified source LoRA: its exact modules and weights, with fresh optimizer state.
367
+
368
+ The source config keeps its target modules; dropout is disabled like every custom adapter so
369
+ gradient checkpointing stays exact. Every source tensor must land on a trainable parameter:
370
+ peft only warns about unmatched keys, which would silently restart from zero.
371
+ """
372
+ from peft import LoraConfig, get_peft_model, load_peft_weights, set_peft_model_state_dict
373
+
374
+ config = LoraConfig.from_pretrained(adapter_dir)
375
+ if (config.r, config.lora_alpha) != (lora_rank, lora_alpha or 2 * lora_rank):
376
+ raise ValueError("warm-start adapter rank or alpha differs from the prepared run")
377
+ config.lora_dropout = 0
378
+ config.inference_mode = False
379
+ model = get_peft_model(model, config)
380
+ weights = load_peft_weights(adapter_dir, device="cuda")
381
+ result = set_peft_model_state_dict(model, weights)
382
+ trainable = [name for name, p in model.named_parameters() if p.requires_grad]
383
+ if result.unexpected_keys or len(weights) != len(trainable):
384
+ raise ValueError(
385
+ "warm-start adapter weights do not match the model's LoRA parameters "
386
+ f"({len(weights)} source tensors, {len(trainable)} trainable, "
387
+ f"{len(result.unexpected_keys)} unmatched)"
388
+ )
389
+ 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
@@ -138,6 +138,7 @@ _SFT_CHUNKED_NLL_MODELS = frozenset(
138
138
  "Qwen/Qwen3.5-0.8B",
139
139
  "Qwen/Qwen3.5-4B",
140
140
  "Qwen/Qwen3.5-9B",
141
+ "Qwen/Qwen3.5-9B-Base",
141
142
  "Qwen/Qwen3.8-27B",
142
143
  "Qwen/Qwen3.6-35B-A3B",
143
144
  }
@@ -12,6 +12,7 @@ from pathlib import Path
12
12
  from typing import Any, Protocol, TypedDict, cast
13
13
 
14
14
  from flash.content.multimodal import NormalizedImages
15
+ from flash.content.processor import inherit_tokenizer_chat_template
15
16
  from flash.content.thinking import messages_for_chat_template
16
17
  from flash.engine.plan.recipe import RECIPE
17
18
  from flash.engine.plan.steps import resolve_update_horizon, sft_update_steps
@@ -190,11 +191,11 @@ def _default_processor_loader(model_id: str, revision: str):
190
191
 
191
192
  from flash.engine.support.huggingface import model_revision_kwargs
192
193
 
193
- return AutoProcessor.from_pretrained(
194
- model_id,
195
- trust_remote_code=True,
196
- **model_revision_kwargs(revision),
194
+ processor = AutoProcessor.from_pretrained(
195
+ model_id, trust_remote_code=True, **model_revision_kwargs(revision)
197
196
  )
197
+ inherit_tokenizer_chat_template(processor)
198
+ return processor
198
199
 
199
200
 
200
201
  def _packing_mode(