freesolo-flash-dev 1.2.121__tar.gz → 1.2.122__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 (879) hide show
  1. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/PKG-INFO +1 -1
  2. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docs/serving-contract.md +1 -1
  3. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/core/catalog.py +1 -1
  4. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/app/README.md +10 -9
  5. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/app/modal_app.py +6 -2
  6. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/accounting/usage.py +10 -9
  7. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/model_config.py +31 -29
  8. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/prequant_config.py +4 -4
  9. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/pyproject.toml +2 -2
  10. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_model_config.py +16 -11
  11. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_per_model_gpu.py +10 -8
  12. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_prequant_config.py +7 -6
  13. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_usage_outbox.py +14 -24
  14. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_usage_reporter.py +17 -0
  15. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_catalog_consistency.py +2 -2
  16. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve.py +40 -4
  17. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/uv.lock +1 -1
  18. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.dockerignore +0 -0
  19. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.env.example +0 -0
  20. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/CODEOWNERS +0 -0
  21. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  22. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  23. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  24. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  25. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/dependabot.yml +0 -0
  26. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/auto-rebake.yml +0 -0
  27. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/bake-kernel-cache.yml +0 -0
  28. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/ci.yml +0 -0
  29. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/deploy-modal-dev.yml +0 -0
  30. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/deploy-modal.yml +0 -0
  31. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/dev-kernel-cache.yml +0 -0
  32. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/main-source-guard.yml +0 -0
  33. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/notify-tests-repo.yml +0 -0
  34. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/production-kernel-cache-ready.yml +0 -0
  35. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/publish-dev.yml +0 -0
  36. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/publish-image.yml +0 -0
  37. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/publish-serving-image.yml +0 -0
  38. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/publish.yml +0 -0
  39. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/version-parity.yml +0 -0
  40. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.github/workflows/worker-image.yml +0 -0
  41. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/.gitignore +0 -0
  42. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/CHANGELOG.md +0 -0
  43. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/CODE_OF_CONDUCT.md +0 -0
  44. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/CONTRIBUTING.md +0 -0
  45. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/Dockerfile +0 -0
  46. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/Dockerfile.serve +0 -0
  47. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/Dockerfile.worker +0 -0
  48. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/LICENSE +0 -0
  49. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/NOTICE +0 -0
  50. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/README.md +0 -0
  51. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/SECURITY.md +0 -0
  52. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/SELF_HOSTING.md +0 -0
  53. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/build/kernel_cache/.gitignore +0 -0
  54. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/build/kernel_cache/.keep +0 -0
  55. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/deploy/infisical/README.md +0 -0
  56. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/deploy/infisical/entrypoint.sh +0 -0
  57. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/Dockerfile.kernelcache +0 -0
  58. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/Dockerfile.kernelcache.relayer +0 -0
  59. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/bake_kernel_cache.py +0 -0
  60. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/bake_pod_entry.py +0 -0
  61. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/extract_cudart_fix.py +0 -0
  62. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/kernel_fingerprint.py +0 -0
  63. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/make_rp_handler.py +0 -0
  64. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/docker/patch_vllm_moe_lora.py +0 -0
  65. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/__init__.py +0 -0
  66. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/__init__.py +0 -0
  67. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/channel.py +0 -0
  68. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/diagnostics.py +0 -0
  69. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/fileio.py +0 -0
  70. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/logging.py +0 -0
  71. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/openai_sse.py +0 -0
  72. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/paths.py +0 -0
  73. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/_internal/version.py +0 -0
  74. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/adapters/__init__.py +0 -0
  75. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/adapters/artifacts.py +0 -0
  76. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/adapters/fused_experts.py +0 -0
  77. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/adapters/lora_rank.py +0 -0
  78. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/adapters/targets.py +0 -0
  79. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/__init__.py +0 -0
  80. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/__main__.py +0 -0
  81. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/__init__.py +0 -0
  82. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/__init__.py +0 -0
  83. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/__init__.py +0 -0
  84. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/imports.py +0 -0
  85. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/list.py +0 -0
  86. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/push.py +0 -0
  87. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/retained.py +0 -0
  88. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/setup.py +0 -0
  89. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/ops/setup_wandb.py +0 -0
  90. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/__init__.py +0 -0
  91. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/episode.py +0 -0
  92. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/eval.py +0 -0
  93. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/eval_args.py +0 -0
  94. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/evaluations.py +0 -0
  95. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/params.py +0 -0
  96. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/test.py +0 -0
  97. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/env/testing/warnings.py +0 -0
  98. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/__init__.py +0 -0
  99. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/account.py +0 -0
  100. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/catalog.py +0 -0
  101. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/deploy.py +0 -0
  102. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/log_follow.py +0 -0
  103. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/prompt_budget.py +0 -0
  104. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/runs.py +0 -0
  105. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/traces.py +0 -0
  106. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/train.py +0 -0
  107. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/ops/worker_output.py +0 -0
  108. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/serving/__init__.py +0 -0
  109. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/serving/deploy.py +0 -0
  110. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/serving/identity.py +0 -0
  111. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/serving/status.py +0 -0
  112. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/commands/serving/undeploy.py +0 -0
  113. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/__init__.py +0 -0
  114. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/account.py +0 -0
  115. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/env.py +0 -0
  116. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/errors.py +0 -0
  117. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/main.py +0 -0
  118. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/models.py +0 -0
  119. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/serve_parser.py +0 -0
  120. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/traces.py +0 -0
  121. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/parsing/training.py +0 -0
  122. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/scaffold/TRAINING.md +0 -0
  123. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/scaffold/__init__.py +0 -0
  124. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/__init__.py +0 -0
  125. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/cost.py +0 -0
  126. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/env_panels.py +0 -0
  127. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/heartbeat.py +0 -0
  128. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/render.py +0 -0
  129. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/tables.py +0 -0
  130. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cli/ui/tty.py +0 -0
  131. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/__init__.py +0 -0
  132. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/config.py +0 -0
  133. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/freesolo_api.py +0 -0
  134. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/http.py +0 -0
  135. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/runtime_secrets.py +0 -0
  136. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/shapes.py +0 -0
  137. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/specs.py +0 -0
  138. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/client/streaming.py +0 -0
  139. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/__init__.py +0 -0
  140. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/image_descriptors.py +0 -0
  141. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/multimodal.py +0 -0
  142. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/reasoning_normalization.py +0 -0
  143. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/structured_outputs.py +0 -0
  144. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/content/thinking.py +0 -0
  145. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/core/__init__.py +0 -0
  146. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/core/grpo.py +0 -0
  147. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/core/spec.py +0 -0
  148. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/core/spec_persistence.py +0 -0
  149. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/__init__.py +0 -0
  150. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/analytical.py +0 -0
  151. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/currency.py +0 -0
  152. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/facts.py +0 -0
  153. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/spec.py +0 -0
  154. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/cost/types.py +0 -0
  155. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/__init__.py +0 -0
  156. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/__init__.py +0 -0
  157. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/kv_sizing.py +0 -0
  158. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/model_config_probe.py +0 -0
  159. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/prompt_budget.py +0 -0
  160. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/recipe.py +0 -0
  161. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/steps.py +0 -0
  162. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/plan/vram.py +0 -0
  163. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/__init__.py +0 -0
  164. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/dataset_profile.py +0 -0
  165. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/image_tokens.py +0 -0
  166. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/reasoning_render.py +0 -0
  167. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/sft_image_rows.py +0 -0
  168. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/sft_workload.py +0 -0
  169. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/tokenizer.py +0 -0
  170. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/profiling/workload_profile.py +0 -0
  171. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/result/__init__.py +0 -0
  172. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/result/accounting.py +0 -0
  173. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/result/rollout_samples.py +0 -0
  174. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/support/__init__.py +0 -0
  175. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/support/huggingface.py +0 -0
  176. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/support/verl_checkpoint.py +0 -0
  177. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/support/verl_policy.py +0 -0
  178. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/support/worker_entrypoint.py +0 -0
  179. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/__init__.py +0 -0
  180. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/__main__.py +0 -0
  181. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/entry/__init__.py +0 -0
  182. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/entry/opd.py +0 -0
  183. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/entry/rl.py +0 -0
  184. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/entry/sft.py +0 -0
  185. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/entry/worker.py +0 -0
  186. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/io/__init__.py +0 -0
  187. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/io/heartbeat.py +0 -0
  188. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/io/hf.py +0 -0
  189. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/io/prefetch.py +0 -0
  190. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/io/wandb_log.py +0 -0
  191. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/__init__.py +0 -0
  192. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/adapter.py +0 -0
  193. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/chatml_mask.py +0 -0
  194. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/decoding.py +0 -0
  195. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/lora.py +0 -0
  196. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/model/packing.py +0 -0
  197. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/perf/__init__.py +0 -0
  198. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/perf/diagnostics.py +0 -0
  199. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/perf/lifecycle.py +0 -0
  200. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/perf/liger.py +0 -0
  201. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/perf/memory.py +0 -0
  202. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/runtime/__init__.py +0 -0
  203. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/runtime/kernel_warmup.py +0 -0
  204. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/runtime/rng.py +0 -0
  205. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/runtime/state.py +0 -0
  206. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/teacher/__init__.py +0 -0
  207. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/teacher/client.py +0 -0
  208. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/teacher/encoding.py +0 -0
  209. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/teacher/tokenizer_align.py +0 -0
  210. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/__init__.py +0 -0
  211. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/__init__.py +0 -0
  212. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/child/__init__.py +0 -0
  213. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/child/glue.py +0 -0
  214. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/child/runtime.py +0 -0
  215. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/lifecycle/__init__.py +0 -0
  216. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/lifecycle/finalize.py +0 -0
  217. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/lifecycle/ledger.py +0 -0
  218. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/core/lifecycle/step_timing.py +0 -0
  219. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/__init__.py +0 -0
  220. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/backend_common.py +0 -0
  221. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/opd_train.py +0 -0
  222. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/opd_train_runner.py +0 -0
  223. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/prompt_rows.py +0 -0
  224. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/rl_train.py +0 -0
  225. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/rl_train_runner.py +0 -0
  226. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/score_batcher.py +0 -0
  227. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/sft_train.py +0 -0
  228. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/entry/sft_train_runner.py +0 -0
  229. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/__init__.py +0 -0
  230. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/__init__.py +0 -0
  231. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/batching.py +0 -0
  232. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/bridge.py +0 -0
  233. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/failures.py +0 -0
  234. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/prompts.py +0 -0
  235. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/bridging/scoring.py +0 -0
  236. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/__init__.py +0 -0
  237. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/bridge.py +0 -0
  238. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/entry.py +0 -0
  239. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/multiturn.py +0 -0
  240. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/plugin.py +0 -0
  241. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/replay_guard.py +0 -0
  242. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/runtime.py +0 -0
  243. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/child/structured.py +0 -0
  244. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/multiturn/__init__.py +0 -0
  245. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/multiturn/media.py +0 -0
  246. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/multiturn/validation.py +0 -0
  247. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/__init__.py +0 -0
  248. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/failures.py +0 -0
  249. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/gkd.py +0 -0
  250. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/overrides.py +0 -0
  251. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/progress.py +0 -0
  252. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/prompt_preparation.py +0 -0
  253. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/protocol.py +0 -0
  254. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/reporting.py +0 -0
  255. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/state.py +0 -0
  256. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/opd/orchestration/validation.py +0 -0
  257. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/__init__.py +0 -0
  258. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/child/__init__.py +0 -0
  259. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/child/entry.py +0 -0
  260. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/child/multiturn.py +0 -0
  261. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/child/patches.py +0 -0
  262. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/child/plugin.py +0 -0
  263. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/launch/__init__.py +0 -0
  264. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/launch/checkpoints.py +0 -0
  265. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/launch/config.py +0 -0
  266. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/launch/inputs.py +0 -0
  267. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/launch/verl_config.py +0 -0
  268. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/__init__.py +0 -0
  269. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/identity.py +0 -0
  270. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/multi_turn.py +0 -0
  271. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/reward_module.py +0 -0
  272. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/scoring.py +0 -0
  273. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/rl/rollout/single_turn.py +0 -0
  274. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/__init__.py +0 -0
  275. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/child/entry.py +0 -0
  276. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/child/plugin.py +0 -0
  277. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/setup/__init__.py +0 -0
  278. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/setup/checkpoints.py +0 -0
  279. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/train/sft/setup/config.py +0 -0
  280. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/__init__.py +0 -0
  281. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/capabilities.py +0 -0
  282. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/checkpoints.py +0 -0
  283. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/child_io.py +0 -0
  284. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/diagnostics.py +0 -0
  285. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/parallelism.py +0 -0
  286. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/parent_work.py +0 -0
  287. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/engine/worker/verl/process_census.py +0 -0
  288. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/__init__.py +0 -0
  289. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/__init__.py +0 -0
  290. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/adapter.py +0 -0
  291. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/base.py +0 -0
  292. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/loader.py +0 -0
  293. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/pull.py +0 -0
  294. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/loading/staged.py +0 -0
  295. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/__init__.py +0 -0
  296. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/cache_security.py +0 -0
  297. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/dataset_selection.py +0 -0
  298. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/evaluations.py +0 -0
  299. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/identity.py +0 -0
  300. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/meta/namespace_listing.py +0 -0
  301. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/package/__init__.py +0 -0
  302. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/package/direct_tokens.py +0 -0
  303. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/package/limits.py +0 -0
  304. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/envs/package/unpack.py +0 -0
  305. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/__init__.py +0 -0
  306. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/__init__.py +0 -0
  307. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/bootstrapping/__init__.py +0 -0
  308. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/bootstrapping/bootstrap.py +0 -0
  309. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/bootstrapping/console.py +0 -0
  310. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/bootstrapping/pip.py +0 -0
  311. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/bootstrapping/secrets.py +0 -0
  312. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/host/__init__.py +0 -0
  313. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/host/deadline_sleep.py +0 -0
  314. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/host/failmark.py +0 -0
  315. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/host/hostlog.py +0 -0
  316. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/__init__.py +0 -0
  317. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/instance.py +0 -0
  318. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/poll.py +0 -0
  319. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/poll_instance.py +0 -0
  320. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/provider.py +0 -0
  321. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/instances/terminal_artifacts.py +0 -0
  322. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/net/__init__.py +0 -0
  323. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/net/auth.py +0 -0
  324. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/net/deadline.py +0 -0
  325. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/net/http.py +0 -0
  326. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/_lifecycle/net/worker.py +0 -0
  327. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/artifacts/__init__.py +0 -0
  328. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/artifacts/hf.py +0 -0
  329. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/artifacts/preload_runpod.py +0 -0
  330. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/artifacts/weight_cache.py +0 -0
  331. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/__init__.py +0 -0
  332. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/allocator.py +0 -0
  333. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/base.py +0 -0
  334. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/fit_errors.py +0 -0
  335. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/preflight.py +0 -0
  336. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/realized.py +0 -0
  337. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/registry.py +0 -0
  338. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/core/sharding.py +0 -0
  339. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/__init__.py +0 -0
  340. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/__init__.py +0 -0
  341. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/api.py +0 -0
  342. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/auth.py +0 -0
  343. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/gpus.py +0 -0
  344. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/preflight.py +0 -0
  345. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/client/pricing.py +0 -0
  346. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/execution/__init__.py +0 -0
  347. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/execution/provider.py +0 -0
  348. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/jobs/__init__.py +0 -0
  349. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/jobs/builders.py +0 -0
  350. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/lambda_/jobs/reap.py +0 -0
  351. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/__init__.py +0 -0
  352. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/__init__.py +0 -0
  353. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/api.py +0 -0
  354. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/auth.py +0 -0
  355. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/cost.py +0 -0
  356. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/gpus.py +0 -0
  357. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/preflight.py +0 -0
  358. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/client/pricing.py +0 -0
  359. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/__init__.py +0 -0
  360. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/job_execution.py +0 -0
  361. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/jobs.py +0 -0
  362. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/polling.py +0 -0
  363. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/provider.py +0 -0
  364. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/execution/resources.py +0 -0
  365. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/serverless/__init__.py +0 -0
  366. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/runpod/serverless/endpoints.py +0 -0
  367. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/__init__.py +0 -0
  368. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/client/__init__.py +0 -0
  369. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/client/api.py +0 -0
  370. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/client/auth.py +0 -0
  371. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/client/preflight.py +0 -0
  372. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/client/pricing.py +0 -0
  373. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/execution/__init__.py +0 -0
  374. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/execution/provider.py +0 -0
  375. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/jobs/__init__.py +0 -0
  376. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/providers/vast/jobs/builders.py +0 -0
  377. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/py.typed +0 -0
  378. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/__init__.py +0 -0
  379. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/accounting/__init__.py +0 -0
  380. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/accounting/artifacts.py +0 -0
  381. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/accounting/costs.py +0 -0
  382. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/accounting/reconciliation.py +0 -0
  383. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/accounting/weight_cache.py +0 -0
  384. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/__init__.py +0 -0
  385. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/attempts.py +0 -0
  386. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/deadlines.py +0 -0
  387. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/preparation.py +0 -0
  388. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/reporting.py +0 -0
  389. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/state.py +0 -0
  390. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/status.py +0 -0
  391. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/lifecycle/submit.py +0 -0
  392. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/results/__init__.py +0 -0
  393. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/results/checkpoints.py +0 -0
  394. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/results/verified_revisions.py +0 -0
  395. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/__init__.py +0 -0
  396. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/attach.py +0 -0
  397. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/attach_reconcile.py +0 -0
  398. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/deploy.py +0 -0
  399. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/errors.py +0 -0
  400. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/lifecycle.py +0 -0
  401. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/recovery.py +0 -0
  402. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/retry_decision.py +0 -0
  403. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/seed_submission.py +0 -0
  404. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runner/supervise/transitions.py +0 -0
  405. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runtime_capsule/__init__.py +0 -0
  406. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runtime_capsule/build.py +0 -0
  407. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runtime_capsule/manifest.py +0 -0
  408. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/runtime_capsule/profiles.py +0 -0
  409. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/schema/__init__.py +0 -0
  410. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/schema/fields.py +0 -0
  411. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/__init__.py +0 -0
  412. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/__init__.py +0 -0
  413. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/__main__.py +0 -0
  414. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/bootstrap.py +0 -0
  415. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/chat_stream.py +0 -0
  416. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/http.py +0 -0
  417. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/launch.py +0 -0
  418. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/manifest.py +0 -0
  419. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/materialize.py +0 -0
  420. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/openai.py +0 -0
  421. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/app/progress.py +0 -0
  422. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/__init__.py +0 -0
  423. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/errors.py +0 -0
  424. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/protocol.py +0 -0
  425. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/provenance.py +0 -0
  426. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/responses.py +0 -0
  427. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/contract/urls.py +0 -0
  428. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/__init__.py +0 -0
  429. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/_canonical.py +0 -0
  430. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/_serialization.py +0 -0
  431. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/_urls.py +0 -0
  432. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/credentials.py +0 -0
  433. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/planning.py +0 -0
  434. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/control/types.py +0 -0
  435. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/__init__.py +0 -0
  436. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/adapter_check.py +0 -0
  437. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/deploy.py +0 -0
  438. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/export.py +0 -0
  439. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/preflight.py +0 -0
  440. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/profiles.py +0 -0
  441. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/readiness.py +0 -0
  442. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/deployment/resolve.py +0 -0
  443. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/__init__.py +0 -0
  444. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/common/__init__.py +0 -0
  445. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/common/records.py +0 -0
  446. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/__init__.py +0 -0
  447. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/execution/__init__.py +0 -0
  448. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/execution/deployment.py +0 -0
  449. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/execution/lifecycle.py +0 -0
  450. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/execution/operations.py +0 -0
  451. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/execution/sdk.py +0 -0
  452. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/planning/__init__.py +0 -0
  453. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/planning/plan.py +0 -0
  454. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/planning/resources.py +0 -0
  455. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/planning/wrapper.py +0 -0
  456. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/readiness_checks/__init__.py +0 -0
  457. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/readiness_checks/probe.py +0 -0
  458. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/readiness_checks/readiness.py +0 -0
  459. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/provisioning/modal/readiness_checks/teardown.py +0 -0
  460. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/__init__.py +0 -0
  461. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/openai.py +0 -0
  462. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/runtime_support.py +0 -0
  463. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/streaming.py +0 -0
  464. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/thinking.py +0 -0
  465. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/transport.py +0 -0
  466. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/request/validation.py +0 -0
  467. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/__init__.py +0 -0
  468. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/adapters.py +0 -0
  469. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/engine.py +0 -0
  470. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/errors.py +0 -0
  471. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/multimodal.py +0 -0
  472. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/prompt.py +0 -0
  473. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/sampling.py +0 -0
  474. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/structured_outputs.py +0 -0
  475. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serve/runtime/types.py +0 -0
  476. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/__init__.py +0 -0
  477. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/__main__.py +0 -0
  478. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/asgi/__init__.py +0 -0
  479. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/asgi/app.py +0 -0
  480. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/asgi/cli.py +0 -0
  481. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/billing/__init__.py +0 -0
  482. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/billing/charges.py +0 -0
  483. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/billing/retry.py +0 -0
  484. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/__init__.py +0 -0
  485. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/ops/__init__.py +0 -0
  486. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/ops/reconcile.py +0 -0
  487. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/ops/repo_cleanup.py +0 -0
  488. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/ops/serving_resources.py +0 -0
  489. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/__init__.py +0 -0
  490. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/checkpoints.py +0 -0
  491. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/environment_registry.py +0 -0
  492. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/envs.py +0 -0
  493. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/projects.py +0 -0
  494. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/registry/runs.py +0 -0
  495. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/teacher/__init__.py +0 -0
  496. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/teacher/broker.py +0 -0
  497. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/teacher/errors.py +0 -0
  498. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/domain/teacher/requests.py +0 -0
  499. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/__init__.py +0 -0
  500. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/auth.py +0 -0
  501. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/db.py +0 -0
  502. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/deps.py +0 -0
  503. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/internal_client.py +0 -0
  504. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/locks.py +0 -0
  505. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/platform/runtime.py +0 -0
  506. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/__init__.py +0 -0
  507. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/envs.py +0 -0
  508. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/meta.py +0 -0
  509. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/runs.py +0 -0
  510. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/serving.py +0 -0
  511. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/serving_chat.py +0 -0
  512. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/serving_completion.py +0 -0
  513. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/serving_revisions.py +0 -0
  514. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/serving_smoke.py +0 -0
  515. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/server/routes/teacher.py +0 -0
  516. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/__init__.py +0 -0
  517. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/app/__init__.py +0 -0
  518. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/__init__.py +0 -0
  519. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/accounting/__init__.py +0 -0
  520. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/accounting/usage_facts.py +0 -0
  521. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/accounting/usage_outbox.py +0 -0
  522. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/__init__.py +0 -0
  523. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/boot.py +0 -0
  524. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/errors.py +0 -0
  525. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/generation.py +0 -0
  526. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/lora_engine.py +0 -0
  527. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/lora_entries.py +0 -0
  528. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/engine/support.py +0 -0
  529. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/__init__.py +0 -0
  530. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/adapter_routes.py +0 -0
  531. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/body_limit.py +0 -0
  532. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/context.py +0 -0
  533. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/headers.py +0 -0
  534. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/inference_routes.py +0 -0
  535. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/router.py +0 -0
  536. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/http/routing.py +0 -0
  537. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/__init__.py +0 -0
  538. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/multimodal.py +0 -0
  539. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/openai_request.py +0 -0
  540. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/openai_stream.py +0 -0
  541. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/provenance.py +0 -0
  542. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/requests.py +0 -0
  543. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/responses.py +0 -0
  544. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/schemas.py +0 -0
  545. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/streaming.py +0 -0
  546. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/io/structured_outputs.py +0 -0
  547. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/__init__.py +0 -0
  548. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/access.py +0 -0
  549. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/lookup.py +0 -0
  550. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/persisted_columns.py +0 -0
  551. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/persistence.py +0 -0
  552. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/registration.py +0 -0
  553. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/registry.py +0 -0
  554. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/settings.py +0 -0
  555. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/supabase_rest.py +0 -0
  556. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/serving/src/store/undeploy.py +0 -0
  557. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/snapshot/__init__.py +0 -0
  558. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/snapshot/archive.py +0 -0
  559. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/teacher/__init__.py +0 -0
  560. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/teacher/limits.py +0 -0
  561. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/teacher/provider_status.py +0 -0
  562. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/flash/teacher/retry_contract.py +0 -0
  563. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/build_dev_dist.py +0 -0
  564. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/check_file_size.py +0 -0
  565. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/check_function_size.py +0 -0
  566. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/check_rollout_identity_actor.py +0 -0
  567. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/check_source_layout.py +0 -0
  568. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/check_verl_pin_exists.py +0 -0
  569. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/qualify_serving_profile.py +0 -0
  570. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/scripts/scrub_history.sh +0 -0
  571. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/serve_launch.py +0 -0
  572. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/__init__.py +0 -0
  573. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/__init__.py +0 -0
  574. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/chat_provenance.py +0 -0
  575. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/chat_transport.py +0 -0
  576. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/managed_chat.py +0 -0
  577. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/profile.py +0 -0
  578. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/runner.py +0 -0
  579. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/server_api_plugin.py +0 -0
  580. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/source_snapshot.py +0 -0
  581. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/specs.py +0 -0
  582. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/teacher.py +0 -0
  583. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/_helpers/vast.py +0 -0
  584. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/capture_image_sft_processor_oracle.py +0 -0
  585. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/capture_qwen38_27b_metadata.py +0 -0
  586. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/conftest.py +0 -0
  587. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/image_sft_processor_oracle.json +0 -0
  588. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/qwen35_9b_target_metadata.json +0 -0
  589. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/qwen38_27b_target_metadata.json +0 -0
  590. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/vllm_023_moe_lora/lora_context.py.gz +0 -0
  591. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/vllm_023_moe_lora/modular_kernel.py.gz +0 -0
  592. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/fixtures/vllm_023_moe_lora/triton_moe.py.gz +0 -0
  593. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/__init__.py +0 -0
  594. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/conftest.py +0 -0
  595. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/test_lambda_live.py +0 -0
  596. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/test_runpod_live.py +0 -0
  597. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/test_sft_thinking_render_live.py +0 -0
  598. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/live/test_vast_live.py +0 -0
  599. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/checkpoint_fixtures.py +0 -0
  600. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/conftest.py +0 -0
  601. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_base_model_serving.py +0 -0
  602. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_chat_auth.py +0 -0
  603. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_chat_authorizer.py +0 -0
  604. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_checkpoint_identity_repairs.py +0 -0
  605. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_checkpoint_model_validation.py +0 -0
  606. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_engine_error_status.py +0 -0
  607. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_fp8_config.py +0 -0
  608. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_immutable_engine.py +0 -0
  609. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_immutable_revisions.py +0 -0
  610. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_immutable_schemas.py +0 -0
  611. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_mirror_sampling_parity.py +0 -0
  612. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_modal_deploy_identity.py +0 -0
  613. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_modal_image_paths.py +0 -0
  614. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_multimodal.py +0 -0
  615. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_openai_stream_options.py +0 -0
  616. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_persistence.py +0 -0
  617. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_pre_first_disconnect.py +0 -0
  618. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_registry.py +0 -0
  619. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_registry_coverage.py +0 -0
  620. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_request_body_limit.py +0 -0
  621. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_router.py +0 -0
  622. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_router_coverage.py +0 -0
  623. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_router_edge_coverage.py +0 -0
  624. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_schemas_coverage.py +0 -0
  625. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_serve_reasoning_split.py +0 -0
  626. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_serve_structured_outputs.py +0 -0
  627. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_serve_thinking.py +0 -0
  628. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_settings.py +0 -0
  629. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_structured_outputs.py +0 -0
  630. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_structured_outputs_coverage.py +0 -0
  631. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving/test_supabase_rest_coverage.py +0 -0
  632. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving_conformance/__init__.py +0 -0
  633. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving_conformance/conftest.py +0 -0
  634. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/serving_conformance/test_contract.py +0 -0
  635. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_accounting_coverage.py +0 -0
  636. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_adapter_shard_completeness.py +0 -0
  637. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_agent_flash_cli_contract.py +0 -0
  638. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_algorithms.py +0 -0
  639. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_allocator.py +0 -0
  640. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_backend_common.py +0 -0
  641. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_backend_jobspec_contract.py +0 -0
  642. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_bake_kernel_cache.py +0 -0
  643. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_base_model_provenance.py +0 -0
  644. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_billing_retry.py +0 -0
  645. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_build_context_contract.py +0 -0
  646. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cancel_remote.py +0 -0
  647. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_capture_qwen38_metadata.py +0 -0
  648. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_catalog_only_models.py +0 -0
  649. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_charge_pricing.py +0 -0
  650. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_chat_foundations.py +0 -0
  651. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_checkpoint_lifecycle.py +0 -0
  652. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_checkpoints.py +0 -0
  653. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_commands.py +0 -0
  654. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_commands_coverage.py +0 -0
  655. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_credential_shadowing.py +0 -0
  656. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_errors.py +0 -0
  657. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_estimate.py +0 -0
  658. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_gpus_flag.py +0 -0
  659. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_help.py +0 -0
  660. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_main_coverage.py +0 -0
  661. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_managed.py +0 -0
  662. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_render_coverage.py +0 -0
  663. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_render_theme.py +0 -0
  664. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_serve_deploy.py +0 -0
  665. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_serve_status.py +0 -0
  666. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_serve_undeploy.py +0 -0
  667. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_traces.py +0 -0
  668. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cli_wandb_warning.py +0 -0
  669. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_client.py +0 -0
  670. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_client_import_purity.py +0 -0
  671. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_client_server_integration.py +0 -0
  672. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_client_stream_reads.py +0 -0
  673. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_config_env_vars.py +0 -0
  674. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_config_overrides.py +0 -0
  675. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_console_upload.py +0 -0
  676. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_controlled_experiment_repairs.py +0 -0
  677. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_analytical.py +0 -0
  678. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_currency.py +0 -0
  679. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_equation.py +0 -0
  680. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_estimate.py +0 -0
  681. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_hardware.py +0 -0
  682. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_cost_models.py +0 -0
  683. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_dataset_profile.py +0 -0
  684. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_deploy_latency.py +0 -0
  685. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_dev_channel.py +0 -0
  686. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_disk_gb.py +0 -0
  687. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_endpoint_name.py +0 -0
  688. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_cache_evict.py +0 -0
  689. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_delete.py +0 -0
  690. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_download.py +0 -0
  691. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_download_api.py +0 -0
  692. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_evaluations.py +0 -0
  693. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_list_api.py +0 -0
  694. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_list_cli.py +0 -0
  695. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_list_hub.py +0 -0
  696. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_no_install.py +0 -0
  697. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_publish.py +0 -0
  698. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_pull.py +0 -0
  699. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_pull_coverage.py +0 -0
  700. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_pull_loader_coverage.py +0 -0
  701. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_pull_managed_control_plane.py +0 -0
  702. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_push.py +0 -0
  703. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_rate_limit_resolve.py +0 -0
  704. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_ref_pinning.py +0 -0
  705. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_env_test.py +0 -0
  706. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_envs_coverage.py +0 -0
  707. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_export.py +0 -0
  708. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_flash_mvp.py +0 -0
  709. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_flash_worker.py +0 -0
  710. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_flashinfer_cache_dirs.py +0 -0
  711. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_freesolo_api_transport.py +0 -0
  712. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_fused_expert_warmstart.py +0 -0
  713. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_github_urlopen_retry.py +0 -0
  714. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_gpu_type_single_field.py +0 -0
  715. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_gpus.py +0 -0
  716. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_checkpoint_durability.py +0 -0
  717. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_params.py +0 -0
  718. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_process_census.py +0 -0
  719. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_resident_sizing.py +0 -0
  720. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_reward_batching.py +0 -0
  721. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_rollout_contract.py +0 -0
  722. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_grpo_rollout_identity.py +0 -0
  723. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_health_liveness.py +0 -0
  724. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_hf_retry.py +0 -0
  725. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_idle_endpoint_reaper.py +0 -0
  726. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_image_environment_capability.py +0 -0
  727. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_image_incremental_processor.py +0 -0
  728. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_image_sft_markers.py +0 -0
  729. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_image_sft_processor_parity.py +0 -0
  730. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_image_tokens.py +0 -0
  731. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_infisical_secrets.py +0 -0
  732. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_instance_bootstrap_coverage.py +0 -0
  733. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_internal_client.py +0 -0
  734. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_jobs.py +0 -0
  735. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_kernel_cache.py +0 -0
  736. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_kernel_fingerprint.py +0 -0
  737. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_kv_util.py +0 -0
  738. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lambda_api_coverage.py +0 -0
  739. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lambda_runner.py +0 -0
  740. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_logging.py +0 -0
  741. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_login_perms.py +0 -0
  742. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lora_rank_coverage.py +0 -0
  743. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lora_rank_nested_rung.py +0 -0
  744. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lora_rank_preflight.py +0 -0
  745. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lora_targeting.py +0 -0
  746. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_lora_targeting_pinned_verl.py +0 -0
  747. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_managed_config_fields.py +0 -0
  748. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_managed_hf_repo.py +0 -0
  749. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_metrics_schema_agent_contract.py +0 -0
  750. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_mig_guard.py +0 -0
  751. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_mirror_sampling_parity.py +0 -0
  752. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_multi_gpu_gate.py +0 -0
  753. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_multimodal_training.py +0 -0
  754. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_named_reward_metrics.py +0 -0
  755. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_oom_escalate_gpu.py +0 -0
  756. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd.py +0 -0
  757. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_limits.py +0 -0
  758. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_multiturn_eos_boundary.py +0 -0
  759. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_multiturn_failure_exit.py +0 -0
  760. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_replay_guard.py +0 -0
  761. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_resume_safety.py +0 -0
  762. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_opd_train.py +0 -0
  763. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_orchestrator_flash.py +0 -0
  764. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_packing.py +0 -0
  765. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_packing_coverage.py +0 -0
  766. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_parasail_teacher.py +0 -0
  767. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_persisted_spec_envelope.py +0 -0
  768. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_poll_helpers.py +0 -0
  769. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_preflight.py +0 -0
  770. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_projects.py +0 -0
  771. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_prompt_budget.py +0 -0
  772. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_provider_preflight_coverage.py +0 -0
  773. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_provider_routing.py +0 -0
  774. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_provider_teardown_robustness.py +0 -0
  775. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_providers_symmetry.py +0 -0
  776. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_realized_cost.py +0 -0
  777. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_repo_cleanup.py +0 -0
  778. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_resolve_params_b.py +0 -0
  779. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_resume_on_retry.py +0 -0
  780. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_rl_train.py +0 -0
  781. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_rollout_samples.py +0 -0
  782. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_run_registry_lifecycle.py +0 -0
  783. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_runmgmt.py +0 -0
  784. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_runpod_api_delete.py +0 -0
  785. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_runpod_key_fingerprint.py +0 -0
  786. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_runpod_key_waterfall.py +0 -0
  787. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_runtime_capsule.py +0 -0
  788. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_bootstrap_http.py +0 -0
  789. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_launch.py +0 -0
  790. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_manifest.py +0 -0
  791. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_materialize.py +0 -0
  792. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_packaging.py +0 -0
  793. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_app_progress.py +0 -0
  794. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_chat_transport.py +0 -0
  795. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_control.py +0 -0
  796. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_docs.py +0 -0
  797. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_modal_contract_lock.py +0 -0
  798. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_modal_sdk.py +0 -0
  799. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_modal_sdk_deadlines.py +0 -0
  800. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_modal_teardown_identity.py +0 -0
  801. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_profile_qualification.py +0 -0
  802. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_profiles.py +0 -0
  803. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_provisioning_common.py +0 -0
  804. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_provisioning_modal.py +0 -0
  805. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_reasoning_content.py +0 -0
  806. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_resolve_provenance.py +0 -0
  807. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_runtime_adapters.py +0 -0
  808. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_runtime_engine.py +0 -0
  809. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_runtime_package.py +0 -0
  810. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serve_runtime_types.py +0 -0
  811. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_api.py +0 -0
  812. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_app_coverage.py +0 -0
  813. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_auth_singleflight.py +0 -0
  814. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_billing.py +0 -0
  815. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_checkpoints_coverage.py +0 -0
  816. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_db.py +0 -0
  817. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_envs_coverage.py +0 -0
  818. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_locks_coverage.py +0 -0
  819. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_managed_chat_requests.py +0 -0
  820. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_serving_resources.py +0 -0
  821. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_server_standalone.py +0 -0
  822. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serving_conformance_gate.py +0 -0
  823. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serving_context_preflight.py +0 -0
  824. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serving_contract.py +0 -0
  825. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_serving_schema_coverage.py +0 -0
  826. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_chunked_nll.py +0 -0
  827. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_example_selection.py +0 -0
  828. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_gc_off.py +0 -0
  829. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_max_context.py +0 -0
  830. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_step_floor.py +0 -0
  831. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_train.py +0 -0
  832. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_sft_workload.py +0 -0
  833. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_source_attestation_flow.py +0 -0
  834. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_source_layout.py +0 -0
  835. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_source_snapshot.py +0 -0
  836. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_spec_and_validation.py +0 -0
  837. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_spec_contract_bytes.py +0 -0
  838. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_staged_environment.py +0 -0
  839. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_step_floor.py +0 -0
  840. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_step_metrics.py +0 -0
  841. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_step_timing.py +0 -0
  842. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_structured_outputs.py +0 -0
  843. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_teacher_broker.py +0 -0
  844. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_teacher_encoding_contract.py +0 -0
  845. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_terminal_artifacts.py +0 -0
  846. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_thinking_config.py +0 -0
  847. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_train_context_preflight.py +0 -0
  848. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_training_controls.py +0 -0
  849. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_type_comment_prose.py +0 -0
  850. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vast_api.py +0 -0
  851. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vast_api_coverage.py +0 -0
  852. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vast_offers.py +0 -0
  853. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vast_provider_coverage.py +0 -0
  854. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vast_runner.py +0 -0
  855. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_verified_revisions.py +0 -0
  856. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_verifiers.py +0 -0
  857. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_verl_checkpoint_export.py +0 -0
  858. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_verl_child_plugins.py +0 -0
  859. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_verl_silence_watchdog.py +0 -0
  860. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_version.py +0 -0
  861. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vl_warmstart_adapter_keys.py +0 -0
  862. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vllm_moe_lora_backport.py +0 -0
  863. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_vram_architecture.py +0 -0
  864. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_wandb_link.py +0 -0
  865. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_wandb_naming.py +0 -0
  866. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_warmstart_adapter_download.py +0 -0
  867. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_warmstart_cross_repo.py +0 -0
  868. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_warmstart_error_attribution.py +0 -0
  869. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_warmstart_image_adapters.py +0 -0
  870. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_weight_cache.py +0 -0
  871. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_dryrun.py +0 -0
  872. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_hardexit.py +0 -0
  873. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_image.py +0 -0
  874. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_init_heartbeat.py +0 -0
  875. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_stack.py +0 -0
  876. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_worker_thinking.py +0 -0
  877. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_workflow_contracts.py +0 -0
  878. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_workload_profile.py +0 -0
  879. {freesolo_flash_dev-1.2.121 → freesolo_flash_dev-1.2.122}/tests/test_zero2_sharding_gate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: freesolo-flash-dev
3
- Version: 1.2.121
3
+ Version: 1.2.122
4
4
  Summary: Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI
5
5
  Project-URL: Homepage, https://github.com/freesolo-co/flash
6
6
  Project-URL: Repository, https://github.com/freesolo-co/flash
@@ -10,7 +10,7 @@ adapters. A different base model requires a separate deployment. Use
10
10
  Customer-owned Modal is live-qualified for `Qwen/Qwen3.5-9B`, `Qwen/Qwen3.8-27B`, and
11
11
  `Qwen/Qwen3.6-35B-A3B`. The 27B and 35B-A3B qualifications are bound to the exact certified serving
12
12
  image digest; another digest remains available for offline planning but cannot allocate Modal.
13
- Hosted Qwen3.8 27B remains inactive. Its customer-owned engine runs on `H100!` and serves the pinned
13
+ Hosted Qwen3.8 27B is active on H100. Its customer-owned engine runs on `H100!` and serves the pinned
14
14
  `Qwen/Qwen3.8-27B-FP8` checkpoint while preserving `Qwen/Qwen3.8-27B` as the distinct logical base
15
15
  and tokenizer provenance. The 35B-A3B engine serves BF16 weights on one H200 with FP8 KV cache, a
16
16
  32K context, eight sequences, a 4096 batched-token cap, and six rank-64 LoRA slots.
@@ -208,7 +208,7 @@ class ModelInfo:
208
208
  DEFAULT_MODEL = "Qwen/Qwen3.5-9B"
209
209
 
210
210
  # the checkpoint each public catalog model loads for customer-owned serving. hosted activation is
211
- # a separate allowlist in flash.serving.src.engine.model_config, where qwen3.8-27b remains inactive.
211
+ # a separate allowlist in flash.serving.src.engine.model_config.
212
212
  SERVING_MODEL_REPOS: dict[str, str] = {
213
213
  "Qwen/Qwen3.5-9B": "Freesolo-Co/Qwen3.5-9B-FP8",
214
214
  "Qwen/Qwen3.8-27B": "Qwen/Qwen3.8-27B-FP8",
@@ -150,13 +150,12 @@ GPUs, so there's nothing to tune at deploy time:
150
150
  checkpoints are VL-preserving (each VL-unified base's vision tower + MoE router gates stay in
151
151
  original precision) and already published to the operator HF org. Native FP8 tensor cores need
152
152
  compute capability ≥ 8.9; every dense FP8 tier runs on an L4, L40S, or H100 (all native). No serving
153
- tier runs on A100 now that the 35B is bf16 on H200. The pending Qwen3.8 candidate allocates no
154
- hosted tier until its exact canary passes.
153
+ tier runs on A100 now that the 35B is bf16 on H200. The 27B serves the official native FP8
154
+ checkpoint on an H100.
155
155
 
156
156
  - **The real memory lever — LoRA buffers:** vLLM PRE-ALLOCATES the GPU LoRA buffers at `max_loras ×
157
157
  max_lora_rank`, regardless of how many adapters load. Both are linear levers. The qualified 9B runs
158
- **16 × 128** on L40S. Qwen3.8-27B's H100 LoRA capacity remains pending exact-checkpoint
159
- qualification. The 35B MoE runs **6 × 64** bf16 on H200. Adapters trained above the effective rank are rejected at load; a base regularly serving
158
+ **16 × 128** on L40S and the 27B runs **16 × 64** on H100. The 35B MoE runs **6 × 64** bf16 on H200. Adapters trained above the effective rank are rejected at load; a base regularly serving
160
159
  more distinct adapters than its hot limit pays a swap latency from the CPU pool unless its hot
161
160
  limit equals `MAX_CPU_LORAS`.
162
161
 
@@ -174,17 +173,19 @@ cold-boot smoke test first.
174
173
  | Base model | Checkpoint | GPU | Hot LoRA shape | Context |
175
174
  | ------------------------- | -------------------------------------------- | --------- | -------------- | ------- |
176
175
  | Qwen3.5-9B | owned FP8 (`Freesolo-Co/*-FP8`) | **L40S**§ | 16 × 128 | 32768 |
177
- | Qwen3.8-27B candidate | official native FP8 (`Qwen/Qwen3.8-27B-FP8`) | inactive‡ | pending | pending |
176
+ | Qwen3.8-27B | official native FP8 (`Qwen/Qwen3.8-27B-FP8`) | **H100**‡ | 16 × 64 | 32768 |
178
177
  | Qwen3.6-35B-A3B (MoE, VL) | official **bf16** (`Qwen/Qwen3.6-35B-A3B`) | **H200**† | 6 × 64 | 32768 |
179
178
 
180
179
  § 9B (L40S) runs **16 × 128** at 32k context with `max_num_seqs=8`, CUDA graphs
181
180
  (`enforce_eager=False`), and `gpu_memory_utilization=0.90`. Its rank-128 × 16 buffer OOMed an L4 and
182
181
  2×L4 in the real-GPU sweep, so it runs on the 48 GiB L40S, the cheapest Ada card that fits it at 32k.
183
182
 
184
- ‡ Qwen3.8-27B is not in active hosted routing, registration, base-model health, or engine deployment.
185
- Its proposed H100 tier, hot LoRA capacity, context limit, CUDA-graph behavior, throughput, and latency
186
- remain pending qualification on the exact immutable official FP8 checkpoint. Qwen3.6-27B measurements
187
- do not qualify or predict the Qwen3.8 checkpoint.
183
+ ‡ 27B (H100, 80 GiB) runs **16 × 64** at 32k with `max_num_seqs=8`, CUDA graphs
184
+ (`enforce_eager=False`), and `gpu_memory_utilization=0.90`, qualified by a real-GPU canary on the exact
185
+ immutable official FP8 checkpoint: weights loaded at 44.25 GiB, leaving 23.07 GiB of KV cache
186
+ (350,981 tokens, 10.71x concurrency at 32k) after a 0.35 GiB graph capture. Cold boot is about 20 min
187
+ (load + 137 s torch.compile + 442 s warmup dominated by the FlashInfer GDN JIT), all cached on the
188
+ serving volume. Qwen3.6-27B measurements do not qualify or predict the Qwen3.8 checkpoint.
188
189
 
189
190
  † 35B-A3B runs **bf16 on an H200** (141 GiB) at **6 × 64**, the one serving path that gives a flash
190
191
  adapter its full all-expert LoRA AND CUDA graphs at speed. It gets rank 64 like the 27B
@@ -138,8 +138,12 @@ def scaledown_window_for(gpu: str) -> int:
138
138
  # gpu model engines scale to zero. inference and adapter registration remote calls start the matching
139
139
  # parameter-bound engine on demand.
140
140
  MIN_CONTAINERS = 0
141
- # no autoscaling cap per base-model engine; modal adds capacity as concurrency demands.
142
- MAX_CONTAINERS = None
141
+ # At most 3 GPUs per base model. `base_model` is a modal.parameter(), and Modal gives each distinct
142
+ # parameter value its own container pool with its own autoscaling accounting, so this bound applies
143
+ # PER MODEL rather than across the catalog. Engines are TENSOR_PARALLEL_SIZE 1 on a single-card `gpu=`
144
+ # request, so one container is exactly one GPU and 3 containers is exactly 3 GPUs. Raising this bounds
145
+ # spend per model, not total spend: N models can still reach 3N GPUs.
146
+ MAX_CONTAINERS = 3
143
147
  # Concurrent requests packed onto one base-model GPU before Modal autoscales a new (costly) one.
144
148
  # A real-GPU sweep (scripts/gpu_canary.py::sweep_concurrency on A10G/Qwen2.5-1.5B) showed vLLM
145
149
  # throughput scaling near-linearly with no saturation through 128 concurrent, while TTFT stayed
@@ -24,16 +24,17 @@ from flash.serving.src.accounting.usage_outbox import (
24
24
  from flash.serving.src.io.schemas import AdapterRecord
25
25
 
26
26
  FREESOLO_PRICING_SOURCE = "freesolo_backend_catalog"
27
- FREESOLO_PRICING_VERSION = "2026-08-24.1"
27
+ FREESOLO_PRICING_VERSION = "2026-08-27.1"
28
+ # (prompt, completion, cached prompt) usd per million tokens, one entry per active hosted model.
29
+ # these are the charged customer rates, set 5% below the lowest healthy comparable openrouter fp8
30
+ # listing for each model and token category. they are NOT cost-plus: no markup is applied, and they
31
+ # currently sit below the recorded cost basis, so do not reintroduce a multiplier here until measured
32
+ # b200 economics establish a lower truthful cost basis.
28
33
  _FREESOLO_USD_PER_MTOK: dict[str, tuple[str, str, str]] = {
29
- "Qwen/Qwen3.5-0.8B": ("0.01", "0.05", "0.002"),
30
- "Qwen/Qwen3.5-2B": ("0.02", "0.10", "0.004"),
31
- "Qwen/Qwen3.5-4B": ("0.03", "0.15", "0.006"),
32
- "Qwen/Qwen3.5-9B": ("0.114", "0.19", "0.023"),
33
- "Qwen/Qwen3.6-27B": ("0.4254", "3.055", "0.14"),
34
- "Qwen/Qwen3.6-35B-A3B": ("0.198", "1.265", "0.066"),
34
+ "Qwen/Qwen3.5-9B": ("0.095", "0.1425", "0.0276"),
35
+ "Qwen/Qwen3.8-27B": ("0.3325", "2.4225", "0.03325"),
36
+ "Qwen/Qwen3.6-35B-A3B": ("0.095", "0.9025", "0.0475"),
35
37
  }
36
- _FREESOLO_MARKUP = Decimal("1.2")
37
38
  _USD_PER_MTOK_DIVISOR = Decimal("1000000")
38
39
 
39
40
 
@@ -173,7 +174,7 @@ def freesolo_price(base_model: str) -> CapturedPrice:
173
174
  raise ValueError(f"no durable serving price for base model {base_model!r}") from exc
174
175
 
175
176
  def per_token(rate: str) -> str:
176
- return format(Decimal(rate) * _FREESOLO_MARKUP / _USD_PER_MTOK_DIVISOR, "f")
177
+ return format(Decimal(rate) / _USD_PER_MTOK_DIVISOR, "f")
177
178
 
178
179
  return CapturedPrice(
179
180
  source=FREESOLO_PRICING_SOURCE,
@@ -3,9 +3,9 @@
3
3
  The serving app runs one vLLM GPU engine per base model, each on the Modal GPU class set by its
4
4
  catalog ``gpu`` (see below). Adapters and routing key off the logical ``base_model``; the engine
5
5
  loads its configured checkpoint at that checkpoint's own dtype. The active dense 9B uses Freesolo
6
- compressed-tensors FP8. Qwen3.8-27B retains pinned candidate metadata but is excluded from active
7
- lookups until its exact canary passes. The active 35B-A3B MoE serves base bf16 weights because its
8
- fused-MoE LoRA path will not compile on FP8, as detailed below.
6
+ compressed-tensors FP8 and the active dense 27B uses the official Qwen FP8 checkpoint. The active
7
+ 35B-A3B MoE serves base bf16 weights because its fused-MoE LoRA path will not compile on FP8, as
8
+ detailed below.
9
9
  """
10
10
 
11
11
  from __future__ import annotations
@@ -27,15 +27,14 @@ from flash.serving.src.engine.prequant_config import (
27
27
  # `engine` (optional): per-model vLLM engine-arg overrides (LoRA buffer shape, scheduler/memory caps,
28
28
  # language_model_only, …). The engine's LOADED checkpoint is NOT in here — it is resolved centrally by
29
29
  # ``serve_model_for`` from ``src.prequant_config`` and injected into the overrides as ``serve_model_id``.
30
- # active models resolve through prequant_config unless an exact validated override is present. the
31
- # pending 27b candidate carries its own immutable checkpoint pin without entering active resolution.
30
+ # active models resolve through prequant_config unless an exact validated override is present.
32
31
  # ⚠ serve_model_id is pointed only at checkpoints VERIFIED to exist (a missing repo 404-crash-loops
33
32
  # the engine — the reason this mechanism was removed once); the owned repos are VL-preserving FP8
34
33
  # checkpoints published to the operator HF org.
35
34
  #
36
35
  # sizing rationale. preallocated lora buffers and loaded checkpoint weights dominate engine vram.
37
- # the active 9b uses 16 rank-128 slots on l40s and the active 35b moe uses 6 rank-64 slots on h200.
38
- # the pending 27b candidate retains its proposed h100 shape only for the exact canary.
36
+ # the active 9b uses 16 rank-128 slots on l40s, the active 27b uses 16 rank-64 slots on h100, and the
37
+ # active 35b moe uses 6 rank-64 slots on h200.
39
38
  # - Qwen3.6-35B-A3B (vision-language MoE; arch ``Qwen3_5MoeForConditionalGeneration``) -> H200
40
39
  # (141 GiB) with the base bf16 weights, 6 x 64 LoRA at 32k. bf16 (not FP8) is the one path giving
41
40
  # full-expert LoRA + CUDA graphs because the fused-MoE LoRA path won't compile on fp8e4nv. see the
@@ -108,32 +107,35 @@ SERVING_MODELS: list[dict[str, Any]] = [
108
107
  # the complete model and LoRA load is about 108 GiB on the 141 GiB H200.
109
108
  },
110
109
  },
110
+ # 27B dense on an H100 (80 GiB). the real-GPU canary measured the load at 44.25 GiB -- above the
111
+ # FP8 weight size alone, because the vision tower and the non-quantized tensors stay bf16 -- which
112
+ # still leaves 23.07 GiB of KV cache (350,981 tokens, 10.71x concurrency at 32k) after the 16
113
+ # rank-64 LoRA buffers and a 0.35 GiB graph capture. every repository here is pinned to an
114
+ # immutable revision so a served engine cannot silently follow an upstream retag; note the model
115
+ # pin names a commit in the -FP8 repo while the tokenizer/processor pins name one in the base
116
+ # repo, which are separate sha namespaces.
117
+ {
118
+ "base_model": "Qwen/Qwen3.8-27B",
119
+ "image_input_limit": 4,
120
+ "gpu": "H100",
121
+ "engine": {
122
+ "model_revision": "017b9c7af6b5689d5dd426a76e0bc077eb5ca20a",
123
+ "tokenizer_model": "Qwen/Qwen3.8-27B",
124
+ "tokenizer_revision": "1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
125
+ "processor_revision": "1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
126
+ "gpu_memory_utilization": 0.90,
127
+ "max_loras": 16,
128
+ "max_lora_rank": 64,
129
+ "max_model_len": 32768,
130
+ "max_num_seqs": 8,
131
+ "enforce_eager": False,
132
+ "reasoning_parser": "qwen3",
133
+ },
134
+ },
111
135
  ]
112
136
 
113
137
  _BY_MODEL: dict[str, dict[str, Any]] = {m["base_model"]: m for m in SERVING_MODELS}
114
138
 
115
- # inert descriptor for the exact pending canary. activation means moving this descriptor into
116
- # SERVING_MODELS, not consulting a second runtime allowlist.
117
- _QWEN38_HOSTED_CANDIDATE: dict[str, Any] = {
118
- "base_model": "Qwen/Qwen3.8-27B",
119
- "image_input_limit": 4,
120
- "gpu": "H100",
121
- "engine": {
122
- "serve_model_id": "Qwen/Qwen3.8-27B-FP8",
123
- "model_revision": "017b9c7af6b5689d5dd426a76e0bc077eb5ca20a",
124
- "tokenizer_model": "Qwen/Qwen3.8-27B",
125
- "tokenizer_revision": "1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
126
- "processor_revision": "1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
127
- "gpu_memory_utilization": 0.90,
128
- "max_loras": 16,
129
- "max_lora_rank": 64,
130
- "max_model_len": 32768,
131
- "max_num_seqs": 8,
132
- "enforce_eager": False,
133
- "reasoning_parser": "qwen3",
134
- },
135
- }
136
-
137
139
 
138
140
  def base_models() -> list[str]:
139
141
  return [model["base_model"] for model in SERVING_MODELS]
@@ -1,9 +1,8 @@
1
1
  """Prequantized checkpoint mapping for active hosted serving.
2
2
 
3
- The 9B loads a Freesolo-owned compressed-tensors FP8 checkpoint. The 35B MoE mapping remains its
4
- official FP8 default, although the validated engine override serves the base bf16 weights so
5
- full-expert LoRA and CUDA graphs coexist. Pending hosted candidates keep their pins in model_config
6
- without entering this active mapping.
3
+ The 9B loads a Freesolo-owned compressed-tensors FP8 checkpoint. The 27B loads its official FP8
4
+ checkpoint. The 35B MoE mapping remains its official FP8 default, although the validated engine
5
+ override serves the base bf16 weights so full-expert LoRA and CUDA graphs coexist.
7
6
  """
8
7
 
9
8
  from __future__ import annotations
@@ -15,6 +14,7 @@ OWNED_FP8_MODEL_REPOS: dict[str, str] = {
15
14
 
16
15
  # official qwen checkpoints active in hosted serving.
17
16
  OFFICIAL_FP8_MODEL_REPOS: dict[str, str] = {
17
+ "Qwen/Qwen3.8-27B": "Qwen/Qwen3.8-27B-FP8",
18
18
  "Qwen/Qwen3.6-35B-A3B": "Qwen/Qwen3.6-35B-A3B-FP8",
19
19
  }
20
20
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "freesolo-flash-dev"
3
- version = "1.2.121"
3
+ version = "1.2.122"
4
4
  description ="Flash — managed LoRA post-training (SFT/GRPO/OPD) for Freesolo environments, driven by the `flash` CLI"
5
5
  readme = "README.md"
6
6
  # RunPod Flash supports Python 3.11-3.12 (not 3.13 yet).
@@ -196,7 +196,7 @@ artifacts = ["flash/py.typed"]
196
196
  # auto-published by .github/workflows/publish-dev.yml: a push to `dev` whose version isn't yet on
197
197
  # PyPI publishes it; pushes that don't change it find it already published and no-op. So cutting a
198
198
  # dev-channel release = bump this (and [project].version) and merge to `dev`.
199
- version = "1.2.121"
199
+ version = "1.2.122"
200
200
 
201
201
  [tool.pytest.ini_options]
202
202
  pythonpath = ["."]
@@ -5,7 +5,6 @@ from __future__ import annotations
5
5
  import pytest
6
6
 
7
7
  from flash.serving.src.engine.model_config import (
8
- _QWEN38_HOSTED_CANDIDATE,
9
8
  SERVING_MODELS,
10
9
  base_models,
11
10
  engine_overrides_for,
@@ -21,6 +20,7 @@ from flash.serving.src.engine.model_config import (
21
20
  def test_catalog_has_only_canary_qualified_active_models() -> None:
22
21
  assert set(base_models()) == {
23
22
  "Qwen/Qwen3.5-9B",
23
+ "Qwen/Qwen3.8-27B",
24
24
  "Qwen/Qwen3.6-35B-A3B",
25
25
  }
26
26
 
@@ -35,6 +35,7 @@ def test_every_catalog_model_has_an_intentional_image_classification() -> None:
35
35
  image_models = {model for model in base_models() if supports_image_input(model)}
36
36
  assert image_models == {
37
37
  "Qwen/Qwen3.5-9B",
38
+ "Qwen/Qwen3.8-27B",
38
39
  "Qwen/Qwen3.6-35B-A3B",
39
40
  }
40
41
  assert all(image_limit_for(model) == 4 for model in image_models)
@@ -86,6 +87,7 @@ def test_dense_models_serve_fp8_and_35b_serves_bf16_base() -> None:
86
87
  # serve_model_for() resolves it and engine_overrides_for() injects it as serve_model_id.
87
88
  expected_fp8 = {
88
89
  "Qwen/Qwen3.5-9B": "Freesolo-Co/Qwen3.5-9B-FP8",
90
+ "Qwen/Qwen3.8-27B": "Qwen/Qwen3.8-27B-FP8",
89
91
  }
90
92
  for base, ckpt in expected_fp8.items():
91
93
  assert serve_model_for(base) == ckpt
@@ -121,18 +123,21 @@ def test_9b_has_l40s_rank128_serving_overrides() -> None:
121
123
  ) # CUDA graphs on (~10x faster decode on this hybrid GDN model)
122
124
 
123
125
 
124
- def test_qwen38_27b_is_a_pinned_pending_hosted_candidate() -> None:
126
+ def test_qwen38_27b_is_active_on_h100_with_pinned_immutable_revisions() -> None:
127
+ # 27B is a FULLY ACTIVE hosted tier: every active lookup resolves it, and its served checkpoint,
128
+ # tokenizer and processor stay pinned to immutable revisions so a served engine cannot follow an
129
+ # upstream retag. The rank-64 x 16 LoRA shape at 32k is what the H100 (80 GiB) was sized for.
125
130
  base_model = "Qwen/Qwen3.8-27B"
126
- candidate = _QWEN38_HOSTED_CANDIDATE
127
- assert candidate["base_model"] == base_model
128
- ov = candidate["engine"]
129
-
130
- assert base_model not in base_models()
131
- assert is_supported_base_model(base_model) is False
132
- for active_lookup in (engine_overrides_for, gpu_for, image_limit_for, serve_model_for):
133
- with pytest.raises(ValueError, match="Unsupported base model"):
134
- active_lookup(base_model)
131
+
132
+ assert base_model in base_models()
133
+ assert is_supported_base_model(base_model) is True
134
+ assert gpu_for(base_model) == "H100"
135
+ assert image_limit_for(base_model) == 4
136
+ assert serve_model_for(base_model) == "Qwen/Qwen3.8-27B-FP8"
137
+
138
+ ov = engine_overrides_for(base_model)
135
139
  assert ov["serve_model_id"] == "Qwen/Qwen3.8-27B-FP8"
140
+ assert ov["tokenizer_model"] == base_model
136
141
  assert ov["max_loras"] == 16
137
142
  assert ov["max_lora_rank"] == 64
138
143
  assert ov["max_model_len"] == 32768
@@ -410,6 +410,7 @@ def test_one_engine_class_per_distinct_engine_key(modal_app_module):
410
410
  """a loraengine class is built for each active gpu tier and concurrency key."""
411
411
  assert set(modal_app_module.ENGINE_BY_KEY) == {
412
412
  ("L40S", 16),
413
+ ("H100", 16),
413
414
  ("H200", 16),
414
415
  }
415
416
 
@@ -446,11 +447,12 @@ def test_9b_routes_to_l40s(modal_app_module):
446
447
  assert by_key[("L40S", 16)].__name__ == "LoraEngine_L40S_c16"
447
448
 
448
449
 
449
- def test_pending_qwen38_candidate_has_no_active_engine_dispatch(modal_app_module):
450
- with pytest.raises(ValueError, match="Unsupported base model"):
451
- gpu_for("Qwen/Qwen3.8-27B")
452
- with pytest.raises(ValueError, match="Unsupported base model"):
453
- modal_app_module._engine_cls_for("Qwen/Qwen3.8-27B")
450
+ def test_27b_routes_to_h100(modal_app_module):
451
+ """The dense 27B runs its FP8 checkpoint on the H100 tier (8-seq -> (H100, 16))."""
452
+ by_key = modal_app_module.ENGINE_BY_KEY
453
+ assert gpu_for("Qwen/Qwen3.8-27B") == "H100"
454
+ assert modal_app_module._engine_cls_for("Qwen/Qwen3.8-27B") is by_key[("H100", 16)]
455
+ assert by_key[("H100", 16)].pinned_gpu == "H100"
454
456
 
455
457
 
456
458
  def test_35b_moe_routes_to_h200(modal_app_module):
@@ -796,14 +798,14 @@ def test_load_prequant_checkpoint_for_9b(modal_app_module, monkeypatch, tmp_path
796
798
  assert getattr(args, "max_num_batched_tokens", None) is None
797
799
 
798
800
 
799
- def test_qwen38_candidate_immutable_args_fail_closed_when_vllm_drops_revision_support():
801
+ def test_qwen38_immutable_args_fail_closed_when_vllm_drops_revision_support():
800
802
  from flash.serving.src.engine import boot
801
- from flash.serving.src.engine.model_config import _QWEN38_HOSTED_CANDIDATE
803
+ from flash.serving.src.engine.model_config import engine_overrides_for
802
804
 
803
805
  with pytest.raises(RuntimeError, match=r"cannot pin.*missing engine args"):
804
806
  boot._required_immutable_args(
805
807
  "Qwen/Qwen3.8-27B",
806
- _QWEN38_HOSTED_CANDIDATE["engine"],
808
+ engine_overrides_for("Qwen/Qwen3.8-27B"),
807
809
  {"model"},
808
810
  )
809
811
 
@@ -13,7 +13,7 @@ from flash.serving.src.engine.prequant_config import (
13
13
  )
14
14
 
15
15
  OWNED_9B = "Qwen/Qwen3.5-9B"
16
- PENDING_27B = "Qwen/Qwen3.8-27B"
16
+ DENSE_27B = "Qwen/Qwen3.8-27B"
17
17
  MOE_35B = "Qwen/Qwen3.6-35B-A3B"
18
18
 
19
19
 
@@ -21,20 +21,21 @@ def test_owned_fp8_contains_only_the_freesolo_9b_checkpoint() -> None:
21
21
  assert OWNED_FP8_MODEL_REPOS == {OWNED_9B: "Freesolo-Co/Qwen3.5-9B-FP8"}
22
22
 
23
23
 
24
- def test_official_fp8_contains_only_the_active_35b_moe_default() -> None:
24
+ def test_official_fp8_contains_the_active_27b_and_35b_moe_defaults() -> None:
25
25
  assert OFFICIAL_FP8_MODEL_REPOS == {
26
+ DENSE_27B: "Qwen/Qwen3.8-27B-FP8",
26
27
  MOE_35B: "Qwen/Qwen3.6-35B-A3B-FP8",
27
28
  }
28
- assert PENDING_27B not in FP8_SERVE_MODEL_REPOS
29
29
  assert set(FP8_SERVE_MODEL_REPOS) == set(base_models())
30
30
 
31
31
 
32
32
  def test_fp8_serve_model_for_resolves_every_active_base_without_translation() -> None:
33
33
  assert fp8_serve_model_for(OWNED_9B) == "Freesolo-Co/Qwen3.5-9B-FP8"
34
+ assert fp8_serve_model_for(DENSE_27B) == "Qwen/Qwen3.8-27B-FP8"
34
35
  assert fp8_serve_model_for(MOE_35B) == "Qwen/Qwen3.6-35B-A3B-FP8"
35
- for inactive in (PENDING_27B, "Qwen/Qwen3.6-27B"):
36
- with pytest.raises(ValueError, match="Allowed models"):
37
- fp8_serve_model_for(inactive)
36
+ # the retired 3.6-27B is a DIFFERENT model from the active 3.8-27B and stays unresolvable.
37
+ with pytest.raises(ValueError, match="Allowed models"):
38
+ fp8_serve_model_for("Qwen/Qwen3.6-27B")
38
39
 
39
40
 
40
41
  def test_fp8_serve_model_for_rejects_unknown_base() -> None:
@@ -34,6 +34,7 @@ from flash.serving.src.accounting.usage_outbox import (
34
34
  UsageEvent,
35
35
  UsageOutboxError,
36
36
  )
37
+ from flash.serving.src.engine.model_config import base_models
37
38
  from flash.serving.src.http.inference_routes import _discard_prepared_stream
38
39
  from flash.serving.src.http.router import AdapterRouter, build_serving_app
39
40
  from flash.serving.src.io.schemas import AdapterRecord
@@ -184,41 +185,30 @@ class _Store(OfflineUsageStore):
184
185
 
185
186
 
186
187
  def test_freesolo_prices_match_committed_catalog_fixed_point_contract() -> None:
188
+ # The charged per-token rate is the launch per-Mtok price divided by 1e6 with NO markup applied,
189
+ # so each value below is exactly its published rate shifted six places. Retired models are absent:
190
+ # the table is exactly the active hosted set.
187
191
  expected = {
188
- "Qwen/Qwen3.5-0.8B": {
189
- "prompt_token_usd": "0.000000012",
190
- "cached_prompt_token_usd": "0.0000000024",
191
- "completion_token_usd": "0.00000006",
192
- },
193
- "Qwen/Qwen3.5-2B": {
194
- "prompt_token_usd": "0.000000024",
195
- "cached_prompt_token_usd": "0.0000000048",
196
- "completion_token_usd": "0.00000012",
197
- },
198
- "Qwen/Qwen3.5-4B": {
199
- "prompt_token_usd": "0.000000036",
200
- "cached_prompt_token_usd": "0.0000000072",
201
- "completion_token_usd": "0.00000018",
202
- },
203
192
  "Qwen/Qwen3.5-9B": {
204
- "prompt_token_usd": "0.0000001368",
193
+ "prompt_token_usd": "0.000000095",
205
194
  "cached_prompt_token_usd": "0.0000000276",
206
- "completion_token_usd": "0.000000228",
195
+ "completion_token_usd": "0.0000001425",
207
196
  },
208
- "Qwen/Qwen3.6-27B": {
209
- "prompt_token_usd": "0.00000051048",
210
- "cached_prompt_token_usd": "0.000000168",
211
- "completion_token_usd": "0.000003666",
197
+ "Qwen/Qwen3.8-27B": {
198
+ "prompt_token_usd": "0.0000003325",
199
+ "cached_prompt_token_usd": "0.00000003325",
200
+ "completion_token_usd": "0.0000024225",
212
201
  },
213
202
  "Qwen/Qwen3.6-35B-A3B": {
214
- "prompt_token_usd": "0.0000002376",
215
- "cached_prompt_token_usd": "0.0000000792",
216
- "completion_token_usd": "0.000001518",
203
+ "prompt_token_usd": "0.000000095",
204
+ "cached_prompt_token_usd": "0.0000000475",
205
+ "completion_token_usd": "0.0000009025",
217
206
  },
218
207
  }
219
208
  decimal_string = re.compile(r"^(0|[1-9][0-9]*)(\.[0-9]+)?$")
220
209
 
221
210
  assert set(_FREESOLO_USD_PER_MTOK) == set(expected)
211
+ assert set(_FREESOLO_USD_PER_MTOK) == set(base_models())
222
212
  for model, snapshot in expected.items():
223
213
  actual = freesolo_price(model).snapshot
224
214
  assert actual == snapshot
@@ -124,6 +124,23 @@ def test_lora_engine_scales_to_zero_by_default(modal_app_module):
124
124
  assert modal_app_module.app.function.call_args.kwargs["min_containers"] == 1
125
125
 
126
126
 
127
+ def test_every_gpu_engine_is_capped_at_three_containers(modal_app_module):
128
+ # At most 3 GPUs per base model. `base_model` is a modal.parameter(), so Modal gives each distinct
129
+ # value its own container pool with its own autoscaling accounting -- the cap therefore binds PER
130
+ # MODEL, not across the catalog. Engines are tensor-parallel 1 on a single-card `gpu=` request, so
131
+ # one container is exactly one GPU. Asserted on the kwargs modal is actually CALLED with, because a
132
+ # ceiling that never reaches `app.cls` does not bound anything.
133
+ assert modal_app_module.MAX_CONTAINERS == 3
134
+
135
+ cls_calls = [call.kwargs for call in modal_app_module.app.cls.call_args_list]
136
+ assert len(cls_calls) == len(modal_app_module.ENGINE_BY_KEY)
137
+ assert all(kwargs["max_containers"] == 3 for kwargs in cls_calls)
138
+
139
+ # The cpu router is deliberately UNCAPPED: it is the front door that triggers cold engines, and
140
+ # capping it would throttle every model at once rather than bounding gpu spend per model.
141
+ assert "max_containers" not in modal_app_module.app.function.call_args.kwargs
142
+
143
+
127
144
  def test_scaledown_window_is_per_tier_and_cheaper_tiers_release_sooner(modal_app_module):
128
145
  # The whole point of the table: an idle container bills at the full gpu rate, so a cheap
129
146
  # fast-booting tier must not hold a card as long as the 35B's ~1010s-boot H200 does.
@@ -136,7 +136,7 @@ def test_public_rows_prune_unset_serving_capacity_fields():
136
136
  }
137
137
 
138
138
 
139
- def test_serving_repos_cover_public_catalog_without_hosted_activation() -> None:
139
+ def test_serving_repos_cover_public_catalog_and_hosted_activation() -> None:
140
140
  assert SERVING_MODEL_REPOS == {
141
141
  "Qwen/Qwen3.5-9B": "Freesolo-Co/Qwen3.5-9B-FP8",
142
142
  "Qwen/Qwen3.8-27B": "Qwen/Qwen3.8-27B-FP8",
@@ -145,7 +145,7 @@ def test_serving_repos_cover_public_catalog_without_hosted_activation() -> None:
145
145
  assert MODELS["Qwen/Qwen3.8-27B"].serving is not None
146
146
  from flash.serving.src.engine.model_config import SERVING_MODELS
147
147
 
148
- assert "Qwen/Qwen3.8-27B" not in {entry["base_model"] for entry in SERVING_MODELS}
148
+ assert "Qwen/Qwen3.8-27B" in {entry["base_model"] for entry in SERVING_MODELS}
149
149
 
150
150
 
151
151
  def test_qwen38_27b_fixture_binds_checkpoint_metadata() -> None:
@@ -245,9 +245,16 @@ def test_deploy_9b_dry_run_is_not_rejected():
245
245
  assert dep.to_dict()["state"] == "dry_run"
246
246
 
247
247
 
248
- def test_deploy_27b_rejects_before_rank_resolution_or_dry_run_success(monkeypatch):
248
+ def test_deploy_inactive_model_rejects_before_rank_resolution_or_dry_run_success(monkeypatch):
249
+ # The hosted-activation guard must fire FIRST: before rank validation and before any artifact is
250
+ # shaped, so an inactive model cannot reach a dry-run success or a paid path. Uses a model absent
251
+ # from the hosted catalog -- 27B is active, so it is no longer a witness for this rejection.
249
252
  import flash.serve.deployment.adapter_check as adapter_check
250
253
  import flash.serve.deployment.deploy as deploy
254
+ from flash.serving.src.engine.model_config import is_supported_base_model
255
+
256
+ inactive_model = "Qwen/Qwen3.5-99B"
257
+ assert not is_supported_base_model(inactive_model)
251
258
 
252
259
  monkeypatch.setattr(
253
260
  adapter_check,
@@ -262,15 +269,44 @@ def test_deploy_27b_rejects_before_rank_resolution_or_dry_run_success(monkeypatc
262
269
 
263
270
  with pytest.raises(ValueError, match="not active in hosted serving"):
264
271
  deploy.deploy_adapter(
265
- run_id="q27",
266
- model="Qwen/Qwen3.8-27B",
272
+ run_id="q99",
273
+ model=inactive_model,
267
274
  hf_repo="org/repo",
268
- adapter_prefix="sft/q27/seed0",
275
+ adapter_prefix="sft/q99/seed0",
269
276
  dry_run=True,
270
277
  lora_rank=64,
271
278
  )
272
279
 
273
280
 
281
+ def test_deploy_27b_is_active_and_reaches_rank_validation(monkeypatch):
282
+ # The complement of the guard test: 27B is now an ACTIVE hosted tier, so it must pass the
283
+ # activation gate and proceed into rank validation rather than being rejected up front.
284
+ import flash.serve.deployment.adapter_check as adapter_check
285
+ import flash.serve.deployment.deploy as deploy
286
+ from flash.serving.src.engine.model_config import is_supported_base_model
287
+
288
+ assert is_supported_base_model("Qwen/Qwen3.8-27B")
289
+
290
+ reached = []
291
+ monkeypatch.setattr(
292
+ adapter_check,
293
+ "validate_serving_lora_rank",
294
+ lambda *args, **kwargs: reached.append(args[0]),
295
+ )
296
+
297
+ dep = deploy.deploy_adapter(
298
+ run_id="q27",
299
+ model="Qwen/Qwen3.8-27B",
300
+ hf_repo="org/repo",
301
+ adapter_prefix="sft/q27/seed0",
302
+ dry_run=True,
303
+ lora_rank=64,
304
+ )
305
+
306
+ assert reached == ["Qwen/Qwen3.8-27B"]
307
+ assert dep.to_dict()["state"] == "dry_run"
308
+
309
+
274
310
  def test_deploy_rejects_lora_rank_above_serving_cap():
275
311
  from flash.core.catalog import serving_lora_rank_cap
276
312
  from flash.serve.deployment.deploy import deploy_adapter
@@ -1480,7 +1480,7 @@ wheels = [
1480
1480
 
1481
1481
  [[package]]
1482
1482
  name = "freesolo-flash"
1483
- version = "1.2.121"
1483
+ version = "1.2.122"
1484
1484
  source = { editable = "." }
1485
1485
 
1486
1486
  [package.optional-dependencies]